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
12 #include "ClipboardSnap.h"
\r
14 enum { MAX_APP = 64 };
\r
15 enum { NONE = 0x0, SHIFT = 0x1, CONTROL = 0x2, META = 0x4, CONTROLX = 0x8,
\r
16 MAX_COMMAND_TYPE = NONE + SHIFT + CONTROL + META + CONTROLX + 1 };
\r
17 enum { /* WIN_SHIFT = 0x100, */ WIN_CTRL = 0x200, WIN_ALT = 0x400, WIN_WIN = 0x800 };
\r
18 enum { MAX_KEY = 256 };
\r
19 enum { MAX_FUNCTION = 64 };
\r
20 enum { MAX_DEFINITION = 256 };
\r
22 enum { WINDOW_NAME_LENGTH = 128 };
\r
23 enum { CLASS_NAME_LENGTH = 128 };
\r
24 enum { SUB_KEY_NAME_LENGTH = 128 };
\r
25 enum { WINDOW_TEXT_LENGTH = 128 + 128 + 3};
\r
27 enum ICON_TYPE { MAIN_ICON, CX_ICON, MX_ICON, META_ICON, SHIFT_ICON, CTRL_ICON, ALT_ICON, MAX_ICON_TYPE };
\r
28 enum XKEYMACS_STATUS { STATUS_ENABLE, STATUS_DISABLE_TMP, STATUS_DISABLE_WOCQ, STATUS_DISABLE, MAX_STATUS };
\r
29 enum { ON_ICON, OFF_ICON }; // alias of status
\r
31 enum GOTO { GOTO_DO_NOTHING, GOTO_HOOK, GOTO_RECURSIVE, GOTO_HOOKX, GOTO_HOOK0_9, CONTINUE };
\r
32 enum SETTING_STYLE { SETTING_DEFAULT, SETTING_SPECIFIC, SETTING_DISABLE, SETTING_UNDEFINED };
\r
34 enum { EXTENDED_KEY = 0x01000000 };
\r
35 enum { REPEATED_KEY = 0x40000000 };
\r
36 enum { BEING_RELEASED = 0x80000000 };
\r
53 const DWORD HOOK_ALT_LATER = 0x10000;
\r
55 class AFX_EXT_CLASS CXkeymacsDll
\r
58 static BOOL SaveConfig();
\r
59 static BOOL LoadConfig();
\r
60 static void SetM_xTip(const TCHAR *const szPath);
\r
61 static BOOL Get326Compatible();
\r
62 static void Set326Compatible(int nApplicationID, BOOL b326Compatible);
\r
63 static void SetCursorData(HCURSOR hEnable, HCURSOR hDisableTMP, HCURSOR hDisableWOCQ, HICON hDisable, BOOL bEnable);
\r
64 static unsigned int GetMaxKeyInterval(void);
\r
65 static void SetKeyboardSpeed(int nKeyboardSpeed);
\r
66 static int GetAccelerate(void);
\r
67 static void SetAccelerate(int nAccelerate);
\r
68 static void SetWindowText(int nApplicationID, CString szWindowText);
\r
69 static void SetKillRingMax(int nApplicationID, int nKillRingMax);
\r
70 static void Clear(int nApplicationID);
\r
71 static BOOL IsKeyboardHook();
\r
72 static void SetCommandID(int nApplicationID, int nCommandType, int nKey, int nCommandID);
\r
73 static void SetAtIbeamCursorOnly(int nApplicationID, int nCommandType, int nKey, BOOL bAtIbeamCursorOnly);
\r
74 static void SetApplicationName(int nApplicationID, CString szApplicationName);
\r
75 static void ReleaseHooks();
\r
76 static void SetEnableCUA(int nApplicationID, BOOL bEnableCUA);
\r
77 static void SetIgnoreUndefinedC_x(int nApplicationID, BOOL bIgnoreUndefinedC_x);
\r
78 static void SetIgnoreUndefinedMetaCtrl(int nApplicationID, BOOL bIgnoreUndefinedMetaCtrl);
\r
79 static void SetHooks();
\r
80 static void ResetHooks();
\r
81 static void SetSettingStyle(int nApplicationID, int nSettingStyle);
\r
82 static void SetUseDialogSetting(int nApplicationID, BOOL bUseDialogSetting);
\r
83 static void AddKillRing(BOOL bNewData = TRUE);
\r
84 static void CallMacro();
\r
85 static void ClearFunctionDefinition();
\r
86 static void DefiningMacro(BOOL bDefiningMacro);
\r
87 static void DepressKey(BYTE bVk, BOOL bOriginal = TRUE);
\r
88 static BOOL GetEnableCUA();
\r
89 static CClipboardSnap* GetKillRing(CClipboardSnap *pSnap, BOOL bForce = TRUE);
\r
90 static void IncreaseKillRingIndex(int nKillRing = 1);
\r
91 static UINT GetModifierState(BOOL bPhysicalKey = TRUE);
\r
92 static void SetModifierState(UINT before, UINT after);
\r
93 static BOOL IsDown(BYTE bVk, BOOL bPhysicalKey = TRUE);
\r
94 static void Kdu(BYTE bVk, DWORD n = 1, BOOL bOriginal = TRUE);
\r
95 static void ReleaseKey(BYTE bVk);
\r
96 static void SetFunctionDefinition(int nFunctionID, CString szDefinition);
\r
97 static void SetFunctionKey(int nFunctionID, int nApplicationID, int nCommandType, int nKey);
\r
98 static void SetKeyboardHookFlag();
\r
99 static void SetKeyboardHookFlag(BOOL bFlag);
\r
100 static BOOL Is106Keyboard();
\r
101 static void Set106Keyboard(BOOL b106Keyboard);
\r
102 static BOOL SendIconMessage(ICONMSG *pMsg, DWORD num);
\r
104 virtual ~CXkeymacsDll();
\r
106 static DWORD m_nHookAltRelease;
\r
107 static TCHAR m_M_xTip[128];
\r
108 static void InvokeM_x(const TCHAR* const szPath);
\r
109 static BOOL UpdateKeyboardState(BYTE bVK, BYTE bState);
\r
110 static void LogCallWndProcMessage(WPARAM wParam, LPARAM lParam);
\r
111 static void DoSetCursor();
\r
112 static HCURSOR m_hCurrentCursor;
\r
113 static BOOL m_bCursor;
\r
114 static HCURSOR m_hCursor[MAX_STATUS];
\r
115 static int m_nKeyboardSpeed;
\r
116 static int m_nAccelerate;
\r
117 static HHOOK m_hHookCallWndRet;
\r
118 static LRESULT CALLBACK CallWndRetProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
119 static BOOL IsMatchWindowText(CString szWindowText);
\r
120 static HHOOK m_hHookCallWnd;
\r
121 static HHOOK m_hHookGetMessage;
\r
122 static HHOOK m_hHookShell;
\r
123 static BOOL DefiningMacro();
\r
124 static BOOL IsControl();
\r
125 static BOOL IsMeta();
\r
126 static void SetModifierIcons();
\r
127 static void DoKeybd_event(BYTE bVk, DWORD dwFlags);
\r
128 static LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
129 static LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
130 static LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
131 static LRESULT CALLBACK ShellProc(int nCode, WPARAM wParam, LPARAM lParam);
\r
132 static KeyBind ParseKey(const int nFunctionID, unsigned int &i);
\r
133 static BYTE a2v(TCHAR nAscii);
\r
134 static BOOL IsShift(TCHAR nAscii);
\r
135 static void CallFunction(int nFunctionID);
\r
136 static int IsPassThrough(BYTE nKey);
\r
137 static BOOL IsDepressedShiftKeyOnly(BYTE nKey);
\r
138 static BOOL IsDepressedModifier(int Modifier(), BOOL bPhysicalKey = TRUE);
\r
139 static BOOL IsValidKey(BYTE bVk);
\r
140 static CObList m_Macro;
\r
141 static BOOL m_bDefiningMacro;
\r
142 static void Original(int nCommandType, BYTE bVk, int nOriginal);
\r
143 static int Original(int nCommandType, BYTE bVk);
\r
144 static void InitKeyboardProc(BOOL bImeComposition);
\r
145 static int m_nApplicationID;
\r
146 static int m_nOriginal[MAX_COMMAND_TYPE][MAX_KEY];
\r
147 static int m_nKillRing;
\r
148 static CList<CClipboardSnap *, CClipboardSnap *> m_oKillRing;
\r
149 static int GetMickey(int nDifferential, int nThreshold1, int nThreshold2, int nAcceleration, int nSpeed);
\r
150 static BOOL m_bHook;
\r
151 static BOOL m_bRightShift;
\r
152 static BOOL m_bRightAlt;
\r
153 static BOOL m_bRightControl;
\r
154 static CONFIG m_Config;
\r
157 extern UINT g_ImeManipulationMessage;
\r
159 #endif // !defined(AFX_XKEYMACS_H__88552DEC_1233_4A0A_BE62_9EF7BC618EC6__INCLUDED_)
\r