ekt: Fix bindings and trackball speed/range

This commit is contained in:
2025-09-02 16:23:48 +02:00
parent 873ae0a30a
commit 837b0663aa
9 changed files with 50 additions and 49 deletions

View File

@ -171,4 +171,4 @@ trackball_up=0x26
trackball_right=0x27
trackball_down=0x28
trackball_left=0x25
speed=1
speed_modifier=10

View File

@ -10,7 +10,7 @@ struct ekt_dll {
HRESULT (*poll)(void);
void (*get_opbtns)(uint8_t *opbtn);
void (*get_gamebtns)(uint32_t *gamebtn);
void (*get_trackball_position)(uint8_t *x, uint8_t *y);
void (*get_trackball_position)(uint16_t *x, uint16_t *y);
HRESULT (*led_init)(void);
void (*led_set_leds)(uint8_t board, uint8_t *rgb);
};

View File

@ -40,7 +40,8 @@ HRESULT ekt_io4_hook_init(const struct io4_config *cfg, bool is_terminal)
static HRESULT ekt_io4_poll(void *ctx, struct io4_state *state)
{
uint8_t opbtn, x, y;
uint8_t opbtn;
uint16_t x, y;
uint32_t gamebtn;
HRESULT hr;

View File

@ -6,5 +6,5 @@
struct ekt_io_backend {
void (*get_gamebtns)(uint32_t *gamebtn);
void (*get_trackball)(uint8_t *x, uint8_t *y);
void (*get_trackball)(uint16_t *x, uint16_t *y);
};

View File

@ -13,43 +13,43 @@ void ekt_kb_config_load(
struct ekt_kb_config *cfg,
const wchar_t *filename) {
cfg->vk_menu = GetPrivateProfileIntW(L"io4", L"menu", 'A', filename);
cfg->vk_start = GetPrivateProfileIntW(L"io4", L"start", 'S', filename);
cfg->vk_stratagem = GetPrivateProfileIntW(L"io4", L"stratagem", 'D', filename);
cfg->vk_stratagem_lock = GetPrivateProfileIntW(L"io4", L"stratagem_lock", 'F', filename);
cfg->vk_hougu = GetPrivateProfileIntW(L"io4", L"hougu", 'G', filename);
cfg->vk_ryuuha = GetPrivateProfileIntW(L"io4", L"ryuuha", 'H', filename);
cfg->vk_menu = GetPrivateProfileIntW(L"keyboard", L"menu", 'A', filename);
cfg->vk_start = GetPrivateProfileIntW(L"keyboard", L"start", 'S', filename);
cfg->vk_stratagem = GetPrivateProfileIntW(L"keyboard", L"stratagem", 'D', filename);
cfg->vk_stratagem_lock = GetPrivateProfileIntW(L"keyboard", L"stratagem_lock", 'F', filename);
cfg->vk_hougu = GetPrivateProfileIntW(L"keyboard", L"hougu", 'G', filename);
cfg->vk_ryuuha = GetPrivateProfileIntW(L"keyboard", L"ryuuha", 'H', filename);
cfg->vk_tenkey_0 = GetPrivateProfileIntW(L"io4", L"tenkey_0", VK_NUMPAD0, filename);
cfg->vk_tenkey_1 = GetPrivateProfileIntW(L"io4", L"tenkey_1", VK_NUMPAD1, filename);
cfg->vk_tenkey_2 = GetPrivateProfileIntW(L"io4", L"tenkey_2", VK_NUMPAD2, filename);
cfg->vk_tenkey_3 = GetPrivateProfileIntW(L"io4", L"tenkey_3", VK_NUMPAD3, filename);
cfg->vk_tenkey_4 = GetPrivateProfileIntW(L"io4", L"tenkey_4", VK_NUMPAD4, filename);
cfg->vk_tenkey_5 = GetPrivateProfileIntW(L"io4", L"tenkey_5", VK_NUMPAD5, filename);
cfg->vk_tenkey_6 = GetPrivateProfileIntW(L"io4", L"tenkey_6", VK_NUMPAD6, filename);
cfg->vk_tenkey_7 = GetPrivateProfileIntW(L"io4", L"tenkey_7", VK_NUMPAD7, filename);
cfg->vk_tenkey_8 = GetPrivateProfileIntW(L"io4", L"tenkey_8", VK_NUMPAD8, filename);
cfg->vk_tenkey_9 = GetPrivateProfileIntW(L"io4", L"tenkey_9", VK_NUMPAD9, filename);
cfg->vk_tenkey_clear = GetPrivateProfileIntW(L"io4", L"tenkey_clear", VK_DECIMAL, filename);
cfg->vk_tenkey_enter = GetPrivateProfileIntW(L"io4", L"tenkey_enter", VK_RETURN, filename);
cfg->vk_tenkey_0 = GetPrivateProfileIntW(L"keyboard", L"tenkey_0", VK_NUMPAD0, filename);
cfg->vk_tenkey_1 = GetPrivateProfileIntW(L"keyboard", L"tenkey_1", VK_NUMPAD1, filename);
cfg->vk_tenkey_2 = GetPrivateProfileIntW(L"keyboard", L"tenkey_2", VK_NUMPAD2, filename);
cfg->vk_tenkey_3 = GetPrivateProfileIntW(L"keyboard", L"tenkey_3", VK_NUMPAD3, filename);
cfg->vk_tenkey_4 = GetPrivateProfileIntW(L"keyboard", L"tenkey_4", VK_NUMPAD4, filename);
cfg->vk_tenkey_5 = GetPrivateProfileIntW(L"keyboard", L"tenkey_5", VK_NUMPAD5, filename);
cfg->vk_tenkey_6 = GetPrivateProfileIntW(L"keyboard", L"tenkey_6", VK_NUMPAD6, filename);
cfg->vk_tenkey_7 = GetPrivateProfileIntW(L"keyboard", L"tenkey_7", VK_NUMPAD7, filename);
cfg->vk_tenkey_8 = GetPrivateProfileIntW(L"keyboard", L"tenkey_8", VK_NUMPAD8, filename);
cfg->vk_tenkey_9 = GetPrivateProfileIntW(L"keyboard", L"tenkey_9", VK_NUMPAD9, filename);
cfg->vk_tenkey_clear = GetPrivateProfileIntW(L"keyboard", L"tenkey_clear", VK_DECIMAL, filename);
cfg->vk_tenkey_enter = GetPrivateProfileIntW(L"keyboard", L"tenkey_enter", VK_RETURN, filename);
cfg->vk_vol_down = GetPrivateProfileIntW(L"io4", L"vol_down", VK_NEXT, filename);
cfg->vk_vol_up = GetPrivateProfileIntW(L"io4", L"vol_up", VK_PRIOR, filename);
cfg->vk_vol_down = GetPrivateProfileIntW(L"keyboard", L"vol_down", VK_NEXT, filename);
cfg->vk_vol_up = GetPrivateProfileIntW(L"keyboard", L"vol_up", VK_PRIOR, filename);
cfg->vk_terminal_decide = GetPrivateProfileIntW(L"io4", L"decide", 'A', filename);
cfg->vk_terminal_cancel = GetPrivateProfileIntW(L"io4", L"cancel", 'S', filename);
cfg->vk_terminal_up = GetPrivateProfileIntW(L"io4", L"up", VK_UP, filename);
cfg->vk_terminal_right = GetPrivateProfileIntW(L"io4", L"right", VK_RIGHT, filename);
cfg->vk_terminal_down = GetPrivateProfileIntW(L"io4", L"down", VK_DOWN, filename);
cfg->vk_terminal_left = GetPrivateProfileIntW(L"io4", L"left", VK_LEFT, filename);
cfg->vk_terminal_left_2 = GetPrivateProfileIntW(L"io4", L"left2", 'Q', filename);
cfg->vk_terminal_right_2 = GetPrivateProfileIntW(L"io4", L"right2", 'W', filename);
cfg->vk_terminal_decide = GetPrivateProfileIntW(L"keyboard", L"decide", 'A', filename);
cfg->vk_terminal_cancel = GetPrivateProfileIntW(L"keyboard", L"cancel", 'S', filename);
cfg->vk_terminal_up = GetPrivateProfileIntW(L"keyboard", L"up", VK_UP, filename);
cfg->vk_terminal_right = GetPrivateProfileIntW(L"keyboard", L"right", VK_RIGHT, filename);
cfg->vk_terminal_down = GetPrivateProfileIntW(L"keyboard", L"down", VK_DOWN, filename);
cfg->vk_terminal_left = GetPrivateProfileIntW(L"keyboard", L"left", VK_LEFT, filename);
cfg->vk_terminal_left_2 = GetPrivateProfileIntW(L"keyboard", L"left2", 'Q', filename);
cfg->vk_terminal_right_2 = GetPrivateProfileIntW(L"keyboard", L"right2", 'W', filename);
cfg->x_down = GetPrivateProfileIntW(L"io4", L"trackball_left", VK_LEFT, filename);
cfg->x_up = GetPrivateProfileIntW(L"io4", L"trackball_right", VK_RIGHT, filename);
cfg->y_down = GetPrivateProfileIntW(L"io4", L"trackball_up", VK_UP, filename);
cfg->y_up = GetPrivateProfileIntW(L"io4", L"trackball_down", VK_DOWN, filename);
cfg->speed = GetPrivateProfileIntW(L"io4", L"speed_modifier", 1, filename);
cfg->x_down = GetPrivateProfileIntW(L"keyboard", L"trackball_left", VK_LEFT, filename);
cfg->x_up = GetPrivateProfileIntW(L"keyboard", L"trackball_right", VK_RIGHT, filename);
cfg->y_down = GetPrivateProfileIntW(L"keyboard", L"trackball_up", VK_UP, filename);
cfg->y_up = GetPrivateProfileIntW(L"keyboard", L"trackball_down", VK_DOWN, filename);
cfg->speed = GetPrivateProfileIntW(L"keyboard", L"speed_modifier", 1, filename);
}
void ekt_io_config_load(
@ -59,14 +59,14 @@ void ekt_io_config_load(
assert(cfg != NULL);
assert(filename != NULL);
cfg->vk_test = GetPrivateProfileIntW(L"io4", L"test", '1', filename);
cfg->vk_service = GetPrivateProfileIntW(L"io4", L"service", '2', filename);
cfg->vk_coin = GetPrivateProfileIntW(L"io4", L"coin", '3', filename);
cfg->vk_sw1 = GetPrivateProfileIntW(L"io4", L"sw1", '4', filename);
cfg->vk_sw2 = GetPrivateProfileIntW(L"io4", L"sw2", '5', filename);
cfg->vk_test = GetPrivateProfileIntW(L"keyboard", L"test", '1', filename);
cfg->vk_service = GetPrivateProfileIntW(L"keyboard", L"service", '2', filename);
cfg->vk_coin = GetPrivateProfileIntW(L"keyboard", L"coin", '3', filename);
cfg->vk_sw1 = GetPrivateProfileIntW(L"keyboard", L"sw1", '4', filename);
cfg->vk_sw2 = GetPrivateProfileIntW(L"keyboard", L"sw2", '5', filename);
GetPrivateProfileStringW(
L"io4",
L"keyboard",
L"mode",
L"keyboard",
cfg->mode,

View File

@ -83,7 +83,7 @@ void ekt_io_get_gamebtns(uint32_t* btn) {
ekt_io_backend->get_gamebtns(btn);
}
void ekt_io_get_trackball_position(uint8_t* stick_x, uint8_t* stick_y) {
void ekt_io_get_trackball_position(uint16_t* stick_x, uint16_t* stick_y) {
assert(ekt_io_backend != NULL);
assert(stick_x != NULL);
assert(stick_y != NULL);

View File

@ -88,7 +88,7 @@ void ekt_io_get_gamebtns(uint32_t *gamebtn);
Minimum API version: 0x0100 */
void ekt_io_get_trackball_position(uint8_t *stick_x, uint8_t *stick_y);
void ekt_io_get_trackball_position(uint16_t *stick_x, uint16_t *stick_y);
/* Initialize LED emulation. This function will be called before any
other ekt_io_led_*() function calls.

View File

@ -13,15 +13,15 @@
#include "util/dprintf.h"
static void ekt_kb_get_gamebtns(uint32_t* gamebtn_out);
static void ekt_kb_get_trackball(uint8_t* x, uint8_t* y);
static void ekt_kb_get_trackball(uint16_t* x, uint16_t* y);
static const struct ekt_io_backend ekt_kb_backend = {
.get_gamebtns = ekt_kb_get_gamebtns,
.get_trackball = ekt_kb_get_trackball
};
static uint8_t current_x;
static uint8_t current_y;
static uint16_t current_x;
static uint16_t current_y;
static struct ekt_kb_config config;
@ -156,7 +156,7 @@ static void ekt_kb_get_gamebtns(uint32_t* gamebtn_out) {
*gamebtn_out = gamebtn;
}
static void ekt_kb_get_trackball(uint8_t* x, uint8_t* y) {
static void ekt_kb_get_trackball(uint16_t* x, uint16_t* y) {
assert(x != NULL);
assert(y != NULL);