Java键盘键码列表

Java键盘键码列表,java,applet,keylistener,keyevent,Java,Applet,Keylistener,Keyevent,有人能为我提供java中KeyEvent类的键盘上使用的各个键的键代码整数列表吗 我想创建一个所有键盘键的下拉列表,供用户选择。我需要特定于键盘的列表。在这种情况下,VK常量没有帮助,因为我需要键盘上使用的键的“列表”。 没有被使用,因为它是针对Javascript的,并且与之相比,所有键的代码都不相同。此外,中使用的键码值都是按字母顺序排列的,因此很难在那里找到键盘键。我试着在谷歌上搜索源代码,但没有发现什么有趣的东西,只有Javascript。我应该自己一个一个地编译它们,还是有更简单的方法

有人能为我提供java中KeyEvent类的键盘上使用的各个键的键代码整数列表吗

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

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

类具有具有这些值的静态字段

例如,
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());
    } 
}

您不需要知道键代码的确切值<代码>键事件类具有定义所有键代码的常量字段:

KeyEvent.VK_A
KeyEvent.VK_ENTER
KeyEvent.VK_SPACE
等等

请仔细阅读Javadoc。所有常量值也可在此处找到:

这是您的列表:

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);                                   
            }                                                                                 
        }                                                                                     
                                                                                              
    }                                                                                         
}
import java.awt.event.KeyEvent;
导入java.lang.reflect.Field;
导入java.lang.reflect.Modifier;
导入java.util.*;
公共类测试{
公共静态void main(字符串[]a){
对于(int i=0;i<1000000;++i){
String text=java.awt.event.KeyEvent.getKeyText(i);
如果(!text.contains(“未知键码:”){
System.out.println(“+i+”--“+text”);
}                                                                                 
}                                                                                     
}                                                                                         
}

我已排除了“未知”代码。

您可以尝试使用此程序获取
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);
      }
   } 
}
导入java.awt.Robot;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyEvent;
导入java.lang.reflect.Field;
导入java.lang.reflect.Modifier;
导入java.util.*;
公共类机器人类
{ 
公共静态void main(字符串[]args)
{   
ArrayList值=新的ArrayList();
试一试{
机器人=新机器人();
Field[]fields=java.awt.event.KeyEvent.class.getDeclaredFields();
用于(字段f:字段){
if(Modifier.isStatic(f.getModifiers())){
add(f.getInt(f.getName());
} 
}         
}
捕获(例外e){
集合。排序(值);
对于(int i:值)System.out.println(i);
}
} 
}


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

这没用。我知道VK。我的问题是关于编译键码列表,而不是使用每个键码。这就是为什么我问我是否应该手工编译它们。编辑了答案。这将给出字段名称。然后您需要“编辑”字符串以放入下拉菜单。谢谢您的帮助。这太完美了。@AbdudDayanAdeeb,如果这解决了你的问题,那么你应该接受答案。我知道这是个老话题,但有人可能会觉得这很有帮助。谢谢!只是好奇你是从哪里弄来的?只是粗暴地把所有的钥匙都弄到了一个合理的数字。Tbh这只是我开始学习实际编程时发布的一个随机答案,它仍然是我所有帖子中评分最高的一个。您的答案与公认的答案完全相同,只是现在您正在链接到一个不受支持的Java版本。