AppJs键盘快捷键(复制,粘贴,剪贴板,退出,全选...)

时间:2015-01-29 10:51:11

标签: javascript angularjs node.js appjs

我只是使用Node.js和Angular.js构建一个AppJs应用程序,但我无法使键盘快捷键工作。

我有一个菜单工作,但“&”技巧在我的Mac上不起作用:

  var menubar = appjs.createMenu([{
     label:'&File',
     submenu:[{
        label:'&Quit',
        action: function(){
          window.close();
        }
      }]
    },
    {
      label:'&Window',
      submenu:[
        {
          label:'&Fullscreen',
          action:function(item) {
            window.frame.fullscreen();
            console.log(item.label+" called.");
          }
        },
        {
          label:'&Minimize',
          action:function(){
            window.frame.minimize();
          }
        },
        {
          label:'Maximize',
          action:function(){
            window.frame.maximize();
          }
        },
        {
          label:''//separator
        },
        {
          label:'Restore',
          action:function(){
            window.frame.restore();
          }
        }
      ]
    }
  ]);

我要做的另一件事是允许复制/粘贴并选择所有使用CMD + C,CMD + V和CMD + A ......但我找不到办法做到这一点......

我在“准备好”事件(服务器端)中有这个代码,女巫捕获键盘事件,但我不知道如何处理它们:(

window.on('ready', function(){
  window.require = require;
  window.process = process;
  window.module = module;
  window.addEventListener('keydown', function(e){
    // SELECT ALL (CMD+A)
    if (e.keyCode == 65) {
      console.log('SELECT ALL');
    }
    // COPY (CMD+C)
    if (e.keyCode == 67) {
      console.log('COPY');
    }
    // PASTE (CMD+V)
    if (e.keyCode == 86) {
      console.log('PASTE');
    }
    if (e.keyIdentifier === 'F12' || e.keyCode === 74 && e.metaKey && e.altKey) {
      window.frame.openDevTools();
    }
  });
});

如果您对此主题有任何了解,请您非常感谢:)

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,可以使用“execCommand”使键盘快捷键工作。

在“ready”事件中,我刚刚添加了命令,如下所示:

window.on('ready', function(){
  window.require = require;
  window.process = process;
  window.module = module;
  window.addEventListener('keydown', function(e){
    // console.log(e.keyCode);
    // SELECT ALL (CMD+A)
    if (e.keyCode == 65) {
      window.document.execCommand('selectAll');
    }
    // COPY (CMD+C)
    if (e.keyCode == 67) {
      window.document.execCommand('copy');
    }
    // EXIT (CMD+M)
    if (e.keyCode == 77) {
      window.frame.minimize();
    }
    // EXIT (CMD+Q or CMD+W)
    if (e.keyCode == 81 || e.keyCode == 87) {
      window.close();
    }
    // PASTE (CMD+V)
    if (e.keyCode == 86) {
      window.document.execCommand('paste');
    }
    // CUT (CMD+X)
    if (e.keyCode == 88) {
      window.document.execCommand('cut');
    }
    if (e.keyIdentifier === 'F12' || e.keyCode === 74 && e.metaKey && e.altKey) {
      window.frame.openDevTools();
    }
  });
});

希望这能有所帮助!