浏览器密钥代码列表?

时间:2011-10-08 02:54:11

标签: javascript keyboard cross-browser

我知道这可能是徒劳的,但我想知道是否有答案。我正在制作一个HTML5游戏,我正在尝试获得键盘输入。请告诉我有人知道谷歌没有。希望至少它会强调需要更多跨浏览器的键盘事件和密钥代码。

请告诉我javascript api中有一些列出每个键的键码的对象。如果没有,为什么还没有完成,只要能够获取密钥的代码将使我们的工作变得更加容易。不再测试每个浏览器/操作系统的不一致性。

如果不是(这可能是徒劳的),有没有办法将默认密码重新定义为我们自己的自定义密钥代码?

我不知道为什么还没有做更多工作才能让这更方便?

4 个答案:

答案 0 :(得分:12)

我发现this页面非常有帮助。 quirks mode也有一篇很好的文章。事实是,有浏览器的不一致性和jQuery这样的javascript框架帮助。

答案 1 :(得分:7)

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
}

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

Google Closure库中的keycodes.jskeyhandler.js类列出了许多关键代码和有关不同浏览器差异的有用评论。