英国键盘的 .KeyDown 事件返回的键码是什么
What are the Keycodes returned by the .KeyDown event for UK Keyboards
.KeyDown 事件中是否有 VB.Net 和 C# 返回的键码列表?返回的值与通常的 ASCII 代码不匹配。
0 没有按键
1 鼠标左键
2 鼠标右键
3 取消键
4 鼠标中键(three-button 鼠标)
5第x个鼠标按键(five-button鼠标)
6第二个x鼠标键(five-button鼠标)
7 未定义
8 回SPACE
9 制表符
10 换行键
11 未定义
12个清除键
13 RETURN/ENTER KEY(字母旁边)也 ENTER KEY(在 number-pad 上)
14 未定义
15 未定义
16 班
17 CTRL
18 备用
19 暂停/休息
20 大写锁定
21 IME韩语模式键/ IME假名模式键
22 未定义
23 IME Junja 模式键
24 IME最终模式键
25个输入法汉字模式键/输入法汉字模式键
26 未定义
27转
28个IME转换键
29 IME 非转换键
30 输入法接受键
31 输入法模式切换键
32 SPACE 栏
33 PAGE UP / PGUP 键
34 Page DOWN / PGDN KEY
35 结束
36 家
37 向左箭头键
38 向上箭头键
39 右箭头键
40 向下箭头键
41 SELECT 键
42打印键
43 EXECUTE键
44 PRINT SCREEN 键
45 插入
46 删除
47 帮助键
48 0/) KEY ON KEYBOARD(以上字母)
49个1/! KEY ON KEYBOARD(字母上方)
50 2/@ KEY ON KEYBOARD(以上字母)
51 3/# KEY ON KEYBOARD(以上字母)
52 4/$ KEY ON KEYBOARD(以上字母)
53 5/% KEY ON KEYBOARD(以上字母)
54 6/^ KEY ON KEYBOARD(以上字母)
55 7/& KEY ON KEYBOARD(以上字母)
56 8/* KEYBOARD(以上字母)
57 9/( KEY ON KEYBOARD(以上字母)
58 未定义
59 未定义
60 未定义
61 未定义
62 未定义
63 未定义
64 未定义
65个A和一个KEY
66 B和b KEY
67 C 和 c KEY
68个D和d KEY
69 E 和 e KEY
70 F 和 f KEY
71 G 和 g KEY
72 H 和 h KEY
73我和我KEY
74 J 和 j KEY
75 K 和 k KEY
76 L和l KEY
77 M 和 m KEY
78 N 和 n KEY
79 O 和 o KEY
80 P 和 p KEY
81个Q和q个KEY
82 R 和 r KEY
83 S 和 s KEY
84 T 和 t KEY
85 U和u KEY
86 V 和 v KEY
87 W 和 w KEY
88 X 和 x KEY
89 Y 和 y KEY
90 Z 和 z KEY
91 左侧 Windows 标志键
92 右 Windows 标志键
93 CONTEXT-MENU 键(模拟 RIGHT-MOUSE 单击的键)
94 已保留
95 SLEEP/STANDBY 键盘上的键
96 0 键(在 number-pad 上)
97 1 个键(在 number-pad 上)
98 2 KEY(在 number-pad 上)
99 3 KEY(在 number-pad 上)
100 4 键(在 number-pad 上)
101 5 键(在 number-pad 上)
102 6 键(在 number-pad 上)
103 7 键(在 number-pad 上)
104 8 键(在 number-pad 上)
105 9 键(在 number-pad 上)
106 * 密钥(在 number-pad 上)
107 + 键(在 number-pad 上)
108分隔键(number-pad上的ENTER键)
109 - 密钥(在 number-pad 上)
110。关键(在number-pad)
111 / KEY(在 number-pad 上)
112 F1
113 F2
114 F3
115 F4
116 F5
117 F6
118 F7
119 F8
120 F9
121 F10
122 F11
123 F12
124 F13
125 F14
126 F15
127 F16
128 F17
129 F18
130 F19
131 F20
132 F21
133 F22
134 F23
135 F24
136 未分配
137 未分配
138 未分配
139 尤娜签名
140 未分配
141 未分配
142 未分配
143 未分配
144 数字锁定
145 滚动锁定
146 OEM 特定
147 OEM 特定
148 OEM 特定
149 OEM 特定
150 OEM 特定
151 未分配
152 未分配
153 未分配
154 未分配
155 未分配
156 未分配
157 未分配
158 未分配
159 未分配
160左SHIFT键
161 右SHIFT键
162 左CTRL键
163 右CTRL键
164 左ALT键
165 右ALT键
166 键盘上的浏览器返回键 / INTERNET-CONTROL(Windows 2000 或
稍后)
167 键盘上的浏览器前进键 / INTERNET-CONTROL(Windows 2000 或
稍后)
168 键盘上的浏览器刷新键 / INTERNET-CONTROL(Windows 2000 或
稍后)
169 键盘上的浏览器停止键 / INTERNET-CONTROL(Windows 2000 或
稍后)
170 键盘上的浏览器搜索键 / INTERNET-CONTROL(Windows 2000 或
稍后)
171 键盘上的浏览器收藏夹键 / INTERNET-CONTROL (Windows 2000
或更高版本)
172 键盘上的浏览器主页键 / INTERNET-CONTROL(Windows 2000 或
稍后)
173 键盘上的静音键/MEDIA-CONTROL(Windows 2000 或更高版本)
174 键盘上的音量减小键 / MEDIA-CONTROL(Windows 2000 或更高版本)
175 键盘上的音量增大键 / MEDIA-CONTROL(Windows 2000 或更高版本)
176 媒体下一曲目密钥(Windows 2000 或更高版本)
177 媒体上一曲目密钥(Windows 2000 或更高版本)
178 媒体停止键(Windows2000 或更高版本)
179 媒体播放暂停键(Windows2000 或更高版本)
180 启动邮件键 / E-MAIL KEY ON KEYBOARD / INTERNET-CONTROL
(Windows 2000 年或以后)
181 select 媒体键 / 键盘上的媒体键 / MEDIA-CONTROL
(Windows 2000 年或以后)
182启动应用一键(Windows2000以上)
183启动应用二键(Windows2000以上)
184 预留
185 预留
186;和:关键
187 =/+ 键盘上的按键(以上字母)
188 和 < 键
189 -/_ KEYBOARD(以上字母)
190。和 > 钥匙
191 / 和 ?关键
192 ~ 和 ` KEYBOARD
193 已保留
194 已保留
195 预留
196 预留
197 已保留
198 预留
199 预留
200 预留
201 预留
202 预留
203 预留
204 预留
205 预留
206 预留
207 已保留
208 预留
209 预留
210 预留
211 预留
212 预留
213 预留
214 预留
215 预留
216 未分配
217 未分配
218 未分配
219 [ 和 { 键
220 \ 和 |关键
221] 和 } 键
222' 和#KEY
223用于杂字;它可能因键盘而异
224 预留
225 OEM 特定
226 RT 102 键键盘上的 OEM 尖括号或反斜杠键
(Windows 2000 年或以后)
227 OEM 特定
228 OEM 特定
229 PROCESS KEY键(IME PROCESS KEY)
230 OEM 特定
231 用于像击键一样传递 Unicode 字符 (Windows
2000 年或以后)
232 未分配
233 OEM 特定
234 OEM 特定
235 OEM 特定
236 OEM 特定
237 OEM 特定
238 OEM 特定
239 OEM 特定
240 OEM 特定
241 OEM 特定
242 OEM 特定
243 OEM 特定
244 OEM 特定
245 OEM 特定
246 ATTN 键
247 CRSEL 键
248 EXSEL键
249 ERASE EOF 键
250 PLAY键
251 ZOOM键
252 留作将来使用
253 PA1键
254 CLEAR键
255 其他/杂项键盘上的 EY
这些值都是Keys Enumeration的一部分。
这些(与所有枚举一样)的实际值是任意,因此您永远不应编写将其与数值。例如,他们可能会通过框架更新来改变价值。
碰巧 A-Z
对应于 A-Z
的 ASCII 值,但同样你不应该依赖于此。
Intellisense 会在适当的时候向您显示这些键(以及每个单独的值):
您还可以在对象浏览器 (F11) 中搜索 Windows.System.Forms.Keys
,您将看到完整列表(包含值):
您可以使用 Keys.xx
,其中 x 来自下一个列表 https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.110).aspx。
打印一份简单的报告:
String report = String.Join(Environment.NewLine, Enum
.GetValues(typeof(Keys))
.OfType<Keys>()
.Select(key => String.Format("{0,6} : {1}", (int) key, key)));
Console.Write(report);
你会得到
0 : None
1 : LButton
2 : RButton
3 : Cancel
4 : MButton
5 : XButton1
6 : XButton2
8 : Back
9 : Tab
....
65 : A
66 : B
67 : C
68 : D
69 : E
....
252 : NoName
253 : Pa1
254 : OemClear
65535 : KeyCode
65536 : Shift
131072 : Control
262144 : Alt
-65536 : Modifiers
请注意,一些键代码(例如'A'..'Z'
)对应他们的ASCII 值。然而,键盘的键和字符是不同的东西(如果你有一些异国情调的键盘布局?) 所以不要依赖这个对应关系:
// If key "F" is downed
if ((e.KeyCode == Keys.F) && (e.Modifiers == Keys.None)) {
// Actual character can well be 'А' (on my workstation - Russian layout)
...
}
.KeyDown 事件中是否有 VB.Net 和 C# 返回的键码列表?返回的值与通常的 ASCII 代码不匹配。
0 没有按键
1 鼠标左键
2 鼠标右键
3 取消键
4 鼠标中键(three-button 鼠标)
5第x个鼠标按键(five-button鼠标)
6第二个x鼠标键(five-button鼠标)
7 未定义
8 回SPACE
9 制表符
10 换行键
11 未定义
12个清除键
13 RETURN/ENTER KEY(字母旁边)也 ENTER KEY(在 number-pad 上)
14 未定义
15 未定义
16 班
17 CTRL
18 备用
19 暂停/休息
20 大写锁定
21 IME韩语模式键/ IME假名模式键
22 未定义
23 IME Junja 模式键
24 IME最终模式键
25个输入法汉字模式键/输入法汉字模式键
26 未定义
27转
28个IME转换键
29 IME 非转换键
30 输入法接受键
31 输入法模式切换键
32 SPACE 栏
33 PAGE UP / PGUP 键
34 Page DOWN / PGDN KEY
35 结束
36 家
37 向左箭头键
38 向上箭头键
39 右箭头键
40 向下箭头键
41 SELECT 键
42打印键
43 EXECUTE键
44 PRINT SCREEN 键
45 插入
46 删除
47 帮助键
48 0/) KEY ON KEYBOARD(以上字母)
49个1/! KEY ON KEYBOARD(字母上方)
50 2/@ KEY ON KEYBOARD(以上字母)
51 3/# KEY ON KEYBOARD(以上字母)
52 4/$ KEY ON KEYBOARD(以上字母)
53 5/% KEY ON KEYBOARD(以上字母)
54 6/^ KEY ON KEYBOARD(以上字母)
55 7/& KEY ON KEYBOARD(以上字母)
56 8/* KEYBOARD(以上字母)
57 9/( KEY ON KEYBOARD(以上字母)
58 未定义
59 未定义
60 未定义
61 未定义
62 未定义
63 未定义
64 未定义
65个A和一个KEY
66 B和b KEY
67 C 和 c KEY
68个D和d KEY
69 E 和 e KEY
70 F 和 f KEY
71 G 和 g KEY
72 H 和 h KEY
73我和我KEY
74 J 和 j KEY
75 K 和 k KEY
76 L和l KEY
77 M 和 m KEY
78 N 和 n KEY
79 O 和 o KEY
80 P 和 p KEY
81个Q和q个KEY
82 R 和 r KEY
83 S 和 s KEY
84 T 和 t KEY
85 U和u KEY
86 V 和 v KEY
87 W 和 w KEY
88 X 和 x KEY
89 Y 和 y KEY
90 Z 和 z KEY
91 左侧 Windows 标志键
92 右 Windows 标志键
93 CONTEXT-MENU 键(模拟 RIGHT-MOUSE 单击的键)
94 已保留
95 SLEEP/STANDBY 键盘上的键
96 0 键(在 number-pad 上)
97 1 个键(在 number-pad 上)
98 2 KEY(在 number-pad 上)
99 3 KEY(在 number-pad 上)
100 4 键(在 number-pad 上)
101 5 键(在 number-pad 上)
102 6 键(在 number-pad 上)
103 7 键(在 number-pad 上)
104 8 键(在 number-pad 上)
105 9 键(在 number-pad 上)
106 * 密钥(在 number-pad 上)
107 + 键(在 number-pad 上)
108分隔键(number-pad上的ENTER键)
109 - 密钥(在 number-pad 上)
110。关键(在number-pad)
111 / KEY(在 number-pad 上)
112 F1
113 F2
114 F3
115 F4
116 F5
117 F6
118 F7
119 F8
120 F9
121 F10
122 F11
123 F12
124 F13
125 F14
126 F15
127 F16
128 F17
129 F18
130 F19
131 F20
132 F21
133 F22
134 F23
135 F24
136 未分配
137 未分配
138 未分配
139 尤娜签名
140 未分配
141 未分配
142 未分配
143 未分配
144 数字锁定
145 滚动锁定
146 OEM 特定
147 OEM 特定
148 OEM 特定
149 OEM 特定
150 OEM 特定
151 未分配
152 未分配
153 未分配
154 未分配
155 未分配
156 未分配
157 未分配
158 未分配
159 未分配
160左SHIFT键
161 右SHIFT键
162 左CTRL键
163 右CTRL键
164 左ALT键
165 右ALT键
166 键盘上的浏览器返回键 / INTERNET-CONTROL(Windows 2000 或 稍后)
167 键盘上的浏览器前进键 / INTERNET-CONTROL(Windows 2000 或 稍后)
168 键盘上的浏览器刷新键 / INTERNET-CONTROL(Windows 2000 或 稍后)
169 键盘上的浏览器停止键 / INTERNET-CONTROL(Windows 2000 或 稍后)
170 键盘上的浏览器搜索键 / INTERNET-CONTROL(Windows 2000 或 稍后)
171 键盘上的浏览器收藏夹键 / INTERNET-CONTROL (Windows 2000 或更高版本)
172 键盘上的浏览器主页键 / INTERNET-CONTROL(Windows 2000 或 稍后)
173 键盘上的静音键/MEDIA-CONTROL(Windows 2000 或更高版本)
174 键盘上的音量减小键 / MEDIA-CONTROL(Windows 2000 或更高版本)
175 键盘上的音量增大键 / MEDIA-CONTROL(Windows 2000 或更高版本)
176 媒体下一曲目密钥(Windows 2000 或更高版本)
177 媒体上一曲目密钥(Windows 2000 或更高版本)
178 媒体停止键(Windows2000 或更高版本)
179 媒体播放暂停键(Windows2000 或更高版本)
180 启动邮件键 / E-MAIL KEY ON KEYBOARD / INTERNET-CONTROL (Windows 2000 年或以后)
181 select 媒体键 / 键盘上的媒体键 / MEDIA-CONTROL (Windows 2000 年或以后)
182启动应用一键(Windows2000以上)
183启动应用二键(Windows2000以上)
184 预留
185 预留
186;和:关键
187 =/+ 键盘上的按键(以上字母)
188 和 < 键
189 -/_ KEYBOARD(以上字母)
190。和 > 钥匙
191 / 和 ?关键
192 ~ 和 ` KEYBOARD
193 已保留
194 已保留
195 预留
196 预留
197 已保留
198 预留
199 预留
200 预留
201 预留
202 预留
203 预留
204 预留
205 预留
206 预留
207 已保留
208 预留
209 预留
210 预留
211 预留
212 预留
213 预留
214 预留
215 预留
216 未分配
217 未分配
218 未分配
219 [ 和 { 键
220 \ 和 |关键
221] 和 } 键
222' 和#KEY
223用于杂字;它可能因键盘而异
224 预留
225 OEM 特定
226 RT 102 键键盘上的 OEM 尖括号或反斜杠键 (Windows 2000 年或以后)
227 OEM 特定
228 OEM 特定
229 PROCESS KEY键(IME PROCESS KEY)
230 OEM 特定
231 用于像击键一样传递 Unicode 字符 (Windows 2000 年或以后)
232 未分配
233 OEM 特定
234 OEM 特定
235 OEM 特定
236 OEM 特定
237 OEM 特定
238 OEM 特定
239 OEM 特定
240 OEM 特定
241 OEM 特定
242 OEM 特定
243 OEM 特定
244 OEM 特定
245 OEM 特定
246 ATTN 键
247 CRSEL 键
248 EXSEL键
249 ERASE EOF 键
250 PLAY键
251 ZOOM键
252 留作将来使用
253 PA1键
254 CLEAR键
255 其他/杂项键盘上的 EY
这些值都是Keys Enumeration的一部分。
这些(与所有枚举一样)的实际值是任意,因此您永远不应编写将其与数值。例如,他们可能会通过框架更新来改变价值。
碰巧 A-Z
对应于 A-Z
的 ASCII 值,但同样你不应该依赖于此。
Intellisense 会在适当的时候向您显示这些键(以及每个单独的值):
您还可以在对象浏览器 (F11) 中搜索 Windows.System.Forms.Keys
,您将看到完整列表(包含值):
您可以使用 Keys.xx
,其中 x 来自下一个列表 https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.110).aspx。
打印一份简单的报告:
String report = String.Join(Environment.NewLine, Enum
.GetValues(typeof(Keys))
.OfType<Keys>()
.Select(key => String.Format("{0,6} : {1}", (int) key, key)));
Console.Write(report);
你会得到
0 : None
1 : LButton
2 : RButton
3 : Cancel
4 : MButton
5 : XButton1
6 : XButton2
8 : Back
9 : Tab
....
65 : A
66 : B
67 : C
68 : D
69 : E
....
252 : NoName
253 : Pa1
254 : OemClear
65535 : KeyCode
65536 : Shift
131072 : Control
262144 : Alt
-65536 : Modifiers
请注意,一些键代码(例如'A'..'Z'
)对应他们的ASCII 值。然而,键盘的键和字符是不同的东西(如果你有一些异国情调的键盘布局?) 所以不要依赖这个对应关系:
// If key "F" is downed
if ((e.KeyCode == Keys.F) && (e.Modifiers == Keys.None)) {
// Actual character can well be 'А' (on my workstation - Russian layout)
...
}