Can javascript tell the difference between left and right shift key?

不羁的心 提交于 2019-11-27 08:51:58

In newer browsers supporting DOM3 you can use event.location to check the location.

In the DOM3 spec, there are 4 constants defined for location, DOM_KEY_LOCATION_STANDARD, DOM_KEY_LOCATION_LEFT, DOM_KEY_LOCATION_RIGHT, andDOM_KEY_LOCATION_NUMPAD.

In this case, you can do:

if (event.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT){

} else if (event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT){

}
MattG

Internet explorer is capable of distinguishing left and right shift with the shiftLeft property:

shiftLeft property (event)

Otherwise, they are indistinguishable.

The easiest way to do it

$(document).ready(function(){
  $("html").keydown(function(e) {

      if (e.shiftKey) {
         if (event.location == 1) console.log('left shift');
         if (event.location == 2) console.log('right shift');
      }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Note: You have to click the inside white space when you run code snippet to activate keyboard keys. This is tested in Chrome and Safari.

You can use event.code (the physical keyboard string) instead of event.key (the numeric ascii value).

event.code MDN docs

The KeyboardEvent.code property represents a physical key on the keyboard (as opposed to the character generated by pressing the key).

If you scroll down to "Code values" at the bottom, you can find the two distinct shift keys:

"ShiftLeft", "ShiftRight"

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!