对于上下文:这是在Xbox One中运行的JavaScript应用程序。所有这一切都通过Xbox的虚拟键盘发生。请记住,既然我已经弄清楚事件是如何被解雇的,那就不再重要了,只是如何同时处理这两个事件。
这不是真正的多个键,发生的事情是当我打开我的应用程序的CAPS时,我一次得到两个事件键:shift
以及我实际按下的任何键。这导致的问题是,我想要拼写的任何内容似乎都会改变,并且我的输入框中没有显示任何键。
我目前有一个全局功能,可以处理应用中的所有特殊事件,我想从那里处理这个问题,但我不确定如何处理这个问题。
以下是我目前的情况:
// this is the global function where I would like to solve the issue
onStartup(function () {
var $html = $('html')
$html.on('keydown', function (evt) {
if (evt.isDefaultPrevented()) return
console.warn('key being pressed:', evt.keyCode)
if (evt.keyCode === 16) { // Note: 16 is shift's keycode
// do something to prevent shift from overriding the actual key I want to press.
return
}
})
})
当我按下没有打开CAPS的密钥时,请说出a
,其keyCode为65,我们有以下输出:
按键:65
但是,如果我尝试使用大写a
(或A
),则会发生以下情况:
按下键:16
按键:65
我该如何阻止阻止我实际输入大写字母?
答案 0 :(得分:1)
我明白了!我所要做的就是在shift
被解雇时,拨打evt.stopImmediatePropagation()
。
基本上,对于我的代码:
// ...
if (keycodeControls.is('shift', evt)) {
evt.stopImmediatePropagation()
}