\r
LRESULT CALLBACK CPropertiesAdvanced::KeyboardProc(int code, WPARAM wParam, LPARAM lParam)\r
{\r
- if (code < 0 || code == HC_NOREMOVE) {\r
+ if (code < 0 || code == HC_NOREMOVE)\r
return ::CallNextHookEx(m_hKeyboardHook, code, wParam, lParam);\r
+ if (HIWORD(lParam) & KF_UP)\r
+ return TRUE;\r
+ const bool bExt = (HIWORD(lParam) & KF_EXTENDED) != 0;\r
+ switch (wParam) {\r
+ case VK_SHIFT:\r
+ wParam = (bExt) ? VK_RSHIFT : VK_LSHIFT;\r
+ break;\r
+ case VK_CONTROL:\r
+ wParam = (bExt) ? VK_RCONTROL : VK_LCONTROL;\r
+ break;\r
+ case VK_MENU:\r
+ wParam = (bExt) ? VK_RMENU : VK_LMENU;\r
+ break;\r
}\r
-\r
- if (lParam & BEING_RELEASED) { // Key Up\r
- } else { // Key Down\r
- switch (wParam) {\r
- case VK_CONTROL:\r
- if (lParam & EXTENDED_KEY) {\r
- wParam = VK_RCONTROL;\r
- } else {\r
- wParam = VK_LCONTROL;\r
- }\r
- break;\r
- case VK_MENU:\r
- if (lParam & EXTENDED_KEY) {\r
- wParam = VK_RMENU;\r
- } else {\r
- wParam = VK_LMENU;\r
- }\r
- break;\r
- case VK_SHIFT:\r
- if (lParam & EXTENDED_KEY) {\r
- wParam = VK_RSHIFT;\r
- } else {\r
- wParam = VK_LSHIFT;\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
- m_nAssignKey = wParam;\r
- SetNewKey();\r
- }\r
-\r
+ m_nAssignKey = wParam;\r
+ SetNewKey();\r
return TRUE;\r
}\r
\r
LRESULT CALLBACK CXkeymacsDll::KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)\r
{\r
const BYTE nOrigKey = static_cast<BYTE>(wParam);\r
- const bool bRelease = (lParam & BEING_RELEASED) != 0;\r
- const bool bExtended = (lParam & EXTENDED_KEY) != 0;\r
+ const bool bRelease = (HIWORD(lParam) & KF_UP) != 0;\r
+ const bool bExtended = (HIWORD(lParam) & KF_EXTENDED) != 0;\r
\r
static BOOL bLocked = FALSE;\r
static const BYTE RECURSIVE_KEY = 0x07;\r
return CallNextHookEx(NULL, nCode, wParam, lParam);\r
\r
// CUtils::Log(_T("nKey = %#x, ext = %d, rel = %d, pre = %d, %#hx, %#hx"), nOrigKey,\r
-// (lParam & EXTENDED_KEY) ? 1 : 0, (lParam & BEING_RELEASED) ? 1 : 0, (lParam & REPEATED_KEY) ? 1 : 0,\r
+// (HIWORD(lParam) & KF_EXTENDED) ? 1 : 0, (HIWORD(lParam) & KF_UP) ? 1 : 0, (HIWORD(lParam) & KF_REPEAT) ? 1 : 0,\r
// GetKeyState(nOrigKey), GetAsyncKeyState(nOrigKey));\r
\r
if (nOrigKey == RECURSIVE_KEY) {\r
\r
void CXkeymacsDll::SetModifierIcons()\r
{\r
-#define IconState(x) ((x) ? ON_ICON : OFF_ICON)\r
ICONMSG msg[6] = {\r
- {MX_ICON, IconState(CCommands::bM_x()), ""},\r
- {CX_ICON, IconState(CCommands::bC_x()), ""},\r
- {META_ICON, IconState(CCommands::bM_()), ""},\r
- {SHIFT_ICON, IconState(IsDown(VK_SHIFT, FALSE)), ""},\r
- {CTRL_ICON, IconState(IsControl()), ""},\r
- {ALT_ICON, IconState(IsDown(VK_MENU, FALSE)), ""}\r
+ {MX_ICON, CCommands::bM_x(), ""},\r
+ {CX_ICON, CCommands::bC_x(), ""},\r
+ {META_ICON, CCommands::bM_(), ""},\r
+ {SHIFT_ICON, IsDown(VK_SHIFT, FALSE), ""},\r
+ {CTRL_ICON, IsControl(), ""},\r
+ {ALT_ICON, IsDown(VK_MENU, FALSE), ""}\r
};\r
_tcscpy_s(msg[0].szTip, m_M_xTip);\r
SendIconMessage(msg, 6);\r
m_bRecordingMacro = FALSE;\r
while (!m_Macro.empty()) { // remove not released push\r
const KbdMacro& m = m_Macro.back();\r
- if (m.lParam & BEING_RELEASED)\r
+ if (HIWORD(m.lParam) & KF_UP)\r
break;\r
m_Macro.pop_back();\r
}\r
UINT before = GetModifierState(FALSE);\r
SetModifierState(0, before);\r
for (std::list<KbdMacro>::const_iterator m = m_Macro.begin(); m != m_Macro.end(); ++m)\r
- if (m->lParam & BEING_RELEASED)\r
+ if (HIWORD(m->lParam) & KF_UP)\r
ReleaseKey(static_cast<BYTE>(m->wParam));\r
else\r
DepressKey(static_cast<BYTE>(m->wParam), m->bOriginal);\r
#include <list>\r
#include "ClipboardSnap.h"\r
\r
-enum { MAX_APP = 64 };\r
-enum { NONE = 0x0, SHIFT = 0x1, CONTROL = 0x2, META = 0x4, CONTROLX = 0x8,\r
- MAX_COMMAND_TYPE = NONE + SHIFT + CONTROL + META + CONTROLX + 1 };\r
-enum { /* WIN_SHIFT = 0x100, */ WIN_CTRL = 0x200, WIN_ALT = 0x400, WIN_WIN = 0x800 };\r
-enum { MAX_KEY = 256 };\r
-enum { MAX_FUNCTION = 64 };\r
-enum { MAX_DEFINITION = 256 };\r
-\r
-enum { WINDOW_NAME_LENGTH = 128 };\r
-enum { CLASS_NAME_LENGTH = 128 };\r
-enum { SUB_KEY_NAME_LENGTH = 128 };\r
-enum { WINDOW_TEXT_LENGTH = 128 + 128 + 3};\r
+const int MAX_APP = 64;\r
+const int NONE = 0x0, SHIFT = 0x1, CONTROL = 0x2, META = 0x4, CONTROLX = 0x8,\r
+ MAX_COMMAND_TYPE = NONE + SHIFT + CONTROL + META + CONTROLX + 1;\r
+const int /* WIN_SHIFT = 0x100, */ WIN_CTRL = 0x200, WIN_ALT = 0x400, WIN_WIN = 0x800;\r
+const int MAX_KEY = 256;\r
+const int MAX_FUNCTION = 64;\r
+const int MAX_DEFINITION = 256;\r
+\r
+const int WINDOW_NAME_LENGTH = 128;\r
+const int CLASS_NAME_LENGTH = 128;\r
+const int SUB_KEY_NAME_LENGTH = 128;\r
+const int WINDOW_TEXT_LENGTH = WINDOW_NAME_LENGTH * 2 + 3;\r
\r
enum ICON_TYPE { MAIN_ICON, CX_ICON, MX_ICON, META_ICON, SHIFT_ICON, CTRL_ICON, ALT_ICON, MAX_ICON_TYPE };\r
enum XKEYMACS_STATUS { STATUS_ENABLE, STATUS_DISABLE_TMP, STATUS_DISABLE_WOCQ, STATUS_DISABLE, MAX_STATUS };\r
-enum { ON_ICON, OFF_ICON }; // alias of status\r
+enum { OFF_ICON, ON_ICON };\r
\r
enum GOTO { GOTO_DO_NOTHING, GOTO_HOOK, GOTO_RECURSIVE, GOTO_HOOKX, GOTO_HOOK0_9, CONTINUE };\r
enum SETTING_STYLE { SETTING_DEFAULT, SETTING_SPECIFIC, SETTING_DISABLE, SETTING_UNDEFINED };\r
\r
-enum { EXTENDED_KEY = 0x01000000 };\r
-enum { REPEATED_KEY = 0x40000000 };\r
-enum { BEING_RELEASED = 0x80000000 };\r
-\r
#include "ipc.h"\r
\r
struct KeyBind\r