1 // xkeymacs.h: interface for the CXkeymacsDll class.
\r
3 //////////////////////////////////////////////////////////////////////
\r
5 #if !defined(AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_)
\r
6 #define AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_
\r
10 #endif // _MSC_VER > 1000
\r
13 #include "ClipboardSnap.h"
\r
15 enum { MAX_APP = 64 };
\r
16 enum { NONE = 0x0, SHIFT = 0x1, CONTROL = 0x2, META = 0x4, CONTROLX = 0x8,
\r
17 MAX_COMMAND_TYPE = NONE + SHIFT + CONTROL + META + CONTROLX + 1 };
\r
18 enum { /* WIN_SHIFT = 0x100, */ WIN_CTRL = 0x200, WIN_ALT = 0x400, WIN_WIN = 0x800 };
\r
19 enum { MAX_KEY = 256 };
\r
20 enum { MAX_FUNCTION = 64 };
\r
21 enum { MAX_DEFINITION = 256 };
\r
23 enum { WINDOW_NAME_LENGTH = 128 };
\r
24 enum { CLASS_NAME_LENGTH = 128 };
\r
25 enum { SUB_KEY_NAME_LENGTH = 128 };
\r
26 enum { WINDOW_TEXT_LENGTH = 128 + 128 + 3};
\r
28 enum ICON_TYPE { MAIN_ICON, CX_ICON, MX_ICON, META_ICON, SHIFT_ICON, CTRL_ICON, ALT_ICON, MAX_ICON_TYPE };
\r
29 enum XKEYMACS_STATUS { STATUS_ENABLE, STATUS_DISABLE_TMP, STATUS_DISABLE_WOCQ, STATUS_DISABLE, MAX_STATUS };
\r
30 enum { ON_ICON, OFF_ICON }; // alias of status
\r
32 enum GOTO { GOTO_DO_NOTHING, GOTO_HOOK, GOTO_RECURSIVE, GOTO_HOOKX, GOTO_HOOK0_9, CONTINUE };
\r
33 enum SETTING_STYLE { SETTING_DEFAULT, SETTING_SPECIFIC, SETTING_DISABLE, SETTING_UNDEFINED };
\r
35 enum { EXTENDED_KEY = 0x01000000 };
\r
36 enum { REPEATED_KEY = 0x40000000 };
\r
37 enum { BEING_RELEASED = 0x80000000 };
\r
62 const DWORD HOOK_ALT_LATER = 0x10000;
\r
64 class AFX_EXT_CLASS CXkeymacsDll
\r
67 static BOOL SaveConfig();
\r
68 static BOOL LoadConfig();
\r
69 static void SetConfig(const CONFIG& config);
\r
70 static void SetM_xTip(const TCHAR *const szPath);
\r
71 static BOOL Get326Compatible();
\r
72 static void SetCursorData(HCURSOR hEnable, HCURSOR hDisableTMP, HCURSOR hDisableWOCQ, HICON hDisable, BOOL bEnable);
\r
73 static unsigned int GetMaxKeyInterval(void);
\r
74 static void SetKeyboardSpeed(int nKeyboardSpeed);
\r
75 static int GetAccelerate(void);
\r
76 static void SetAccelerate(int nAccelerate);
\r
77 static void Clear(int nAppID);
\r
78 static BOOL IsKeyboardHook();
\r
79 static void ReleaseHooks();
\r
80 static void ReleaseKeyboardHook();
\r
81 static void SetHooks();
\r
82 static void SetKeyboardHook();
\r
83 static void ResetHooks();
\r
84 static void AddKillRing(BOOL bNewData = TRUE);
\r
85 static void CallMacro();
\r
86 static void StartRecordMacro();
\r
87 static void EndRecordMacro();
\r
88 static void DepressKey(BYTE bVk, BOOL bOriginal = TRUE);
\r
89 static BOOL GetEnableCUA();
\r
90 static CClipboardSnap* GetKillRing(CClipboardSnap *pSnap, BOOL bForce = TRUE);
\r
91 static void IncreaseKillRingIndex(int nKillRing = 1);
\r
92 static UINT GetModifierState(BOOL bPhysicalKey = TRUE);
\r
93 static void SetModifierState(const UINT before, const UINT after);
\r
94 static BOOL IsDown(BYTE bVk, BOOL bPhysicalKey = TRUE);
\r
95 static void Kdu(BYTE bVk, DWORD n = 1, BOOL bOriginal = TRUE);
\r
96 static void ReleaseKey(BYTE bVk);
\r
97 static BOOL Is106Keyboard();
\r
98 static void ToggleKeyboardHookState();
\r
99 static void ShowKeyboardHookState();
\r
100 static BOOL SendIconMessage(ICONMSG *pMsg, DWORD num);
\r
103 static bool m_bEnableKeyboardHook;
\r
104 static DWORD m_nHookAltRelease;
\r
105 static TCHAR m_M_xTip[128];
\r
106 static void InvokeM_x(const TCHAR* const szPath);
\r
107 static BOOL UpdateKeyboardState(BYTE bVK, BYTE bState);
\r
108 static void LogCallWndProcMessage(WPARAM wParam, LPARAM lParam);
\r
109 static void DoSetCursor();
\r
110 static HCURSOR m_hCurrentCursor;
\r
111 static BOOL m_bCursor;
\r
112 static HCURSOR m_hCursor[MAX_STATUS];
\r
113 static int m_nKeyboardSpeed;
\r
114 static int m_nAccelerate;
\r
115 static HHOOK m_hHookCallWndRet;
\r
116 static LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
117 static BOOL IsMatchWindowText(CString szWindowText);
\r
118 static HHOOK m_hHookCallWnd;
\r
119 static HHOOK m_hHookGetMessage;
\r
120 static HHOOK m_hHookShell;
\r
121 static BOOL IsControl();
\r
122 static BOOL IsMeta();
\r
123 static void SetModifierIcons();
\r
124 static void DoKeybd_event(BYTE bVk, DWORD dwFlags);
\r
125 static LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
126 static LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
127 static LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
128 static LRESULT CALLBACK ShellProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
129 static int GetAppID(const LPCSTR szName, const int fallback);
\r
130 static KeyBind ParseKey(LPCTSTR& def);
\r
131 static BYTE a2v(TCHAR nAscii);
\r
132 static BOOL IsShift(TCHAR nAscii);
\r
133 static void CallFunction(int nFuncID);
\r
134 static int IsPassThrough(BYTE nKey);
\r
135 static void CancelMarkWithShift(BYTE nKey, bool bRelease);
\r
136 static BOOL IsDepressedModifier(int Modifier(), BOOL bPhysicalKey = TRUE);
\r
137 static BOOL IsValidKey(BYTE bVk);
\r
138 static std::list<KbdMacro> m_Macro;
\r
139 static BOOL m_bRecordingMacro;
\r
140 static BOOL m_bDown[MAX_KEY];
\r
141 static void SetOriginal(UINT nType, BYTE bVk);
\r
142 static int CheckOriginal(UINT nType, BYTE bVk);
\r
143 static void InitKeyboardProc(BOOL bImeComposition);
\r
144 static int m_nAppID;
\r
145 static BYTE m_nOriginal[MAX_COMMAND_TYPE][MAX_KEY];
\r
146 static int m_nKillRing;
\r
147 static CList<CClipboardSnap *, CClipboardSnap *> m_oKillRing;
\r
148 static BOOL m_bHook;
\r
149 static BOOL m_bRightShift;
\r
150 static BOOL m_bRightAlt;
\r
151 static BOOL m_bRightControl;
\r
152 static CONFIG m_Config;
\r
155 #endif // !defined(AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_)
\r