CodeMirror有很多方法可以改变和定义键绑定,但我没有找到改变单个键的方法,因此它的事件在keyup
而不是keypress
上被触发。
我正在寻找的是以下场景:
我的tab
键将是键盘快捷键的修饰键,例如我可以tab+q
,而我知道如何在CodeMirror中附加事件,以便在命中该组合时触发(事件keyHandled
),我在努力改变按键时的默认行为。
tab
我希望keypress
被解雇tab
时,不会发生任何事情tab
和一个定义的键被命中并保持时(例如tab+q
),该绑定的事件应该触发 - 但只有一次,到目前为止,即使我设法捕获{{1事件并按住键,它只会多次触发事件tab
,则应插入标签字符有关如何处理此问题的任何想法?除了攻击CodeMirror本身以外还有什么?
JSFiddle的例子很棒。
答案 0 :(得分:2)
使用内置的键盘映射系统无法做到这一点,因为它被定义为仅使用标准修饰键(shift,ctrl,alt,meta)。
但是您可以自己跟踪Tab的位置,并添加一些额外的键绑定,这些绑定仅在选项卡关闭时生效。这并不完美(如果在您的文档没有焦点时按下或释放标签,则您不会注意到)。有关示例,请参阅http://jsbin.com/ihunin/428/。返回CodeMirror.Pass是密钥处理程序指示它什么也不做的一种方式,而密钥的其他处理程序可以转一圈。