OSDN Git Service

Rewrite code handling the keyboard macro.
[xkeymacs/xkeymacs.git] / xkeymacsdll / xkeymacsdll.h
index 8101c62..bd3d7a3 100644 (file)
@@ -50,13 +50,22 @@ struct KeyName
        LPCTSTR name;\r
 };\r
 \r
+struct KbdMacro\r
+{\r
+       int nCode;\r
+       WPARAM wParam;\r
+       LPARAM lParam;\r
+       BOOL bOriginal;\r
+};\r
+\r
+const DWORD HOOK_ALT_LATER = 0x10000;\r
+\r
 class AFX_EXT_CLASS CXkeymacsDll  \r
 {\r
 public:\r
        static BOOL SaveConfig();\r
        static BOOL LoadConfig();\r
        static void SetM_xTip(const TCHAR *const szPath);\r
-       static void SetHookAltRelease();\r
        static BOOL Get326Compatible();\r
        static void Set326Compatible(int nApplicationID, BOOL b326Compatible);\r
        static void SetCursorData(HCURSOR hEnable, HCURSOR hDisableTMP, HCURSOR hDisableWOCQ, HICON hDisable, BOOL bEnable);\r
@@ -72,39 +81,41 @@ public:
        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 ResetHooks();\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 DefiningMacro(BOOL bDefiningMacro);\r
+       static void StartRecordMacro();\r
+       static void EndRecordMacro();\r
        static void DepressKey(BYTE bVk, BOOL bOriginal = TRUE);\r
        static BOOL GetEnableCUA();\r
        static CClipboardSnap* GetKillRing(CClipboardSnap *pSnap, BOOL bForce = TRUE);\r
        static void IncreaseKillRingIndex(int nKillRing = 1);\r
+       static UINT GetModifierState(BOOL bPhysicalKey = TRUE);\r
+       static void SetModifierState(UINT before, UINT after);\r
        static BOOL IsDown(BYTE bVk, BOOL bPhysicalKey = TRUE);\r
        static void Kdu(BYTE bVk, DWORD n = 1, BOOL bOriginal = 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 void ToggleKeyboardHookState();\r
+       static void ShowKeyboardHookState();\r
        static BOOL SendIconMessage(ICONMSG *pMsg, DWORD num);\r
        CXkeymacsDll();\r
        virtual ~CXkeymacsDll();\r
 private:\r
-       static BOOL m_bHookAltRelease;\r
+       static DWORD m_nHookAltRelease;\r
        static TCHAR m_M_xTip[128];\r
        static void InvokeM_x(const TCHAR* const szPath);\r
+       static BOOL UpdateKeyboardState(BYTE bVK, BYTE bState);\r
        static void LogCallWndProcMessage(WPARAM wParam, LPARAM lParam);\r
        static void DoSetCursor();\r
        static HCURSOR m_hCurrentCursor;\r
@@ -115,11 +126,9 @@ private:
        static HHOOK m_hHookCallWndRet;\r
        static LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam);\r
        static BOOL IsMatchWindowText(CString szWindowText);\r
-       static BOOL m_bEnableKeyboardHook;\r
        static HHOOK m_hHookCallWnd;\r
        static HHOOK m_hHookGetMessage;\r
        static HHOOK m_hHookShell;\r
-       static BOOL DefiningMacro();\r
        static BOOL IsControl();\r
        static BOOL IsMeta();\r
        static void SetModifierIcons();\r
@@ -136,10 +145,11 @@ private:
        static BOOL IsDepressedShiftKeyOnly(BYTE nKey);\r
        static BOOL IsDepressedModifier(int Modifier(), BOOL bPhysicalKey = TRUE);\r
        static BOOL IsValidKey(BYTE bVk);\r
-       static CObList m_Macro;\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 CList<KbdMacro, KbdMacro&> m_Macro;\r
+       static BOOL m_bRecordingMacro;\r
+       static BOOL m_bDown[MAX_KEY];\r
+       static void SetOriginal(UINT nCommandType, BYTE bVk);\r
+       static int CheckOriginal(UINT nCommandType, BYTE bVk);\r
        static void InitKeyboardProc(BOOL bImeComposition);\r
        static int m_nApplicationID;\r
        static int m_nOriginal[MAX_COMMAND_TYPE][MAX_KEY];\r
@@ -153,4 +163,6 @@ private:
        static CONFIG m_Config;\r
 };\r
 \r
+extern UINT g_ImeManipulationMessage;\r
+\r
 #endif // !defined(AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_)\r