浏览器密钥代码列表

Browser key code list?

本文关键字:列表 代码 密钥 浏览器      更新时间:2023-09-26

我知道这可能是徒劳的,但我想看看是否有一个答案。我正在制作一款HTML5游戏,并尝试使用键盘输入。拜托告诉我有人知道谷歌不知道的事。希望它至少能强调键盘事件和键码需要跨浏览器的程度。

请告诉我在javascript api中有某种对象列出每个键的键码。如果没有,为什么还没有人这么做,仅仅是能够获取密钥的代码就能让我们的工作变得容易得多。不再测试每个浏览器/操作系统的不一致性。

如果不是这样(这可能是徒劳的)有没有一种方法来重新定义默认的键码到我们自己的自定义键码?

我不知道为什么没有做更多的工作来使它更方便?

我觉得这个页面很有帮助。怪癖模式也有一篇很好的文章。事实上,浏览器的不一致性和像jQuery这样的javascript框架可以帮助解决这个问题。

JavaScript不包含keycode-to-keyname对的内置散列。

这在很大程度上是不必要的,因为JS使用与操作系统报告的相同的键码。添加散列只会不必要地影响性能。

程序不需要知道密钥的名称,它只需要知道要采取什么操作。

而不是写这样的代码:

if (e.keyCode === customKeyList.UP)
{
  doUp();
}

你可以简单地设置你自己的哈希操作:

//before the event
actions = {
  '38': function () {
    //do UP stuff here
  },
  '40': function () {
    //do DOWN stuff here
  }
};
//during the event
if (actions[e.keyCode]) {
  actions[e.keyCode]();
}

在这个例子中,没有必要让计算机知道密钥的名称,但是为了方便起见,这样写可能会有用:

actions[keys.UP] = function () {...};
actions[keys.DOWN] = function () {...};

但是你需要定义你自己的keycode-to-keyname配对对象。


我最近发现jQuery UI有一些常用的键码列表($.ui.keyCode):

keyCode: {
    ALT: 18,
    BACKSPACE: 8,
    CAPS_LOCK: 20,
    COMMA: 188,
    COMMAND: 91,
    COMMAND_LEFT: 91, // COMMAND
    COMMAND_RIGHT: 93,
    CONTROL: 17,
    DELETE: 46,
    DOWN: 40,
    END: 35,
    ENTER: 13,
    ESCAPE: 27,
    HOME: 36,
    INSERT: 45,
    LEFT: 37,
    MENU: 93, // COMMAND_RIGHT
    NUMPAD_ADD: 107,
    NUMPAD_DECIMAL: 110,
    NUMPAD_DIVIDE: 111,
    NUMPAD_ENTER: 108,
    NUMPAD_MULTIPLY: 106,
    NUMPAD_SUBTRACT: 109,
    PAGE_DOWN: 34,
    PAGE_UP: 33,
    PERIOD: 190,
    RIGHT: 39,
    SHIFT: 16,
    SPACE: 32,
    TAB: 9,
    UP: 38,
    WINDOWS: 91 // COMMAND
}

您可以通过捕获按键并检查事件对象来找到大多数浏览器的键绑定-它可能有一组虚拟键绑定。

Mozilla返回这个集合-

Property    Value
CANCEL=     3
HELP=   6
BACK_SPACE=     8
TAB=    9
CLEAR=  12
RETURN=     13
ENTER=  14
SHIFT=  16
CONTROL=    17
ALT=    18
PAUSE=  19
CAPS_LOCK=  20
KANA=   21
HANGUL=     21
JUNJA=  23
FINAL=  24
HANJA=  25
KANJI=  25
ESCAPE=     27
CONVERT=    28
NONCONVERT=     29
ACCEPT=     30
MODECHANGE=     31
SPACE=  32
PAGE_UP=    33
PAGE_DOWN=  34
END=    35
HOME=   36
LEFT=   37
UP=     38
RIGHT=  39
DOWN=   40
SELECT=     41
PRINT=  42
EXECUTE=    43
PRINTSCREEN=    44
INSERT=     45
DELETE=     46
0=  48
1=  49
2=  50
3=  51
4=  52
5=  53
6=  54
7=  55
8=  56
9=  57
SEMICOLON=  59
EQUALS=     61
A=  65
B=  66
C=  67
D=  68
E=  69
F=  70
G=  71
H=  72
I=  73
J=  74
K=  75
L=  76
M=  77
N=  78
O=  79
P=  80
Q=  81
R=  82
S=  83
T=  84
U=  85
V=  86
W=  87
X=  88
Y=  89
Z=  90
CONTEXT_MENU=   93
SLEEP=  95
NUMPAD0=    96
NUMPAD1=    97
NUMPAD2=    98
NUMPAD3=    99
NUMPAD4=    100
NUMPAD5=    101
NUMPAD6=    102
NUMPAD7=    103
NUMPAD8=    104
NUMPAD9=    105
MULTIPLY=   106
ADD=    107
SEPARATOR=  108
SUBTRACT=   109
DECIMAL=    110
DIVIDE=     111
F1=     112
F2=     113
F3=     114
F4=     115
F5=     116
F6=     117
F7=     118
F8=     119
F9=     120
F10=    121
F11=    122
F12=    123
F13=    124
F14=    125
F15=    126
F16=    127
F17=    128
F18=    129
F19=    130
F20=    131
F21=    132
F22=    133
F23=    134
F24=    135
NUM_LOCK=   144
SCROLL_LOCK=    145
COMMA=  188
PERIOD=     190
SLASH=  191
BACK_QUOTE=     192
OPEN_BRACKET=   219
BACK_SLASH=     220
CLOSE_BRACKET=  221
QUOTE=  222
META=   224

来自Google Closure库的keycodes.js和keyhandler.js类有许多关键代码的列表和关于不同浏览器差异的有用注释

相关文章: