空格键的扫描码是什么?

空格键的扫描码是什么?

我正在尝试弄清楚空格键的扫描码是什么。

  • 根据USB 规格(第 54 页)现在是 44
  • 根据,showkeyevtest是57
  • 根据xev它的65
  • 根据键盘状态视图是 32(感谢 DrMoishe!)

那么到底是哪一个呢?为什么所有这些数字都不同?

答案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 键盘的资源。

相关内容