#pragma data_seg()\r
\r
AppConfig* CXkeymacsDll::m_CurrentConfig = NULL;\r
+BYTE (*CXkeymacsDll::m_CmdID)[MAX_KEY];\r
+char (*CXkeymacsDll::m_FuncID)[MAX_KEY];\r
HHOOK CXkeymacsDll::m_hHookCallWnd = NULL;\r
HHOOK CXkeymacsDll::m_hHookCallWndRet = NULL;\r
HHOOK CXkeymacsDll::m_hHookGetMessage = NULL;\r
!imeState && CUtils::IsDialog() && m_CurrentConfig->UseDialogSetting)\r
// Use Dialog Setting\r
m_CurrentConfig = GetAppConfig(_T("Dialog"), m_CurrentConfig);\r
+ m_CmdID = m_CurrentConfig->CmdID;\r
+ m_FuncID = m_CurrentConfig->FuncID;\r
\r
IconMsg msg[3] = {\r
{CX_ICON, OFF_ICON, ""},\r
break;\r
}\r
\r
-#define fCommand(nType) (CmdTable::Command(m_CurrentConfig->CmdID[(nType)][nKey]))\r
-#define FuncID (m_CurrentConfig->FuncID[nType][nKey])\r
-\r
if (bRelease) {\r
switch (nOrigKey) {\r
case VK_MENU:\r
case VK_RWIN:\r
case VK_APPS:\r
for (int i = 0; i < MAX_COMMAND_TYPE; ++i) {\r
- int (*fCommand)() = fCommand(i);\r
+ int (*fCommand)() = CmdTable::Command(m_CmdID[i][nKey]);\r
if (fCommand && !(nOrigKey == VK_MENU && fCommand == CCommands::MetaAlt))\r
goto HOOK;\r
}\r
// set command type\r
int nType = IsDown(VK_SHIFT) * SHIFT | IsControl() * CONTROL | IsMeta() * META | CCommands::bC_x() * CONTROLX;\r
// Ignore undefined C-x ?\r
- if (nType & CONTROLX && fCommand(nType) == NULL && FuncID < 0) {\r
+ if (nType & CONTROLX && m_CmdID[nType][nKey] == 0 && m_FuncID[nType][nKey] < 0) {\r
if (m_CurrentConfig->IgnoreUndefC_x) {\r
CCommands::Reset(GOTO_HOOK);\r
goto HOOK;\r
}\r
// Ignore undefined Meta Ctrl+?\r
if (CCommands::bM_() && nType & CONTROL) {\r
- if (fCommand(nType) == NULL && FuncID < 0) {\r
+ if (m_CmdID[nType][nKey] == 0 && m_FuncID[nType][nKey] < 0) {\r
if (m_CurrentConfig->IgnoreUndefMetaCtrl) {\r
if (CheckOriginal(CONTROL, nKey))\r
goto DO_NOTHING;\r
if (CheckOriginal(nVirtualType, nOrigKey))\r
goto DO_NOTHING;\r
\r
- int (*fCommand)() = fCommand(nType);\r
+ int (*fCommand)() = CmdTable::Command(m_CmdID[nType][nKey]);\r
if (fCommand == CCommands::EnableOrDisableXKeymacs) {\r
ToggleKeyboardHookState();\r
goto HOOK;\r
}\r
\r
#define OneShotModifier(type, vk, mod) \\r
- if (fCommand(nType & ~type) == CCommands::OneShotModifier ## mod || \\r
- fCommand(nType) == CCommands::OneShotModifier ## mod ## Repeat) { \\r
+ if (CmdTable::Command(m_CmdID[nType & ~type][nKey]) == CCommands::OneShotModifier ## mod || \\r
+ CmdTable::Command(m_CmdID[nType][nKey]) == CCommands::OneShotModifier ## mod ## Repeat) { \\r
nOneShotModifier[nKey] = vk; \\r
DepressKey(vk); \\r
bCherryOneShotModifier = TRUE; \\r
goto HOOK; \\r
- } else if (fCommand(nType & ~CONTROL) == CCommands::OneShotModifier ## mod ## Repeat) { \\r
+ } else if (CmdTable::Command(m_CmdID[nType & ~CONTROL][nKey]) == CCommands::OneShotModifier ## mod ## Repeat) { \\r
ReleaseKey(vk); \\r
bCherryOneShotModifier = FALSE; \\r
Kdu(nKey); \\r
if (i == MAX_KEY)\r
bCherryOneShotModifier = FALSE;\r
\r
- if (0 <= FuncID && FuncID < MAX_FUNCTION && m_Config.FuncDef[FuncID][0]) {\r
- CallFunction(FuncID);\r
+ int id = m_FuncID[nType][nKey];\r
+ if (0 <= id && id < MAX_FUNCTION && m_Config.FuncDefs[id][0]) {\r
+ CallFunction(id);\r
CCommands::Reset(GOTO_HOOK);\r
goto HOOK;\r
}\r
-#undef fCommand\r
-#undef FuncID\r
\r
if (!fCommand) {\r
if (nOrigKey == VK_CONTROL || nOrigKey == VK_MENU || nOrigKey == VK_SHIFT)\r
int CXkeymacsDll::IsPassThrough(BYTE nKey)\r
{\r
BYTE bVk = 0;\r
- const BYTE *pnID = m_CurrentConfig->CmdID[NONE]; \r
+ const BYTE *pnID = m_CmdID[NONE]; \r
do {\r
if (IsDown(bVk) && CmdTable::Command(pnID[bVk]) == CCommands::PassThrough) {\r
if (bVk == nKey)\r
BOOL CXkeymacsDll::IsDepressedModifier(int (__cdecl *Modifier)(void), BOOL bPhysicalKey)\r
{\r
BYTE bVk = 0;\r
- const BYTE *pnID = m_CurrentConfig->CmdID[NONE];\r
+ const BYTE *pnID = m_CmdID[NONE];\r
do {\r
switch (bVk) {\r
case VK_SHIFT:\r
}\r
\r
// call an original command which is defined in dot.xkeymacs\r
-void CXkeymacsDll::CallFunction(int FuncID)\r
+void CXkeymacsDll::CallFunction(int id)\r
{\r
- if (FuncID < 0 || FuncID >= MAX_FUNCTION)\r
+ if (id < 0 || id >= MAX_FUNCTION)\r
return;\r
- LPCTSTR def = m_Config.FuncDef[FuncID];\r
+ LPCTSTR def = m_Config.FuncDefs[id];\r
if (!def[0])\r
return;\r
std::vector<KeyBind> keybinds;\r
for (std::vector<KeyBind>::const_iterator p = keybinds.begin(); p != keybinds.end(); ++p) {\r
int nType = p->nType;\r
BYTE bVk = p->bVk;\r
- int (*fCommand)() = nType < MAX_COMMAND_TYPE ? CmdTable::Command(m_CurrentConfig->CmdID[nType][bVk]) : NULL;\r
+ int (*fCommand)() = nType < MAX_COMMAND_TYPE ? CmdTable::Command(m_CmdID[nType][bVk]) : NULL;\r
if (fCommand) {\r
if (fCommand == CCommands::ExecuteExtendedCommand)\r
bM_x = TRUE;\r