You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Macintosh与Windows的keyCode是否一致?JS游戏跨平台按键适配疑问

Windows与Mac下JavaScript键盘事件keyCode的差异

首先明确:Windows和Mac系统中,JavaScript键盘事件的keyCode并不完全一致,具体差异主要体现在特殊功能键上:

  • 普通字符键(字母、数字):大部分场景下keyCode值是统一的,比如字母A的keyCode都是65,数字1都是49。
  • 特殊功能键:差异很明显,举几个常见的例子:
    • Windows的Ctrl键keyCode为17,Mac的Command键(⌘)keyCode是91;
    • Windows的Alt键keyCode是18,Mac的Option键(⌥)keyCode同样是18,但Mac的Command键才是和Windows Ctrl功能对应的按键,这点容易混淆;
    • Mac独有的Fn键,多数浏览器要么不触发onkeydown/onkeyup事件,要么返回非标准的keyCode值;

另外要注意,keyCode已经是被标准废弃的API,现在更推荐使用key或code属性来处理键盘事件,这两个属性的跨平台兼容性更稳定:

  • key属性返回按键对应的实际字符或功能名称(比如按Shift+A返回"A",按Ctrl返回"Control");
  • code属性返回按键的物理位置标识(比如键盘左侧的Ctrl键返回"ControlLeft",不管系统差异,同一个物理按键的code值一致);

你可以用这段简单的代码来测试不同平台的按键属性:

document.addEventListener('keydown', (event) => {
  console.log(`key: ${event.key}, code: ${event.code}, keyCode: ${event.keyCode}`);
});

内容的提问来源于stack exchange,提问作者Newcolator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:55:19