快捷键的keyup键盘消息问题

问题场景:

  • 在Listary里设置了“动作” “用Notepad++编辑”,快捷键是Alt+E
  • 我在用Notepad++写代码,需要打开一个文件,就用快捷键呼出Listary的全局搜索框
  • 输入文件名,选中了文件,然后按Alt+E编辑它

期待结果:

  • Notepad++打开此文件,且进入编辑模式,可以输入文字

现在的问题:

  • Notepad++打开此文件,且进入平时按下-放开“Alt”键后的状态,第一个菜单项“文件(&F)”获得焦点
  • 此时必须再“按下-放开”Alt键,才能使Notepad++的编辑区域获取焦点

分析:

  • 测试在搜索框里长按Alt+E不放开,发现Listary立即调用了Notepad++
  • 怀疑是Listary调用得太早了,而且调用后立即关闭了搜索框,使得Alt的keyup消息没被Listary接收,转给之后被激活的窗口了

我觉得可以试试改成:搜索框在keyup事件里判断是否“当前up的是E,且Alt键仍被按下”,然后记录下动作,等待所有此快捷键中的控制键(Alt / 可能的Ctrl)都被释放,才执行此动作。

作者辛苦了~

感谢反馈!Listary的快捷键处理因为涉及到其他程序所以十分复杂。例如当Listary从资源管理器中弹出时,如果不在E键按下时立即响应快捷键,则E就会被资源管理器处理。我仔细研究下有没有好的解决方案。