答案1
对于 USB 和笔记本电脑键盘,空格键的扫描码是 44。
那么这些其他数字从何而来?在 USB 出现之前,PS/2 键盘的扫描码根据键盘使用的“扫描码集”而不同(来源):
- 根据 PS/2 扫描码集 1 的空格键:
57
- 根据 PS/2 扫描码集 2 和 3 的空格键:
41
为了消除这些差异,操作系统将扫描码转换为更通用的键代码,无论使用 USB 还是 PS/2 键盘,这些操作都相同。但是,不同的操作系统执行的操作不同:
- 空格键的 Windows 键代码:
32
- MacOS 空格键的键码:
49
- Linux 空格键的键代码:
57
请注意,Linux 中空格键的键码是 57,恰好与 PS/2 扫描码集 1 相同(甚至对于 USB 键盘也是如此!)。但是,Linux 还有一个名为 X 的抽象层,它使用自己的一组键码。X 中空格键的键码是 65。
有关 PS/2 键盘的更多背景信息,请访问OSDev 维基或观看本·伊特 (Ben Eater) 拍摄的这段视频关于 PS/2 协议。我已将此答案设为社区 wiki,希望其他人能够贡献更多资源,特别是针对 USB 键盘的资源。