javascript - KeyboardEvent:按下“Shift”时如何获取数字键代码?
问题描述
在我的应用程序中,我需要确定用户是否按下了任何数字键(主键盘或小键盘)以及是否同时按下了 shift/ctrl/alt 键。
我需要这个,因为按下的键代表数组中的数字(从 0 到 9),它应该用这个数字触发一个动作。所以我的逻辑很简单:
@HostListener('document:keydown', ['$event'])
handleKeydownEvent(event: KeyboardEvent) {
let index = Number(event.key);
if (isNaN(index)) {
// skip, for now
}else{
doAction(index);
}
}
我喜欢它,因为它的可读性和透明度。
当我还需要处理“Alt”或“Ctrl”时,事情似乎很简单。在这些情况下,event.key 仍然表示按下的键的数字键值(如“1”或“2”)(我可以检查 event.ctrlKey/event.altKey。
但是当我需要考虑“Shift”键时,事情变得越来越复杂。在这种情况下, event.key 不代表数字键。相反,它代表其他字符,例如“!” 或者 '@'。
我想我可以通过构建地图将其转换为关键代码,但我需要处理键盘布局,因为在某些情况下 Shift+2 最终会成为'@',在其他情况下 - '"'(俄罗斯布局 vs英语)。
按下“Shift”按钮时检测按键代码的正确和简单方法是什么?
谢谢!
解决方案
选项:
- UIsng event.which:它返回数值,但已弃用。
- 你创建地图的想法很酷。要创建地图,请使用“event.code”,而不是使用“event.key”。
EVENT.CODE 是您的救星。
推荐阅读
- vim - 如何在文档的最开头启动 Vim 语法区域,同时在同一位置允许关键字匹配?
- postgresql - 在 postgresql 中喜欢和不喜欢
- python - PyQt5 突出显示选定的 TreeWidget 单元格
- arrays - 获取 json 对象数组并映射到模型类 Laravel
- python - 如何使用 Python 将注册表单连接到 MySQL?
- node.js - express 是怎么知道这个路由的?
- python - execute和execute_script selenium函数python有什么区别
- docker - 在 golang 中导入存档/tar 时 docker run 失败
- applescript - Applescript选择滚动区域中的所有复选框
- java - 当一个项目依赖于其他项目时如何使用gradle构建jar