Oh MyUtils

键盘事件代码 - JavaScript键盘事件查看器 在线工具

按下任意键即可实时查看JavaScript键盘事件属性。查看event.key、event.code、keyCode、修饰键状态等 — 100%客户端处理,无数据发送至服务器。

常见问题

什么是键盘事件代码查看器?

键盘事件代码查看器是一个在线工具,当您按下键盘上的任意键时,它会显示JavaScript KeyboardEvent的所有属性。它显示event.key(字符或键名)、event.code(物理键标识符)、event.keyCode(数字代码)、修饰键状态等值。开发者使用此工具在构建键盘交互、游戏、无障碍功能或表单验证时快速查找正确的事件属性值。

如何使用这个键盘事件代码工具?

点击页面顶部的捕获区域,然后按下键盘上的任意键。工具会立即显示该按键的所有事件属性,包括key、code、keyCode、which、location和修饰键状态。您可以使用标签页在keydown、keyup和keypress事件类型之间切换。使用复制按钮复制单个值或将完整事件数据复制为JSON。下方的事件历史记录显示您最近的按键,方便对比。

我的数据安全吗?我的按键会被记录吗?

所有键盘事件捕获都100%在您的浏览器中完成。没有按键、事件数据或任何其他信息会发送到任何服务器。该工具使用原生浏览器KeyboardEvent API,无需外部服务调用。您的按键仅临时存储在浏览器内存中用于历史记录,关闭页面后即被清除。即使在安全敏感的环境中也可以安全使用此工具。

event.key和event.code有什么区别?

event.key表示按下的键的逻辑值,会根据键盘布局和修饰键而变化。例如,按'A'键通常得到key: 'a',按住Shift则得到key: 'A'。event.code表示键盘上的物理键位置,与布局或修饰键无关。同一个物理键始终返回code: 'KeyA'。文本输入处理使用event.key,游戏控制或与布局无关的操作使用event.code。

为什么keyCode、which和charCode被弃用了?

这些属性被弃用是因为它们在不同浏览器和键盘布局之间不一致。event.keyCode在不同操作系统上对同一个键返回不同的数值。现代替代方案是event.key(用于字符值)和event.code(用于物理键)。所有现代浏览器都支持这些新属性,它们在各平台间提供一致且可预测的值。

event.location告诉我什么?

event.location指示键在键盘上的位置。它返回一个数字:大多数键为0(Standard),左Shift或左Ctrl等左侧修饰键为1(Left),右侧修饰键为2(Right),数字键盘上的键为3(Numpad)。当您需要区分左右Shift键,或区分主Enter键和数字键盘Enter键时非常有用。

keydown和keyup事件有什么区别?

keydown在按下键的瞬间触发,如果持续按住键则会重复触发(event.repeat为true)。keyup在释放键时触发一次。已弃用的keypress事件在keydown和keyup之间触发,但仅适用于产生字符值的键(不适用于Shift、Ctrl、方向键等)。在大多数情况下,建议监听keydown事件。

代码示例

// Keyboard Event Handling in JavaScript

// Basic keydown event listener
document.addEventListener('keydown', (event) => {
  console.log('key:', event.key);           // "a", "Enter", "Shift"
  console.log('code:', event.code);         // "KeyA", "Enter", "ShiftLeft"
  console.log('keyCode:', event.keyCode);   // 65, 13, 16 (deprecated)
  console.log('location:', event.location); // 0, 0, 1

  // Modifier key states
  console.log('shiftKey:', event.shiftKey);
  console.log('ctrlKey:', event.ctrlKey);
  console.log('altKey:', event.altKey);
  console.log('metaKey:', event.metaKey);
  console.log('repeat:', event.repeat);
});

// Using event.code for layout-independent controls (e.g., WASD)
document.addEventListener('keydown', (event) => {
  switch (event.code) {
    case 'KeyW': moveForward(); break;
    case 'KeyA': moveLeft(); break;
    case 'KeyS': moveBackward(); break;
    case 'KeyD': moveRight(); break;
    case 'Space': jump(); break;
  }
});

// Detecting modifier combinations
document.addEventListener('keydown', (event) => {
  if (event.ctrlKey && event.key === 's') {
    event.preventDefault();
    saveDocument();
  }
  if (event.metaKey && event.key === 'k') {
    event.preventDefault();
    openCommandPalette();
  }
});

// Extracting full event data as an object
function extractKeyEventData(event) {
  return {
    type: event.type,
    key: event.key,
    code: event.code,
    keyCode: event.keyCode,
    which: event.which,
    charCode: event.charCode,
    location: event.location,
    repeat: event.repeat,
    isComposing: event.isComposing,
    shiftKey: event.shiftKey,
    ctrlKey: event.ctrlKey,
    altKey: event.altKey,
    metaKey: event.metaKey,
  };
}

document.addEventListener('keydown', (event) => {
  const data = extractKeyEventData(event);
  console.log(JSON.stringify(data, null, 2));
});

相关工具