检测MAC javascript中的命令键

Detect command key in MAC javascript

本文关键字:命令 MAC javascript 检测      更新时间:2024-02-04

我正在监听Extjs面板上的keydown事件以执行一些操作。当我按下ctrl+c、ctrl+v时,我复制、粘贴SVG对象。这适用于Windows操作系统和所有浏览器。但我对MAC有意见。我想检测MAC中的+C/+V。简而言之,我想检测MAC中的密钥。怎么做?有什么帮助吗?

getKeyboardAction :function(event){
    var isCtrlKeyPressed = event.ctrlKey;
    var isCopy = (isCtrlKeyPressed && event.keyCode == 67)?true:false;
    var isPaste = (isCtrlKeyPressed && event.keyCode == 86)?true:false;
    var isDuplicate = (isCtrlKeyPressed && event.keyCode == 68)?true:false;
    var isDelete = (event.keyCode ==46)?true:false;
    var isLeftArrow = (event.keyCode ==37)?true:false;
    var isUpArrow = (event.keyCode ==38)?true:false;
    var isRightArrow = (event.keyCode ==39)?true:false;
    var isDownArrow = (event.keyCode ==40)?true:false;
    var isEsc = (event.keyCode ==27)?true:false;
    var keyboardAction = null;
    if(isCopy)            return 'COPY';
    else if(isPaste)      return 'PASTE';
    else if(isDuplicate)  return 'DUPLICATE';
    else if(isDelete)     return 'DELETE';
    else if(isLeftArrow)  return 'MOVELEFT';
    else if(isUpArrow)    return 'MOVEUP';
    else if(isRightArrow) return 'MOVERIGHT';
    else if(isDownArrow)  return 'MOVEDOWN';
    else if(isEsc)        return 'ESCAPE';
    return null;
},

感谢

为了在OSX上可靠地捕获CMD键,您需要监听keydownkeyup事件,而不是keypress(它不会触发)。为了创建和捕获快捷方式,我会在keydown上将任何keyCode推入Array,并在keyup上删除相同的代码。

var pressedKeys = [ ];
$( document.body ).on('keydown', function( event ) {
    pressedKeys.push( event.which || event.keyCode );
});
$( document.body ).on('keyup', function( event ) {
    var pos;
    if( (pos = Private.pressedKeys.indexOf( event.which || event.keyCode )) > -1 ) {
        Private.pressedKeys.splice( pos, 1 );
    }
});