【问题标题】:Keyboard combination shortcuts键盘组合快捷键
【发布时间】:2013-08-13 21:08:30
【问题描述】:

Keymaster 是一个简单的微型库,用于在 Web 应用程序中定义和调度键盘快捷键。”

有没有很好的方法来做多键键盘组合。例如,在 Gmail 中,按 g 后紧跟 i 会将您带到您的收件箱。如果 keymasterjs 不支持它,那么是否有一种雄辩的方式来做到这一点(我可能会 fork keymaster 并添加此功能)。

Keymaster 没有依赖项。我很想保持这种状态...谢谢!

【问题讨论】:

  • @bfavaretto,你能给我一个“将密钥添加到缓冲区”的好方法的例子吗?
  • 将我的评论转换为答案,我使用数组作为缓冲区。

标签: javascript keyboard-shortcuts keymasterjs


【解决方案1】:

我不知道 keymaster,但您可以使用按键事件处理程序中的计时器 (setTimeout) 轻松完成此操作。不要立即对按键进行操作,而是将按键添加到缓冲区中,然后等待第二个按键,直到超时到期。

在代码中,应该是这样的:

var keyBuffer = [],
    timer;

document.addEventListener('keypress', function(e) {
    // Add current key to buffer
    keyBuffer.push(e.which);

    // Cancel previous timer
    clearTimeout(timer);

    // Set new timer
    timer = setTimeout(function() {

        // Pass a *copy* of the buffer into another function
        reactOnKey(keyBuffer.slice(0));

        // Clear buffer
        keyBuffer.length = 0;
    }, 1000)
}, false);


function reactOnKey(buffer) {
   console.log(buffer);   
}

http://jsfiddle.net/pGdsR/

【讨论】:

  • 工作,太棒了。我现在看看能不能把它输入 Keymasterjs :)
猜你喜欢
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多