如何实现用户自定义的键盘快捷键(在javascript/网络上)

如何实现用户自定义的键盘快捷键(在javascript/网络上),javascript,keyboard-shortcuts,Javascript,Keyboard Shortcuts,标题说明了其中的大部分。我想要一个javascript/html解决方案,了解如何创建持久的、用户可配置的键盘快捷键侦听器(如果您有偏好,还需要考虑如何真正持久化它们) 这看起来既简单又有点棘手:) 谢谢 如果您想让用户获得诸如“Control”+(…)之类的快捷方式,您只需捕获按下的键,因此检查是否在按下这些键的情况下按下了“Control”来执行操作 这是一个简单而糟糕的例子: var Pressed={ CTRL:false, Spacebar:false },Keyboard

标题说明了其中的大部分。我想要一个javascript/html解决方案,了解如何创建持久的、用户可配置的键盘快捷键侦听器(如果您有偏好,还需要考虑如何真正持久化它们)

这看起来既简单又有点棘手:)


谢谢

如果您想让用户获得诸如“Control”+(…)之类的快捷方式,您只需捕获按下的键,因此检查是否在按下这些键的情况下按下了“Control”来执行操作

这是一个简单而糟糕的例子:

var Pressed={
   CTRL:false,
   Spacebar:false
},Keyboard={ // an object containing Keyboard keys code
   CTRL:17,
   Spacebar:32
};
window.onkeydown=function(e){ // user started pressing an key (event)
   var Key=(e.keyCode||e.which||e.key); // capture key pressed from event
   if(Key==Keyboard.CTRL){ // CTRL is pressed
      Pressed.CTRL=true
      Pressed.Spacebar=false // CTRL has to be pressed before than Spacebar
   }else if(Key==Keyboard.Spacebar){ // Spacebar is pressed
      Pressed.Spacebar=true
   }
   if(Pressed.CTRL&&Pressed.Spacebar){ // Case CTRL+Spacebar are pressed
      e.preventDefault(); // prevent Opera from quitting from the page
      console.log("CTRL+Spacebar were pressed.")
   }
},
window.onkeyup=function(e){ // event when an key is released
   var Key=(e.keyCode||e.which||e.key); // capture key released from event
   if(Key==Keyboard.CTRL){ // CTRL is released
      Pressed.CTRL=false
   }else if(Key==Keyboard.Spacebar){ // Spacebar is released
      Pressed.Spacebar=false
   }
};

要更新…

您可以尝试以下方法:

出于演示目的,我刚刚记录了if
Alt
Ctrl
Shift
+“键”,如果键是在快捷方式中定义的,则打印
特殊操作
否则为“正常操作”。我还禁用了输入的关键事件传播,但如果不需要,可以删除此部分

代码
(功能键盘记录器(){
var isCtrlPressed=false;
var isAltPressed=false;
var=false;
var shortcutKeys=[
13,//输入
32,//空间
37,//左箭头
38,//向上箭头
39,//右箭头
40,//向下箭头
90,//z
]
函数registerEvents(){
document.onkeydown=函数(事件){
var keyCode=event.keyCode?event.keyCode:event.which;
如果(keyCode>=16&&keyCode=0){
控制台日志(“特别行动”);
}否则{
控制台日志(“正常操作”);
}
}
}
document.onkeyup=函数(事件){
var keyCode=event.keyCode?event.keyCode:event.which;

如果(keyCode>=16&&keyCode,我会查看
keypress
事件(可能在
document
上),以便在整个页面上收听键盘事件,并且为了存储首选项,您可以使用localStorage(不用于敏感数据,但适用于键盘配置)或简单的cookie(如果设置不太复杂)。