如何从 JavaScript 中的 char 获取 make 代码?
How to get make code from char in JavaScript?
我正在为节点 from this library 开发 v86 模拟器。我需要发送一些键盘输入,但我首先需要将其转换为 make code。有什么 JavaScript 函数可以做到吗?
a => 0x1E
b => 0x30
c => 0x2E
Here is the table of that codes:
Key Make Break Key Make Break
Backspace 0E 8E F1 3B BB
Caps Lock 3A BA F2 3C BC
Enter 1C 9C F3 3D BD
Esc 01 81 F4 3E BE
Left Alt 38 B8 F7 41 C1
Left Ctrl 1D 9D F5 3F BF
Left Shift 2A AA F6 40 C0
Num Lock 45 C5 F8 42 C2
Right Shift 36 B6 F9 43 C3
Scroll Lock 46 C6 F10 44 C4
Space 39 B9 F11 57 D7
Sys Req (AT) 54 D4 F12 58 D8
Tab 0F 8F
Keypad Keys Make Break
Keypad 0 (Ins) 52 D2
Keypad 1 (End) 4F CF
Keypad 2 (Down arrow) 50 D0
Keypad 3 (PgDn) 51 D1
Keypad 4 (Left arrow) 4B CB
Keypad 5 4C CC
Keypad 6 (Right arrow) 4D CD
Keypad 7 (Home) 47 C7
Keypad 8 (Up arrow) 48 C8
Keypad 9 (PgUp) 49 C9
Keypad . (Del) 53 D3
Keypad * (PrtSc) 37 B7
Keypad - 4A CA
Keypad + 4E CE
Key Make Break Key Make Break
A 1E 9E N 31 B1
B 30 B0 O 18 98
C 2E AE P 19 99
D 20 A0 Q 10 90
E 12 92 R 13 93
F 21 A1 S 1F 9F
G 22 A2 T 14 94
H 23 A3 U 16 96
I 17 97 V 2F AF
J 24 A4 W 11 91
K 25 A5 X 2D AD
L 26 A6 Y 15 95
M 32 B2 Z 2C AC
Key Make Break Key Make Break
1 02 82 - 0C 8C
2 03 83 = 0D 8D
3 04 84 [ 1A 9A
4 05 85 ] 1B 9B
5 06 86 ; 27 A7
6 07 87 ' 28 A8
7 08 88 ` 29 A9
8 09 89 \ 2B AB
9 0A 8A , 33 B3
0 0B 8B . 34 B4
/ 35 B5
是的。我可以把它改写成JavaScript,但是还有一些其他的键盘键,需要很长时间才能完成,所以这就是我问这个的原因。
这里的所有答案和评论都完全没有抓住要点。 Right Shift 按下没有 Unicode 代码,Right Shift 释放也没有 Unicode 代码。同样,您不能通过按 Right Shift 键并释放 Print Screen 来生成字符串来解析它并打印代码。你怎么可能在字符串中放一个 Right Shift 释放?显然这里有些人的想象力比我大
断码与可以打印在屏幕上或存储在字符串中的字符无关。这些是键盘发送来表示按键按下和释放的代码。然后操作系统可以将这些代码翻译成字符,但不是直接翻译。例如,如果按下一个 shift 但没有释放,然后检测到对应于在 QWERTY 键盘上按下字母 Q 的代码,则操作系统可能会将其解释为大写字母 Q(除非大写锁定打开)并且如果它没有检测到字母 Q 的释放,它也可能会开始自动重复它,直到它检测到字母 Q 的释放。但是,在 QWERTY 键盘上为字母 Q 发送的相同代码也会为字母 A 发送在 AZERTY 键盘上。钥匙上印的什么并不重要,重要的是钥匙的物理位置和电气连接。
现在,您可以查看 npm 上的一些模块:
- https://www.npmjs.com/search?q=keycodes
- https://www.npmjs.com/search?q=keypress
- https://www.npmjs.com/search?q=keyboard
但我怀疑您是否真的会找到有用的东西,因为您通常不会使用 JavaScript 或 Node.
在如此低级别的键盘硬件上工作
如果您在 npm 上找不到任何有用的东西,并且最终重写了 JavaScript 中包含的 table,那么请考虑在 npm 上发布它,以便其他人可以使用它。
更新
我刚找到这个模块:
它似乎包含了您需要的一些代码。您也许可以从其源代码中获取它。
我正在为节点 from this library 开发 v86 模拟器。我需要发送一些键盘输入,但我首先需要将其转换为 make code。有什么 JavaScript 函数可以做到吗?
a => 0x1E
b => 0x30
c => 0x2E
Here is the table of that codes:
Key Make Break Key Make Break
Backspace 0E 8E F1 3B BB
Caps Lock 3A BA F2 3C BC
Enter 1C 9C F3 3D BD
Esc 01 81 F4 3E BE
Left Alt 38 B8 F7 41 C1
Left Ctrl 1D 9D F5 3F BF
Left Shift 2A AA F6 40 C0
Num Lock 45 C5 F8 42 C2
Right Shift 36 B6 F9 43 C3
Scroll Lock 46 C6 F10 44 C4
Space 39 B9 F11 57 D7
Sys Req (AT) 54 D4 F12 58 D8
Tab 0F 8F
Keypad Keys Make Break
Keypad 0 (Ins) 52 D2
Keypad 1 (End) 4F CF
Keypad 2 (Down arrow) 50 D0
Keypad 3 (PgDn) 51 D1
Keypad 4 (Left arrow) 4B CB
Keypad 5 4C CC
Keypad 6 (Right arrow) 4D CD
Keypad 7 (Home) 47 C7
Keypad 8 (Up arrow) 48 C8
Keypad 9 (PgUp) 49 C9
Keypad . (Del) 53 D3
Keypad * (PrtSc) 37 B7
Keypad - 4A CA
Keypad + 4E CE
Key Make Break Key Make Break
A 1E 9E N 31 B1
B 30 B0 O 18 98
C 2E AE P 19 99
D 20 A0 Q 10 90
E 12 92 R 13 93
F 21 A1 S 1F 9F
G 22 A2 T 14 94
H 23 A3 U 16 96
I 17 97 V 2F AF
J 24 A4 W 11 91
K 25 A5 X 2D AD
L 26 A6 Y 15 95
M 32 B2 Z 2C AC
Key Make Break Key Make Break
1 02 82 - 0C 8C
2 03 83 = 0D 8D
3 04 84 [ 1A 9A
4 05 85 ] 1B 9B
5 06 86 ; 27 A7
6 07 87 ' 28 A8
7 08 88 ` 29 A9
8 09 89 \ 2B AB
9 0A 8A , 33 B3
0 0B 8B . 34 B4
/ 35 B5
是的。我可以把它改写成JavaScript,但是还有一些其他的键盘键,需要很长时间才能完成,所以这就是我问这个的原因。
这里的所有答案和评论都完全没有抓住要点。 Right Shift 按下没有 Unicode 代码,Right Shift 释放也没有 Unicode 代码。同样,您不能通过按 Right Shift 键并释放 Print Screen 来生成字符串来解析它并打印代码。你怎么可能在字符串中放一个 Right Shift 释放?显然这里有些人的想象力比我大
断码与可以打印在屏幕上或存储在字符串中的字符无关。这些是键盘发送来表示按键按下和释放的代码。然后操作系统可以将这些代码翻译成字符,但不是直接翻译。例如,如果按下一个 shift 但没有释放,然后检测到对应于在 QWERTY 键盘上按下字母 Q 的代码,则操作系统可能会将其解释为大写字母 Q(除非大写锁定打开)并且如果它没有检测到字母 Q 的释放,它也可能会开始自动重复它,直到它检测到字母 Q 的释放。但是,在 QWERTY 键盘上为字母 Q 发送的相同代码也会为字母 A 发送在 AZERTY 键盘上。钥匙上印的什么并不重要,重要的是钥匙的物理位置和电气连接。
现在,您可以查看 npm 上的一些模块:
- https://www.npmjs.com/search?q=keycodes
- https://www.npmjs.com/search?q=keypress
- https://www.npmjs.com/search?q=keyboard
但我怀疑您是否真的会找到有用的东西,因为您通常不会使用 JavaScript 或 Node.
在如此低级别的键盘硬件上工作如果您在 npm 上找不到任何有用的东西,并且最终重写了 JavaScript 中包含的 table,那么请考虑在 npm 上发布它,以便其他人可以使用它。
更新
我刚找到这个模块:
它似乎包含了您需要的一些代码。您也许可以从其源代码中获取它。