From b941024d54215ca4e3290b06f29ac30e0a08bf14 Mon Sep 17 00:00:00 2001 From: Victor Homyakov Date: Wed, 22 Oct 2014 20:49:44 +0300 Subject: [PATCH] Version 0.7 --- README.md | 9 ++- dist/{recaps.exe => recaps-0.6.exe} | Bin dist/recaps-0.7.exe | Bin 0 -> 67584 bytes recaps.cpp | 96 ++++++++++++++++++++++------ 4 files changed, 82 insertions(+), 23 deletions(-) rename dist/{recaps.exe => recaps-0.6.exe} (100%) create mode 100644 dist/recaps-0.7.exe diff --git a/README.md b/README.md index 30fafd1..379b220 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -Recaps 0.6 +Recaps 0.7 ------------------------------------ -This simple program allows you to switch between languages using the mostly-unused CapsLock key instead of the clumsy Alt+Shift combination. +This simple program allows you to switch between languages using the mostly-unused CapsLock key. Just press CapsLock and the language will change. You can use Alt-CapsLock if you still need the old CapsLock action - to write a lot of text in capital letters. @@ -9,6 +9,9 @@ If you accidentally typed some text in the wrong layout, Ctrl-Capslock should fi If you have more than two languages installed, you can select the ones you want to cycle through if you right click the application's icon. +Also it improves language switching using Alt-Shift combination: LeftAlt-LeftShift will always switch to the first language installed, +while RightAlt-RightShift will always switch to the second. + Enjoy! Eli Golovinsky @@ -17,6 +20,8 @@ http://www.gooli.org/ Revision history ------------------------------------ +0.7 Added LeftAlt-LeftShift and RightAlt-RightShift combinations. + 0.6 Added conversion of text typed with the wrong layout using Ctrl-CapsLock. Alt-CapsLock now changes the old CapsLock mode. diff --git a/dist/recaps.exe b/dist/recaps-0.6.exe similarity index 100% rename from dist/recaps.exe rename to dist/recaps-0.6.exe diff --git a/dist/recaps-0.7.exe b/dist/recaps-0.7.exe new file mode 100644 index 0000000000000000000000000000000000000000..02fe338027d076632b6f6d1f5e829bf7a3fbd697 GIT binary patch literal 67584 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 & LLKHF_INJECTED) == 0) { - BOOL caps = wParam == WM_KEYDOWN && data->vkCode == VK_CAPITAL; - if (caps) { - if (IsKeyPressed(VK_CONTROL)) { - // Handle Ctrl-CapsLock - switch current layout and convert text in current field - // We start SwitchLayoutAndConvertSelected in another thread since it simulates - // keystrokes to copy and paste the teset which call back into this hook. - // That isn't good. - _beginthread(SwitchAndConvert, 0, NULL); - } else { - // Handle CapsLock - only switch current layout - SwitchLayout(); + //WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN WM_SYSKEYUP + if (wParam == WM_KEYDOWN) { + switch (data->vkCode) { + case VK_CAPITAL: + if (IsKeyPressed(VK_CONTROL)) { + // Handle Ctrl-CapsLock - switch current layout and convert text in current field + // We start SwitchLayoutAndConvertSelected in another thread since it simulates + // keystrokes to copy and paste the teset which call back into this hook. + // That isn't good. + _beginthread(SwitchAndConvert, 0, NULL); + } else { + // Handle CapsLock - only switch current layout + SwitchLayout(); + } + return 1; // prevent windows from handling the keystroke + default: + break; } - return 1; // prevent windows from handling the keystroke - } + } else if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) { + //PrintDebugString("WM_KEYUP vkCode %d lmenu %d lshift %d ctrl %d", data->vkCode, IsKeyPressed(VK_LMENU), IsKeyPressed(VK_LSHIFT), IsKeyPressed(VK_CONTROL)); + switch (data->vkCode) { + case VK_LMENU: + case VK_LSHIFT: + if (IsKeyPressed(VK_LMENU) && IsKeyPressed(VK_LSHIFT) && !IsKeyPressed(VK_CONTROL)) { + SwitchToLayoutNumber(0); + } + break; + case VK_RMENU: + case VK_RSHIFT: + if (IsKeyPressed(VK_RMENU) && IsKeyPressed(VK_RSHIFT) && !IsKeyPressed(VK_CONTROL)) { + SwitchToLayoutNumber(1); + } + break; + default: + break; + } + } } return CallNextHookEx(g_hHook, nCode, wParam, lParam);