Java 键盘键码列表

Posted

技术标签:

【中文标题】Java 键盘键码列表【英文标题】:Java Keyboard Keycodes list 【发布时间】:2013-02-25 03:31:40 【问题描述】:

任何人都可以为我提供键盘上用于 java 中的 KeyEvent 类的各个键的键代码整数列表吗?

我想创建一个包含所有键盘键的下拉列表供用户选择。我需要特定于键盘的列表。 VK 常量在这种情况下没有帮助,因为我需要键盘上使用的键的“列表”。 This post here 没有被使用,因为它用于 javascript,并且与 javadoc 相比,所有键的代码都不相同。 javadoc 中使用的 KeyCode 值也都是按字母顺序排列的,所以很难找到那里的键盘键。我试着用谷歌搜索资源,但没有什么有趣的只是 Javascript 的。我应该自己一个一个编译还是有更简单的方法?

编辑:我知道 VK。我需要使用 KeyEvent.getKeyText 函数将每个键盘键存储在下拉菜单中。所以我需要这份清单。这就是为什么我问我是否需要自己编译它们。我应该早点提到这一点。对每个键都这样做是浪费时间。

【问题讨论】:

【参考方案1】:

这是你的清单:

3 -- Cancel
8 -- Backspace
9 -- Tab
10 -- Enter
12 -- Clear
16 -- Shift
17 -- Ctrl
18 -- Alt
19 -- Pause
20 -- Caps Lock
21 -- Kana
24 -- Final
25 -- Kanji
27 -- Escape
28 -- Convert
29 -- No Convert
30 -- Accept
31 -- Mode Change
32 -- Space
33 -- Page Up
34 -- Page Down
35 -- End
36 -- Home
37 -- Left
38 -- Up
39 -- Right
40 -- Down
44 -- Comma
45 -- Minus
46 -- Period
47 -- Slash
48 -- 0
49 -- 1
50 -- 2
51 -- 3
52 -- 4
53 -- 5
54 -- 6
55 -- 7
56 -- 8
57 -- 9
59 -- Semicolon
61 -- Equals
65 -- A
66 -- B
67 -- C
68 -- D
69 -- E
70 -- F
71 -- G
72 -- H
73 -- I
74 -- J
75 -- K
76 -- L
77 -- M
78 -- N
79 -- O
80 -- P
81 -- Q
82 -- R
83 -- S
84 -- T
85 -- U
86 -- V
87 -- W
88 -- X
89 -- Y
90 -- Z
91 -- Open Bracket
92 -- Back Slash
93 -- Close Bracket
96 -- NumPad-0
97 -- NumPad-1
98 -- NumPad-2
99 -- NumPad-3
100 -- NumPad-4
101 -- NumPad-5
102 -- NumPad-6
103 -- NumPad-7
104 -- NumPad-8
105 -- NumPad-9
106 -- NumPad *
107 -- NumPad +
108 -- NumPad ,
109 -- NumPad -
110 -- NumPad .
111 -- NumPad /
112 -- F1
113 -- F2
114 -- F3
115 -- F4
116 -- F5
117 -- F6
118 -- F7
119 -- F8
120 -- F9
121 -- F10
122 -- F11
123 -- F12
127 -- Delete
128 -- Dead Grave
129 -- Dead Acute
130 -- Dead Circumflex
131 -- Dead Tilde
132 -- Dead Macron
133 -- Dead Breve
134 -- Dead Above Dot
135 -- Dead Diaeresis
136 -- Dead Above Ring
137 -- Dead Double Acute
138 -- Dead Caron
139 -- Dead Cedilla
140 -- Dead Ogonek
141 -- Dead Iota
142 -- Dead Voiced Sound
143 -- Dead Semivoiced Sound
144 -- Num Lock
145 -- Scroll Lock
150 -- Ampersand
151 -- Asterisk
152 -- Double Quote
153 -- Less
154 -- Print Screen
155 -- Insert
156 -- Help
157 -- Meta
160 -- Greater
161 -- Left Brace
162 -- Right Brace
192 -- Back Quote
222 -- Quote
224 -- Up
225 -- Down
226 -- Left
227 -- Right
240 -- Alphanumeric
241 -- Katakana
242 -- Hiragana
243 -- Full-Width
244 -- Half-Width
245 -- Roman Characters
256 -- All Candidates
257 -- Previous Candidate
258 -- Code Input
259 -- Japanese Katakana
260 -- Japanese Hiragana
261 -- Japanese Roman
262 -- Kana Lock
263 -- Input Method On/Off
512 -- At
513 -- Colon
514 -- Circumflex
515 -- Dollar
516 -- Euro
517 -- Exclamation Mark
518 -- Inverted Exclamation Mark
519 -- Left Parenthesis
520 -- Number Sign
521 -- Plus
522 -- Right Parenthesis
523 -- Underscore
524 -- Windows
525 -- Context Menu
61440 -- F13
61441 -- F14
61442 -- F15
61443 -- F16
61444 -- F17
61445 -- F18
61446 -- F19
61447 -- F20
61448 -- F21
61449 -- F22
61450 -- F23
61451 -- F24
65312 -- Compose
65368 -- Begin
65406 -- Alt Graph
65480 -- Stop
65481 -- Again
65482 -- Props
65483 -- Undo
65485 -- Copy
65487 -- Paste
65488 -- Find
65489 -- Cut

我用这个简单的蛮力生成它:

import java.awt.event.KeyEvent;                                                               
import java.lang.reflect.Field;                                                               
import java.lang.reflect.Modifier;                                                            
import java.util.*;                                                                           
                                                                                              
public class Test                                                                            
    public static void main(String[] a)                                                      
        for(int i = 0; i < 1000000; ++i)                                                     
            String text = java.awt.event.KeyEvent.getKeyText(i);                              
            if(!text.contains("Unknown keyCode: "))                                          
                System.out.println("" + i + " -- " + text);                                   
                                                                                             
                                                                                             
                                                                                              
                                                                                             

我已排除“未知”代码。

【讨论】:

我知道这是个老话题,但有人可能会觉得这很有帮助 谢谢!只是好奇你是从哪里弄来的? 只是将所有键强制设置为某个合理的数字。这只是我开始学习实际编程时发布的一个随机答案,它仍然是我所有帖子中评价最高的一个【参考方案2】:

KeyEvent 类具有包含这些值的静态字段。

例如,KeyEvent.VK_A 代表“A”键。

要获取字段名称,您可以使用反射:

Field[] fields = java.awt.event.KeyEvent.class.getDeclaredFields();
for (Field f : fields) 
    if (Modifier.isStatic(f.getModifiers())) 
        System.out.println(f.getName());
     

【讨论】:

编辑了答案。这将给出字段名称。然后您需要“编辑”要放入下拉菜单的字符串。 感谢您的帮助。这是完美的。 @AbdudDayanAdeeb,如果这解决了您的问题,那么您应该接受答案。【参考方案3】:

您无需知道键码的确切值。 KeyEvent 类具有定义所有关键代码的常量字段:

KeyEvent.VK_A
KeyEvent.VK_ENTER
KeyEvent.VK_SPACE

等等

请仔细阅读 Javadoc。所有的常量值也可以在这里找到:

http://docs.oracle.com/javase/7/docs/api/constant-values.html

【讨论】:

没用。我知道VK。我的问题是关于编译 KeyCode 列表而不是使用每个 KeyCode。这就是为什么我问我是否应该手动编译它们。【参考方案4】:

你可以试试这个程序来获取KeyEvent类中所有字段的int值

import java.awt.Robot; 
import java.awt.event.KeyEvent;
import java.awt.event.KeyEvent;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;
public class RobotClass 
 
   public static void main(String[] args)  
      
      ArrayList<Integer> values = new ArrayList<>();
      try
         Robot robot = new Robot();
         Field[] fields = java.awt.event.KeyEvent.class.getDeclaredFields();
         for (Field f : fields) 
            if (Modifier.isStatic(f.getModifiers())) 
               values.add(f.getInt(f.getName()));
            
                  
      
      catch(Exception e)
         Collections.sort(values);
         for(int i:values) System.out.println(i);
      
    

【讨论】:

【参考方案5】:

Java™ Platform Standard Ed. 7

在那里寻找“java.awt.event.KeyEvent”部分;

【讨论】:

您的答案与接受的答案完全相同,只是现在您链接到不受支持的 Java 版本。

以上是关于Java 键盘键码列表的主要内容,如果未能解决你的问题,请参考以下文章

数字键盘的键码

keycode键盘 按键 - 键码 对应表

keycode键盘 按键 - 键码 对应表

键盘按钮keyCode大全

键盘按键keyCode大全,js页面快捷键

鼠标键盘keycode