1 #include "KeyString.h"
\r
2 #include "../xkeymacsdll/defs.h"
\r
4 static const struct {
\r
8 {CONTROLX, _T("Ctrl+X ")},
\r
9 {CONTROL, _T("Ctrl+")},
\r
10 {META, _T("Meta+")},
\r
11 {SHIFT, _T("Shift+")},
\r
14 static LPCTSTR Keys[] = {
\r
16 _T("Left mouse button"), // VK_LBUTTON
\r
17 _T("Right mouse button"), // VK_RBUTTON
\r
18 _T("Break"), // VK_CANCEL
\r
19 _T("Middle mouse button"), // VK_MBUTTON
\r
20 _T("X1 mouse button"), // VK_XBUTTON1
\r
21 _T("X2 mouse button"), // VK_XBUTTON2
\r
22 _T("Undefined"), // 0x07
\r
23 _T("Backspace"), // VK_BACK
\r
24 _T("Tab"), // VK_TAB
\r
25 _T("Reserved"), // 0x0a
\r
26 _T("Reserved"), // 0x0b
\r
27 _T("Clear"), // VK_CLEAR
\r
28 _T("Enter"), // VK_RETURN
\r
29 _T("Undefined"), // 0x0e
\r
30 _T("Undefined"), // 0x0f
\r
31 _T("Shift"), // VK_SHIFT
\r
32 _T("Ctrl"), // VK_CONTROL
\r
33 _T("Alt"), // VK_MENU
\r
34 _T("Pause"), // VK_PAUSE
\r
35 _T("Caps Lock"), // VK_CAPITAL
\r
36 _T("Kana"), // VK_KANA {VK_HANGUEL, "Hanguel"}, {VK_HANGUL, "Hangul"}
\r
37 _T("Undefined"), // 0x16
\r
38 _T("Junja"), // VK_JUNJA
\r
39 _T("Final"), // VK_FINAL
\r
40 _T("Kanji"), //VK_KANJI {VK_HANJA, "Hanja"}
\r
41 _T("Undefined"), // 0x1a
\r
42 _T("Esc"), // VK_ESCAPE
\r
43 _T("Convert"), // VK_CONVERT
\95Ï
\8a·
\r
44 _T("Nonconvert"), // VK_NONCONVERT
\96³
\95Ï
\8a·
\r
45 _T("Accept"), // VK_ACCEPT
\r
46 _T("Mode change"), // VK_MODECHANGE
\r
47 _T("Space"), // VK_SPACE
\r
48 _T("Page Up"), // VK_PRIOR
\r
49 _T("Page Down"), // VK_NEXT
\r
50 _T("End"), // VK_END
\r
51 _T("Home"), // VK_HOME
\r
52 _T("Left"), // VK_LEFT
\r
54 _T("Right"), // VK_RIGHT
\r
55 _T("Down"), // VK_DOWN
\r
56 _T("Select"), // VK_SELECT
\r
57 _T("Print"), // VK_PRINT
\r
58 _T("Execute"), // VK_EXECUTE
\r
59 _T("Print Screen"), // VK_SNAPSHOT
\r
60 _T("Ins"), // VK_INSERT
\r
61 _T("Del"), // VK_DELETE
\r
62 _T("Help"), // VK_HELP
\r
73 _T("Undefined"), // 0x3a
\r
74 _T("Undefined"), // 0x3b
\r
75 _T("Undefined"), // 0x3c
\r
76 _T("Undefined"), // 0x3d
\r
77 _T("Undefined"), // 0x3e
\r
78 _T("Undefined"), // 0x3f
\r
79 _T("Undefined"), // 0x40
\r
106 _T("Left Windows"), // VK_LWIN
\r
107 _T("Right Windows"), // VK_RWIN
\r
108 _T("Application"), // VK_APPS
\r
109 _T("Reserved"), // 0x5e
\r
110 _T("Sleep"), // VK_SLEEP
\r
111 _T("Num 0"), // VK_NUMPAD0
\r
112 _T("Num 1"), // VK_NUMPAD1
\r
113 _T("Num 2"), // VK_NUMPAD2
\r
114 _T("Num 3"), // VK_NUMPAD3
\r
115 _T("Num 4"), // VK_NUMPAD4
\r
116 _T("Num 5"), // VK_NUMPAD5
\r
117 _T("Num 6"), // VK_NUMPAD6
\r
118 _T("Num 7"), // VK_NUMPAD7
\r
119 _T("Num 8"), // VK_NUMPAD8
\r
120 _T("Num 9"), // VK_NUMPAD9
\r
121 _T("Num *"), // VK_MULTIPLY
\r
122 _T("Num +"), // VK_ADD
\r
123 _T("Separator"), // VK_SEPARATOR
\r
124 _T("Num -"), // VK_SUBTRACT
\r
125 _T("Num ."), // VK_DECIMAL
\r
126 _T("Num /"), // VK_DIVIDE
\r
136 _T("F10"), // VK_F10
\r
137 _T("F11"), // VK_F11
\r
138 _T("F12"), // VK_F12
\r
139 _T("F13"), // VK_F13
\r
140 _T("F14"), // VK_F14
\r
141 _T("F15"), // VK_F15
\r
142 _T("F16"), // VK_F16
\r
143 _T("F17"), // VK_F17
\r
144 _T("F18"), // VK_F18
\r
145 _T("F19"), // VK_F19
\r
146 _T("F20"), // VK_F20
\r
147 _T("F21"), // VK_F21
\r
148 _T("F22"), // VK_F22
\r
149 _T("F23"), // VK_F23
\r
150 _T("F24"), // VK_F24
\r
151 _T("Unassigned"), // 0x88
\r
152 _T("Unassigned"), // 0x89
\r
153 _T("Unassigned"), // 0x8a
\r
154 _T("Unassigned"), // 0x8b
\r
155 _T("Unassigned"), // 0x8c
\r
156 _T("Unassigned"), // 0x8d
\r
157 _T("Unassigned"), // 0x8e
\r
158 _T("Unassigned"), // 0x8f
\r
159 _T("Num Lock"), // VK_NUMLOCK
\r
160 _T("Scroll Lock"), // VK_SCROLL
\r
161 _T("OEM specific"), // 0x92
\r
162 _T("OEM specific"), // 0x93
\r
163 _T("OEM specific"), // 0x94
\r
164 _T("OEM specific"), // 0x95
\r
165 _T("OEM specific"), // 0x96
\r
166 _T("Unassigned"), // 0x97
\r
167 _T("Unassigned"), // 0x98
\r
168 _T("Unassigned"), // 0x99
\r
169 _T("Unassigned"), // 0x9a
\r
170 _T("Unassigned"), // 0x9b
\r
171 _T("Unassigned"), // 0x9c
\r
172 _T("Unassigned"), // 0x9d
\r
173 _T("Unassigned"), // 0x9e
\r
174 _T("Unassigned"), // 0x9f
\r
175 _T("Left Shift"), // VK_LSHIFT
\r
176 _T("Right Shift"), // VK_RSHIFT
\r
177 _T("Left Ctrl"), // VK_LCONTROL
\r
178 _T("Right Ctrl"), // VK_RCONTROL
\r
179 _T("Left Alt"), // VK_LMENU
\r
180 _T("Right Alt"), // VK_RMENU
\r
181 _T("Browser Back"), // VK_BROWSER_BACK
\r
182 _T("Browser Forward"), // VK_BROWSER_FORWARD
\r
183 _T("Browser Refresh"), // VK_BROWSER_REFRESH
\r
184 _T("Browser Stop"), // VK_BROWSER_STOP
\r
185 _T("Browser Search"), // VK_BROWSER_SEARCH
\r
186 _T("Browser Favorites"), // VK_BROWSER_FAVORITES
\r
187 _T("Browser Start"), // VK_BROWSER_HOME
\r
188 _T("Volume Mute"), // VK_VOLUME_MUTE
\r
189 _T("Volume Down"), // VK_VOLUME_DOWN
\r
190 _T("Volume Up"), // VK_VOLUME_UP
\r
191 _T("Next Track"), // VK_MEDIA_NEXT_TRACK
\r
192 _T("Previous Track"), // VK_MEDIA_PREV_TRACK
\r
193 _T("Stop Media"), // VK_MEDIA_STOP
\r
194 _T("Play/Pause Media"), // VK_MEDIA_PLAY_PAUSE
\r
195 _T("Start Mail"), // VK_LAUNCH_MAIL
\r
196 _T("Select Media"), // VK_LAUNCH_MEDIA_SELECT
\r
197 _T("Start Application 1"), // VK_LAUNCH_APP1
\r
198 _T("Start Application 2"), // VK_LAUNCH_APP2
\r
199 _T("Reserved"), // 0xb8
\r
200 _T("Reserved"), // 0xb9
\r
201 _T(";"), // VK_OEM_1 _T(":") for Japanese keyboard
\r
202 _T("+"), // VK_OEM_PLUS _T(";") for Japanese keyboard
\r
203 _T(","), // VK_OEM_COMMA
\r
204 _T("-"), // VK_OEM_MINUS
\r
205 _T("."), // VK_OEM_PERIOD
\r
206 _T("/"), // VK_OEM_2
\r
207 _T("`"), // VK_OEM_3 _T("@") for Japanese keyboard
\r
208 _T("Reserved"), // 0xc1
\r
209 _T("Reserved"), // 0xc2
\r
210 _T("Reserved"), // 0xc3
\r
211 _T("Reserved"), // 0xc4
\r
212 _T("Reserved"), // 0xc5
\r
213 _T("Reserved"), // 0xc6
\r
214 _T("Reserved"), // 0xc7
\r
215 _T("Reserved"), // 0xc8
\r
216 _T("Reserved"), // 0xc9
\r
217 _T("Reserved"), // 0xca
\r
218 _T("Reserved"), // 0xcb
\r
219 _T("Reserved"), // 0xcc
\r
220 _T("Reserved"), // 0xcd
\r
221 _T("Reserved"), // 0xce
\r
222 _T("Reserved"), // 0xcf
\r
223 _T("Reserved"), // 0xd0
\r
224 _T("Reserved"), // 0xd1
\r
225 _T("Reserved"), // 0xd2
\r
226 _T("Reserved"), // 0xd3
\r
227 _T("Reserved"), // 0xd4
\r
228 _T("Reserved"), // 0xd5
\r
229 _T("Reserved"), // 0xd6
\r
230 _T("Reserved"), // 0xd7
\r
231 _T("Unassigned"), // 0xd8
\r
232 _T("Unassigned"), // 0xd9
\r
233 _T("Unassigned"), // 0xda
\r
234 _T("["), // VK_OEM_4
\r
235 _T("Backslash"), // VK_OEM_5
\r
236 _T("]"), // VK_OEM_6
\r
237 _T("'"), // VK_OEM_7
\r
238 _T("OEM specific"), // VK_OEM_8
\r
239 _T("Reserved"), // 0xe0
\r
240 _T("OEM specific"), // 0xe1
\r
241 _T("Backslash for 106 keyboard"), // VK_OEM_102
\r
242 _T("OEM specific"), // 0xe3
\r
243 _T("OEM specific"), // 0xe4
\r
244 _T("Process"), // VK_PROCESSKEY
\r
245 _T("OEM specific"), // 0xe6
\r
246 _T("Packet"), // VK_PACKET
\r
247 _T("Unassigned"), // 0xe8
\r
248 _T("OEM specific"), // 0xe9
\r
249 _T("OEM specific"), // 0xea
\r
250 _T("OEM specific"), // 0xeb
\r
251 _T("OEM specific"), // 0xec
\r
252 _T("OEM specific"), // 0xed
\r
253 _T("OEM specific"), // 0xee
\r
254 _T("OEM specific"), // 0xef
\r
255 _T("Eisu"), // 0xf0 //
\89p
\90\94\r
256 _T("OEM specific"), // 0xf1
\r
257 _T("Hiragana"), // 0xf2
\82Ð
\82ç
\82ª
\82È
\r
258 _T("Hankaku/Zenkaku 0xf3"), // 0xf3 "
\94¼
\8ap/
\91S
\8ap"
\r
259 _T("Hankaku/Zenkaku 0xf4"), // 0xf4 "
\94¼
\8ap/
\91S
\8ap"
\r
260 _T("OEM specific"), // 0xf5
\r
261 _T("Attn"), // VK_ATTN
\r
262 _T("CrSel"), // VK_CRSEL
\r
263 _T("ExSel"), // VK_EXSEL
\r
264 _T("Erace EOF"), // VK_EREOF
\r
265 _T("Play"), // VK_PLAY
\r
266 _T("Zoom"), // VK_ZOOM
\r
267 _T("Noname"), // VK_NONAME
\r
268 _T("PA1"), // VK_PA1
\r
269 _T("OEM Clear"), // VK_OEM_CLEAR
\r
273 KeyString::KeyString(bool is106Keyboard)
\r
275 if (!is106Keyboard)
\r
277 Keys[0xba] = _T(":");
\r
278 Keys[0xbb] = _T(";");
\r
279 Keys[0xc0] = _T("@");
\r
280 Keys[0xde] = _T("^");
\r
283 CString KeyString::ToString(int type, int key)
\r
286 for (int i = 0; i < _countof(Types); ++i)
\r
287 if ((type & Types[i].Type) != 0)
\r
288 str += Types[i].Name;
\r
293 void KeyString::ToKey(LPCTSTR str, int& type, int& key)
\r
297 for (int i = 0; i < _countof(Types); ++i)
\r
298 if (s.Find(Types[i].Name) == 0) {
\r
299 type |= Types[i].Type;
\r
300 s.Delete(0, static_cast<int>(_tcslen(Types[i].Name)));
\r
303 for (int i = 1; i < 256; ++i)
\r
304 if (s == Keys[i]) {
\r