enum { REPEATED_KEY = 0x40000000 };\r
enum { BEING_RELEASED = 0x80000000 };\r
\r
-typedef struct KeyBind\r
+#include "ipc.h"\r
+\r
+struct KeyBind\r
{\r
int nCommandType;\r
BYTE bVk;\r
int nControlID;\r
-} KeyBind_t;\r
-\r
-typedef struct KbdMacro\r
-{\r
- int nCode;\r
- WPARAM wParam;\r
- LPARAM lParam;\r
- BOOL bOriginal;\r
-} KbdMacro_t;\r
-\r
-typedef struct Modifier {\r
- LPCTSTR name;\r
- int id;\r
-} Modifier_t;\r
-\r
-static const Modifier_t Modifiers[] = {\r
-// { _T("A-"), ALT },\r
- { _T("C-"), CONTROL},\r
-// { _T("H-"), HYPER },\r
- { _T("M-"), META },\r
- { _T("S-"), SHIFT },\r
-// { _T("s-"), SUPER },\r
- { _T("Ctrl+"), WIN_CTRL },\r
- { _T("Alt+"), WIN_ALT },\r
- { _T("Win+"), WIN_WIN },\r
};\r
\r
-typedef struct KeyName\r
+struct KeyName\r
{\r
BYTE bVk;\r
LPCTSTR name;\r
-} KeyName_t;\r
-\r
-static const KeyName_t ControlCharacters[] = {\r
-// { VK_LBUTTON, _T("mouse-1") }, // does not work well\r
-// { VK_RBUTTON, _T("mouse-3") }, // does not work well\r
- { VK_CANCEL, _T("break") },\r
-// { VK_MBUTTON, _T("mouse-2") }, // does not work well\r
- { VK_BACK, _T("backspace") },\r
- { VK_TAB, _T("tab") },\r
- { VK_RETURN, _T("return") },\r
- { VK_CAPITAL, _T("capslock") },\r
- { VK_KANA, _T("kana") },\r
- { VK_KANJI, _T("kanji") },\r
- { VK_ESCAPE, _T("escape") },\r
- { VK_CONVERT, _T("convert") },\r
- { VK_NONCONVERT, _T("nonconvert") },\r
-// { VK_SPACE, _T("SPC") }, // [? ]\r
- { VK_PRIOR, _T("prior") },\r
- { VK_NEXT, _T("next") },\r
- { VK_END, _T("end") },\r
- { VK_HOME, _T("home") },\r
- { VK_LEFT, _T("left") },\r
- { VK_UP, _T("up") },\r
- { VK_RIGHT, _T("right") },\r
- { VK_DOWN, _T("down") },\r
- { VK_SELECT, _T("select") },\r
- { VK_PRINT, _T("print") },\r
- { VK_EXECUTE, _T("execute") },\r
- { VK_SNAPSHOT, _T("printscreen") }, // work as print\r
- { VK_INSERT, _T("insert") },\r
- { VK_DELETE, _T("delete") },\r
- { VK_LWIN, _T("lwindow") },\r
- { VK_RWIN, _T("rwindow") },\r
- { VK_APPS, _T("apps") },\r
- { VK_SLEEP, _T("sleep") },\r
- { VK_NUMPAD0, _T("kp-0") },\r
- { VK_NUMPAD1, _T("kp-1") },\r
- { VK_NUMPAD2, _T("kp-2") },\r
- { VK_NUMPAD3, _T("kp-3") },\r
- { VK_NUMPAD4, _T("kp-4") },\r
- { VK_NUMPAD5, _T("kp-5") },\r
- { VK_NUMPAD6, _T("kp-6") },\r
- { VK_NUMPAD7, _T("kp-7") },\r
- { VK_NUMPAD8, _T("kp-8") },\r
- { VK_NUMPAD9, _T("kp-9") },\r
- { VK_MULTIPLY, _T("kp-multiply") },\r
- { VK_ADD, _T("kp-add") },\r
- { VK_SUBTRACT, _T("kp-subtract") },\r
- { VK_DECIMAL, _T("kp-decimal") },\r
- { VK_DIVIDE, _T("kp-divide") },\r
-// { VK_F1, _T("f1") }, // FIXME\r
-// { VK_F2, _T("f2") }, // Move at the end of definition of funcgtion keys to keep away confliction f1/f2 and f1?/f2? by _tcsncmp() i.e. strncmp()\r
- { VK_F3, _T("f3") },\r
- { VK_F4, _T("f4") },\r
- { VK_F5, _T("f5") },\r
- { VK_F6, _T("f6") },\r
- { VK_F7, _T("f7") },\r
- { VK_F8, _T("f8") },\r
- { VK_F9, _T("f9") },\r
- { VK_F10, _T("f10") },\r
- { VK_F11, _T("f11") },\r
- { VK_F12, _T("f12") },\r
- { VK_F13, _T("f13") },\r
- { VK_F14, _T("f14") },\r
- { VK_F15, _T("f15") },\r
- { VK_F16, _T("f16") },\r
- { VK_F17, _T("f17") },\r
- { VK_F18, _T("f18") },\r
- { VK_F19, _T("f19") },\r
- { VK_F20, _T("f20") },\r
- { VK_F21, _T("f21") },\r
- { VK_F22, _T("f22") },\r
- { VK_F23, _T("f23") },\r
- { VK_F24, _T("f24") },\r
- { VK_F1, _T("f1") },\r
- { VK_F2, _T("f2") },\r
- { VK_NUMLOCK, _T("kp-numlock") },\r
- { VK_SCROLL, _T("scroll") },\r
- { 0xa6, _T("browser-back") }, // VK_BROWSER_BACK\r
- { 0xa7, _T("browser-forward") }, // VK_BROWSER_FORWARD\r
- { 0xa8, _T("browser-refresh") }, // VK_BROWSER_REFRESH\r
- { 0xa9, _T("browser-stop") }, // VK_BROWSER_STOP\r
- { 0xaa, _T("browser-search") }, // VK_BROWSER_SEARCH\r
- { 0xab, _T("browser-favorites") }, // VK_BROWSER_FAVORITES\r
- { 0xac, _T("browser-home") }, // VK_BROWSER_HOME\r
- { 0xad, _T("volume-mute") }, // VK_VOLUME_MUTE\r
- { 0xae, _T("volume-down") }, // VK_VOLUME_DOWN\r
- { 0xaf, _T("volume-up") }, // VK_VOLUME_UP\r
- { 0xb0, _T("media-next-track") }, // VK_MEDIA_NEXT_TRACK\r
- { 0xb1, _T("media-prev-track") }, // VK_MEDIA_PREV_TRACK\r
- { 0xb2, _T("media-stop") }, // VK_MEDIA_STOP\r
- { 0xb3, _T("media-play-pause") }, // VK_MEDIA_PLAY_PAUSE\r
- { 0xb4, _T("launch-mail") }, // VK_LAUNCH_MAIL\r
- { 0xb5, _T("launch-media-select") }, // VK_LAUNCH_MEDIA_SELECT\r
- { 0xb6, _T("launch-1") }, // VK_LAUNCH_APP1\r
- { 0xb7, _T("launch-2") }, // VK_LAUNCH_APP2\r
};\r
\r
class AFX_EXT_CLASS CXkeymacsDll \r
{\r
public:\r
- static void ModifyM_xTip(const TCHAR *const szPath);\r
+ static BOOL SaveConfig();\r
+ static BOOL LoadConfig();\r
+ static void SetM_xTip(const TCHAR *const szPath);\r
static BOOL Get326Compatible();\r
- void Set326Compatible(int nApplicationID, BOOL b326Compatible);\r
- void SetCursorData(HCURSOR hEnable, HCURSOR hDisableTMP, HCURSOR hDisableWOCQ, HICON hDisable, BOOL bEnable);\r
+ static void Set326Compatible(int nApplicationID, BOOL b326Compatible);\r
+ static void SetCursorData(HCURSOR hEnable, HCURSOR hDisableTMP, HCURSOR hDisableWOCQ, HICON hDisable, BOOL bEnable);\r
static unsigned int GetMaxKeyInterval(void);\r
static void SetKeyboardSpeed(int nKeyboardSpeed);\r
static int GetAccelerate(void);\r
static void SetAccelerate(int nAccelerate);\r
- void SetWindowText(int nApplicationID, CString szWindowText);\r
-// static int m_nPassThrough;\r
- void AddAllShell_NotifyIcon();\r
- void DeleteAllShell_NotifyIcon();\r
- void SetKillRingMax(int nApplicationID, int nKillRingMax);\r
- void CXkeymacsDll::EnableShell_NotifyIcon(ICON_TYPE icon, BOOL bEnable);\r
- void SetNotifyIconData(ICON_TYPE icon, NOTIFYICONDATA stNtfyIcon, HICON hEnable, HICON hDisableTMP, HICON hDisableWOCQ, HICON hDisable, BOOL bEnable);\r
- void SetNotifyIconData(ICON_TYPE icon, NOTIFYICONDATA stNtfyIcon, HICON hOn, HICON hOff, BOOL bEnable);\r
- void Clear(int nApplicationID);\r
- BOOL IsKeyboardHook();\r
- void SetCommandID(int nApplicationID, int nCommandType, int nKey, int nCommandID);\r
- void SetAtIbeamCursorOnly(int nApplicationID, int nCommandType, int nKey, BOOL bAtIbeamCursorOnly);\r
- void SetApplicationName(int nApplicationID, CString szApplicationName);\r
- static BOOL ReleaseKeyboardHook();\r
- void SetEnableCUA(int nApplicationID, BOOL bEnableCUA);\r
- void SetIgnoreUndefinedC_x(int nApplicationID, BOOL bIgnoreUndefinedC_x);\r
- void SetIgnoreUndefinedMetaCtrl(int nApplicationID, BOOL bIgnoreUndefinedMetaCtrl);\r
- static BOOL SetKeyboardHook();\r
- void SetSettingStyle(int nApplicationID, int nSettingStyle);\r
- void SetUseDialogSetting(int nApplicationID, BOOL bUseDialogSetting);\r
+ static void SetWindowText(int nApplicationID, CString szWindowText);\r
+ static void SetKillRingMax(int nApplicationID, int nKillRingMax);\r
+ static void Clear(int nApplicationID);\r
+ static BOOL IsKeyboardHook();\r
+ static void SetCommandID(int nApplicationID, int nCommandType, int nKey, int nCommandID);\r
+ static void SetAtIbeamCursorOnly(int nApplicationID, int nCommandType, int nKey, BOOL bAtIbeamCursorOnly);\r
+ static void SetApplicationName(int nApplicationID, CString szApplicationName);\r
+ static void ReleaseHooks();\r
+ static void ReleaseKeyboardHook();\r
+ static void SetEnableCUA(int nApplicationID, BOOL bEnableCUA);\r
+ static void SetIgnoreUndefinedC_x(int nApplicationID, BOOL bIgnoreUndefinedC_x);\r
+ static void SetIgnoreUndefinedMetaCtrl(int nApplicationID, BOOL bIgnoreUndefinedMetaCtrl);\r
+ static void SetHooks();\r
+ static void EnableKeyboardHook();\r
+ static void SetKeyboardHook();\r
+ static void SetSettingStyle(int nApplicationID, int nSettingStyle);\r
+ static void SetUseDialogSetting(int nApplicationID, BOOL bUseDialogSetting);\r
static void AddKillRing(BOOL bNewData = TRUE);\r
static void CallMacro();\r
static void ClearFunctionDefinition();\r
static void IncreaseKillRingIndex(int nKillRing = 1);\r
static BOOL IsDown(BYTE bVk, BOOL bPhysicalKey = TRUE);\r
static void Kdu(BYTE bVk, DWORD n = 1, BOOL bOriginal = TRUE);\r
- static int ModifyShell_NotifyIcon(ICON_TYPE icon, BOOL bNewStatus, BOOL bForce = TRUE);\r
static void ReleaseKey(BYTE bVk);\r
static void SetFunctionDefinition(int nFunctionID, CString szDefinition);\r
static void SetFunctionKey(int nFunctionID, int nApplicationID, int nCommandType, int nKey);\r
static void SetKeyboardHookFlag();\r
static void SetKeyboardHookFlag(BOOL bFlag);\r
+ static BOOL Is106Keyboard();\r
+ static void Set106Keyboard(BOOL b106Keyboard);\r
+ static BOOL SendIconMessage(ICONMSG *pMsg, DWORD num);\r
CXkeymacsDll();\r
virtual ~CXkeymacsDll();\r
private:\r
+ static TCHAR m_M_xTip[128];\r
static void InvokeM_x(const TCHAR* const szPath);\r
- static BOOL m_b326Compatible[MAX_APP];\r
static void LogCallWndProcMessage(WPARAM wParam, LPARAM lParam);\r
static void DoSetCursor();\r
static HCURSOR m_hCurrentCursor;\r
static HHOOK m_hHookCallWndRet;\r
static LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam);\r
static BOOL IsMatchWindowText(CString szWindowText);\r
- static TCHAR m_szWindowText[MAX_APP][WINDOW_TEXT_LENGTH];\r
- static HHOOK m_hHookKeyboard;\r
+ static BOOL m_bEnableKeyboardHook;\r
static HHOOK m_hHookCallWnd;\r
static HHOOK m_hHookGetMessage;\r
static HHOOK m_hHookShell;\r
- static void AddShell_NotifyIcon(ICON_TYPE icon);\r
- void DeleteShell_NotifyIcon(ICON_TYPE icon);\r
static BOOL DefiningMacro();\r
static BOOL IsControl();\r
static BOOL IsMeta();\r
+ static void SetModifierIcons();\r
static void DoKeybd_event(BYTE bVk, DWORD dwFlags);\r
static LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK ShellProc(int nCode, WPARAM wParam, LPARAM lParam);\r
- static KeyBind_t ParseKey(const int nFunctionID, unsigned int &i);\r
+ static KeyBind ParseKey(const int nFunctionID, unsigned int &i);\r
static BYTE a2v(TCHAR nAscii);\r
static BOOL IsShift(TCHAR nAscii);\r
- static TCHAR m_szFunctionDefinition[MAX_FUNCTION][MAX_DEFINITION];\r
static void CallFunction(int nFunctionID);\r
- static int m_nFunctionID[MAX_APP][MAX_COMMAND_TYPE][MAX_KEY];\r
- static BOOL m_bEnableCUA[MAX_APP];\r
- static TCHAR m_szOldApplicationName[MAX_PATH];\r
- static TCHAR m_szApplicationName[MAX_PATH];\r
static int IsPassThrough(BYTE nKey);\r
static BOOL IsDepressedShiftKeyOnly(BYTE nKey);\r
static BOOL IsDepressedModifier(int Modifier(), BOOL bPhysicalKey = TRUE);\r
static BOOL m_bDefiningMacro;\r
static void Original(int nCommandType, BYTE bVk, int nOriginal);\r
static int Original(int nCommandType, BYTE bVk);\r
- static HICON m_hIcon[MAX_ICON_TYPE][MAX_STATUS];\r
- static BOOL m_bUseDialogSetting[MAX_APP];\r
static void InitKeyboardProc(BOOL bImeComposition);\r
- static BOOL m_bIgnoreUndefinedC_x[MAX_APP];\r
- static BOOL m_bIgnoreUndefinedMetaCtrl[MAX_APP];\r
- static int m_nSettingStyle[MAX_APP];\r
static int m_nApplicationID;\r
static int m_nOriginal[MAX_COMMAND_TYPE][MAX_KEY];\r
static int m_nKillRing;\r
static CList<CClipboardSnap *, CClipboardSnap *> m_oKillRing;\r
- static int m_nKillRingMax[MAX_APP];\r
static int GetMickey(int nDifferential, int nThreshold1, int nThreshold2, int nAcceleration, int nSpeed);\r
- static BOOL DoShell_NotifyIcon(ICON_TYPE icon, DWORD dwMessage);\r
- static BOOL m_bIcon[MAX_ICON_TYPE];\r
- static DWORD m_dwOldMessage[MAX_ICON_TYPE];\r
- static NOTIFYICONDATA m_stNtfyIcon[MAX_ICON_TYPE];\r
- static NOTIFYICONDATA m_stOldNtfyIcon[MAX_ICON_TYPE];\r
static BOOL m_bHook;\r
static BOOL m_bRightShift;\r
static BOOL m_bRightAlt;\r
static BOOL m_bRightControl;\r
- static TCHAR m_szSpecialApp[MAX_APP][CLASS_NAME_LENGTH];\r
- static int m_nCommandID[MAX_APP][MAX_COMMAND_TYPE][MAX_KEY];\r
- static BOOL m_bAtIbeamCursorOnly[MAX_APP][MAX_COMMAND_TYPE][MAX_KEY];\r
-};\r
-\r
-\r
-class AFX_EXT_CLASS CXkeymacsData \r
-{\r
-public:\r
- void Set326Compatible(BOOL b326Compatible);\r
- BOOL Get326Compatible();\r
- int GetWindowTextType();\r
- void SetWindowTextType(int nWindowTextType);\r
- CString GetWindowText();\r
- void SetWindowText(LPCTSTR lpszWindowText);\r
- static BOOL Is106Keyboard();\r
- static void Set106Keyboard(BOOL b106Keyboard);\r
- static int GetToolTipID(int nCommandID);\r
- static int GetDescriptionID(int nCommandID);\r
- void SetUseDialogSetting(BOOL bUseDialogSetting);\r
- BOOL GetUseDialogSetting();\r
- BOOL GetEnableCUA();\r
- void SetEnableCUA(BOOL bEnableCUA);\r
- BOOL GetIgnoreUndefinedC_x();\r
- void SetIgnoreUndefinedC_x(BOOL bIgnoreUndefinedC_x);\r
- BOOL GetIgnoreUndefinedMetaCtrl();\r
- void SetIgnoreUndefinedMetaCtrl(BOOL bIgnoreUndefinedMetaCtrl);\r
- static int GetCategoryID(int nCommandID);\r
- void SetSettingStyle(int nSettingStyle);\r
- int GetSettingStyle();\r
- static int GetDefaultControlID(int nCommandID, int nIndex);\r
- static int GetDefaultCommandKey(int nCommandID, int nIndex);\r
- static int GetDefaultCommandType(int nCommandID, int nIndex);\r
- static CString GetCommandName(int nCommandID);\r
- void SetKillRingMax(int nKillRingMax);\r
- int GetKillRingMax();\r
- CString GetApplicationTitle();\r
- void SetApplicationTitle(LPCTSTR lpszApplicationTitle);\r
- void ClearAll();\r
- int GetCommandID(int nCommandType, int nKey);\r
- void SetCommandID(int nCommandType, int nKey, int nCommandID);\r
- BOOL GetAtIbeamCursorOnly(int nCommandType, int nKey);\r
- void SetAtIbeamCursorOnly(int nCommandType, int nKey, BOOL bAtIbeamCursorOnly);\r
- CString GetApplicationName();\r
- void SetApplicationName(LPCTSTR lpszApplicationName);\r
- CXkeymacsData();\r
- virtual ~CXkeymacsData();\r
-\r
-private:\r
- BOOL m_b326Compatible;\r
- int m_nWindowTextType;\r
- CString m_strWindowText;\r
- BOOL m_bEnableCUA;\r
- static BOOL m_b106Keyboard;\r
- BOOL m_bUseDialogSetting;\r
- BOOL m_bIgnoreUndefinedC_x;\r
- BOOL m_bIgnoreUndefinedMetaCtrl;\r
- int m_nSettingStyle;\r
- int m_nKillRingMax;\r
- CString m_strApplicationTitle;\r
- CString m_strApplicationName;\r
- int m_nCommandID[MAX_COMMAND_TYPE][MAX_KEY];\r
- BOOL m_bAtIbeamCursorOnly[MAX_COMMAND_TYPE][MAX_KEY];\r
+ static CONFIG m_Config;\r
};\r
\r
#endif // !defined(AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_)\r