From 07f2c9d020c10b535d2d545e53727a2dc982cdc3 Mon Sep 17 00:00:00 2001 From: Bottersnike Date: Fri, 14 Jul 2023 20:31:38 +0100 Subject: [PATCH] Rebindable aime keys --- src/micetools/dll/devices/ser_tn32msec.c | 2 +- .../dll/drivers/jvs_boards/jvs_837_14895.c | 2 +- src/micetools/dll/gui/gui.c | 145 ++++++++++++------ src/micetools/dll/util/misc.c | 2 +- src/micetools/lib/mice/config.def | 2 + src/micetools/lib/util/pid.c | 2 +- 6 files changed, 107 insertions(+), 48 deletions(-) diff --git a/src/micetools/dll/devices/ser_tn32msec.c b/src/micetools/dll/devices/ser_tn32msec.c index 5360074..74664c0 100644 --- a/src/micetools/dll/devices/ser_tn32msec.c +++ b/src/micetools/dll/devices/ser_tn32msec.c @@ -246,7 +246,7 @@ static void nfc_poll(com_device_t* dev, comio_recv_head_t* req) { PNFC_CARD lpCard = p1 ? &nfcCardReaderP1 : &nfcCardReaderP2; - SHORT key = GetAsyncKeyState(p1 ? 'P' : 'L'); + SHORT key = GetAsyncKeyState(p1 ? MiceConfig.keys.card_p1 : MiceConfig.keys.card_p2); if (key < 0) { LPCSTR cardId = GetCardIdentifier(p1 ? 0 : 1); BYTE nCardBytes = TN32PopulateCard(lpCard, cardId); diff --git a/src/micetools/dll/drivers/jvs_boards/jvs_837_14895.c b/src/micetools/dll/drivers/jvs_boards/jvs_837_14895.c index 370d286..7d73d18 100644 --- a/src/micetools/dll/drivers/jvs_boards/jvs_837_14895.c +++ b/src/micetools/dll/drivers/jvs_boards/jvs_837_14895.c @@ -91,7 +91,7 @@ static JVS_STATUS Transact(PMICE_JVS this, BYTE command) { if (MiceInputGetButtonState(&(this->m_Bindings[1]))) this->m_CoinCounts[1]++; for (unsigned char slot = 0; slot < coin_count; slot++) { - MiceJvsWrite(this, this->m_CoinCounts[slot] >> 8); + MiceJvsWrite(this, (this->m_CoinCounts[slot] >> 8) & 0xff); MiceJvsWrite(this, this->m_CoinCounts[slot] & 0xff); } return JVS_STATUS_OK; diff --git a/src/micetools/dll/gui/gui.c b/src/micetools/dll/gui/gui.c index 4254fbd..15a4062 100644 --- a/src/micetools/dll/gui/gui.c +++ b/src/micetools/dll/gui/gui.c @@ -893,56 +893,113 @@ void tab_system_buttons() { igNextColumn(); igSeparator(); - igTextUnformatted("System Test", NULL); - igNextColumn(); - if (MiceConfig.keys.test == 0) { - igTextColored(DISABLED_COL, "None"); - } else { - GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.test, MAPVK_VK_TO_VSC) << 16, keyName, - _countof(keyName)); - igTextUnformatted(keyName, NULL); - } - igNextColumn(); - if (igButton("Bind##BindTest", vec0)) igOpenPopup_Str("BindSysTest", ImGuiPopupFlags_None); - if (MiceConfig.keys.test) { - igSameLine(0, -1); - if (igButton("Clear##ClearTest", vec0)) { - MiceConfig.keys.test = 0; - save_current_config(false); + { + igTextUnformatted("System Test", NULL); + igNextColumn(); + if (MiceConfig.keys.test == 0) { + igTextColored(DISABLED_COL, "None"); + } else { + GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.test, MAPVK_VK_TO_VSC) << 16, keyName, + _countof(keyName)); + igTextUnformatted(keyName, NULL); } - } - igNextColumn(); - if (igKeyBindPopup("BindSysTest", &boundKey)) - if (boundKey != -1) { - MiceConfig.keys.test = boundKey; - save_current_config(false); + igNextColumn(); + if (igButton("Bind##BindTest", vec0)) igOpenPopup_Str("BindSysTest", ImGuiPopupFlags_None); + if (MiceConfig.keys.test) { + igSameLine(0, -1); + if (igButton("Clear##ClearTest", vec0)) { + MiceConfig.keys.test = 0; + save_current_config(false); + } } - - igTextUnformatted("System Service", NULL); - igNextColumn(); - if (MiceConfig.keys.service == 0) { - igTextColored(DISABLED_COL, "None"); - } else { - GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.service, MAPVK_VK_TO_VSC) << 16, keyName, - _countof(keyName)); - igTextUnformatted(keyName, NULL); + igNextColumn(); + if (igKeyBindPopup("BindSysTest", &boundKey)) + if (boundKey != -1) { + MiceConfig.keys.test = boundKey; + save_current_config(false); + } } - igNextColumn(); - if (igButton("Bind##BindService", vec0)) - igOpenPopup_Str("BindSysService", ImGuiPopupFlags_None); - if (MiceConfig.keys.service) { - igSameLine(0, -1); - if (igButton("Clear##ClearService", vec0)) { - MiceConfig.keys.service = 0; - save_current_config(false); + { + igTextUnformatted("System Service", NULL); + igNextColumn(); + if (MiceConfig.keys.service == 0) { + igTextColored(DISABLED_COL, "None"); + } else { + GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.service, MAPVK_VK_TO_VSC) << 16, keyName, + _countof(keyName)); + igTextUnformatted(keyName, NULL); } + igNextColumn(); + if (igButton("Bind##BindService", vec0)) + igOpenPopup_Str("BindSysService", ImGuiPopupFlags_None); + if (MiceConfig.keys.service) { + igSameLine(0, -1); + if (igButton("Clear##ClearService", vec0)) { + MiceConfig.keys.service = 0; + save_current_config(false); + } + } + igNextColumn(); + if (igKeyBindPopup("BindSysService", &boundKey)) + if (boundKey != -1) { + MiceConfig.keys.service = boundKey; + save_current_config(false); + } } - igNextColumn(); - if (igKeyBindPopup("BindSysService", &boundKey)) - if (boundKey != -1) { - MiceConfig.keys.service = boundKey; - save_current_config(false); + { + igTextUnformatted("Insert card 1P", NULL); + igNextColumn(); + if (MiceConfig.keys.card_p1 == 0) { + igTextColored(DISABLED_COL, "None"); + } else { + GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.card_p1, MAPVK_VK_TO_VSC) << 16, keyName, + _countof(keyName)); + igTextUnformatted(keyName, NULL); } + igNextColumn(); + if (igButton("Bind##Bind1P", vec0)) + igOpenPopup_Str("BindSys1P", ImGuiPopupFlags_None); + if (MiceConfig.keys.card_p1) { + igSameLine(0, -1); + if (igButton("Clear##Clear1P", vec0)) { + MiceConfig.keys.card_p1 = 0; + save_current_config(false); + } + } + igNextColumn(); + if (igKeyBindPopup("BindSys1P", &boundKey)) + if (boundKey != -1) { + MiceConfig.keys.card_p1 = boundKey; + save_current_config(false); + } + } + { + igTextUnformatted("Insert card 2P", NULL); + igNextColumn(); + if (MiceConfig.keys.card_p2 == 0) { + igTextColored(DISABLED_COL, "None"); + } else { + GetKeyNameTextA(MapVirtualKey(MiceConfig.keys.card_p2, MAPVK_VK_TO_VSC) << 16, keyName, + _countof(keyName)); + igTextUnformatted(keyName, NULL); + } + igNextColumn(); + if (igButton("Bind##Bind2P", vec0)) + igOpenPopup_Str("BindSys2P", ImGuiPopupFlags_None); + if (MiceConfig.keys.card_p2) { + igSameLine(0, -1); + if (igButton("Clear##Clear2P", vec0)) { + MiceConfig.keys.card_p2 = 0; + save_current_config(false); + } + } + igNextColumn(); + if (igKeyBindPopup("BindSys2P", &boundKey)) + if (boundKey != -1) { + MiceConfig.keys.card_p2 = boundKey; + save_current_config(false); + } + } } void tab_main_keybinds() { diff --git a/src/micetools/dll/util/misc.c b/src/micetools/dll/util/misc.c index 205c18a..6a2db10 100644 --- a/src/micetools/dll/util/misc.c +++ b/src/micetools/dll/util/misc.c @@ -84,7 +84,7 @@ void SetDataForHandle(HANDLE hObject, PVOID pData, BOOL isHeap) { }; MiceDAGrowAndSet(g_handleData, dwIndex, &newHandleData); } -BOOL RemoveDataForHandle(HANDLE hObject, DWORD type) { +BOOL RemoveDataForHandle(HANDLE hObject) { if (hObject == INVALID_HANDLE_VALUE) return FALSE; if (!hObject & MICE_HANDLE_MASK) return FALSE; DWORD_PTR dwIndex = (DWORD_PTR)hObject >> 2; diff --git a/src/micetools/lib/mice/config.def b/src/micetools/lib/mice/config.def index cd106aa..6fe5755 100644 --- a/src/micetools/lib/mice/config.def +++ b/src/micetools/lib/mice/config.def @@ -107,6 +107,8 @@ ENDSECTION(hooks) SECTION(keys, "Raw keybinding data. Edit this using the built in binding tool!") CFG_int(keys, test, 0, "") CFG_int(keys, service, 0, "") +CFG_int(keys, card_p1, 13, "") +CFG_int(keys, card_p2, 32, "") ENDSECTION(keys) SECTION(devices, "Register attached hardware devices. COM4 is reserved for JVS.") diff --git a/src/micetools/lib/util/pid.c b/src/micetools/lib/util/pid.c index b247d1a..1256695 100644 --- a/src/micetools/lib/util/pid.c +++ b/src/micetools/lib/util/pid.c @@ -32,7 +32,7 @@ DWORD GetOutermostMiceId(void) { CHAR baseName[MAX_PATH + 1]; if (GetModuleFileNameEx(hProcess, NULL, baseName, sizeof baseName)) { // TODO: Better - if (stricmp(PathFindFileNameA(baseName), MICEEXE) == 0) + if (_stricmp(PathFindFileNameA(baseName), MICEEXE) == 0) return pid; } CloseHandle(hProcess);