javascript - 使用 JavaScript 检测 AltGr 键

标签 javascript jquery keyboard

如何阐明 ALT+CTRLALTGR 按键?

我在此处找到此代码作为可能的解决方案,但它不起作用:

if (event.ctrlKey && event.altKey) {

}

此代码适用于 alt+ctraltGr

我有这样的情况:对于alt+ctrl+e(例如e,没关系)我想要一件事并且对于 altGr+e 另一个,我该怎么做?

如果有人有什么想法,请告诉我。

最佳答案

您可以通过 location 的值检测按下哪个键(从右键或左键)属性(property) event目的。如果 location 属性的值为 1 ( e.location=1 ),则按下左键。如果值为 2,则按下右键。

我在这里为 RightAlter+RightCtrl+<any_valid_key> 提供了我的代码

检查这个例子

var isRightAltKey=false;
var isRightCtrlKey=false;
var validKeys=['a','s','d','f','g']; //keep empty array if no need to check key


document.addEventListener("keydown", function(e) {
  if(e.key=="Alt"){
       // when right Alter pressed make isRightAltKey true 
       isRightAltKey= (e.location==2); 
       
  }
  else if(e.key=="Control"){
      // when right Control pressed make isRightCtrlKey true, 
      //if you need any ctrl key pressed then simply set isRightCtrlKey= true;
       isRightCtrlKey= (e.location==2); 
  }

  // checking both right key is pressed already or not?
  var isRightKeys= isRightAltKey && isRightCtrlKey;
  
  // validate other keys [optional]
  var isValidKey=((typeof validKeys === "undefined") || validKeys.length==0 || validKeys.indexOf(e.key.toLowerCase())>=0);
  
  if (isRightKeys && isValidKey){
    document.getElementById("detect_key").innerHTML = "RightAlt + RightCtrl + "+e.key; 
  }
  else
  {
    document.getElementById("detect_key").innerHTML="";
  }
}, false);

document.addEventListener("keyup", function(e) {
  if(e.key=="Alt"){
       // when right Alter released make isRightAltKey false
       isRightAltKey= false; 
       
  }
  else if(e.key=="Control"){
       // when right Control released make isRightCtrlKey false
       isRightCtrlKey= false; 
  }
}, false);
<div id="detect_key"></div>

为什么要附加 keyup 事件监听器?

这里我们必须检测按下 Ctrl 和 Alt 键时的键位置(在 keydown 事件上)。我们必须将它存储在标志变量中并使其为真。释放键时(在 keyup 事件上)必须标记为 false。否则,这些标志始终保持为真。在下一个按键上它永远是真的

关于javascript - 使用 JavaScript 检测 AltGr 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158262/

相关文章:

javascript - 如何检查 mithril.js 是否已加载?

javascript - 如何加密发送到服务器的http请求?

jquery - 将密码字段中的默认值显示为明文

ios - 在 iwatch 中触摸 UITextField 外部时关闭键盘

sql - 是否可以禁用 SQL Server Management Studio 2008 中的 'shift+space' 快捷方式?

javascript - 过滤 Angular Table td 时出现问题

javascript - antd 表操作和 onrow 函数

javascript - 如何保持导航菜单链接的样式持久?

jquery - 从 SWF 上传按钮中删除虚线轮廓

android - 如何在键盘上的xml中为功能键设置不同的背景?