谁动了我的快捷键

我一直在使用 NotePad++ 作为简单的编辑工具,之前有遇到过在测试机上安装了这个软件之后在文件中查找的快捷键 Shift+Ctrl+F 失效的问题。这次正好再一次遇到了,于是开启了研究之旅。

  1. 实验NotePad++中指定 Shift+Ctrl+H 作为快捷键,实践证明这个组合是可以正常工作的。

2.根据网上推荐使用OpenArk 进行检查,无法找到 Shift+Ctrl+F 这个快捷键

根据【参考1】的介绍还可以通过 Spy++ 来进行分析,于是尝试之

1.监视窗口

2.选中最上的面的窗口,Windows的设计消息是一级一级传下去的,最上层收到后如果处理不了会 pass 给下面,我们直接在最上层监听看看谁收了按键没有下发

3.使用菜单上的 “Log Messages”功能

4.勾选 All Windows in System

5.打开之后默认是全选的,我们需要只监视 KeyBoard 消息

改成这样

6.在桌面上按下  Shift+Ctrl+F ,可以看到先按下 Ctrl 后按下 Shift ,最后是 F 键

7. z这个快捷键被 6095A 吃掉了,在上面点右键,查看 Properties

8.看到下面这个界面,点 Windows Handle 给出的参考

.

9.跳到 Process Tab 页面,先点击Synchronize按钮,再点 Process ID

10.跳转到 General Tab 页面 ,这里可以看到是 Explorer

11.接下来在做了一个实验:在任务管理器中干掉了这个进程,然后重新启动了一次 Notepad++, 发现快捷键可以工作了。这就说明不是第三方软件,而是系统设定的快捷键引起的问题。最终经过查找在输入法设置中简体中文和繁体的切换中有如下设置,关掉之后就 OK 了。

再进一步观察, NotePad++ 只有在打开中文输入法的情况下才会出现这个问题。一般情况下,我测试电脑因为使用英文系统(默认没有中文输入法),所以大多数情况下是没有问题的。这就是为什么有时候会遇到问题,有时候不会。

从这次可以得到如下两个经验:

  1. Windows 拼音输入法默认使用 Ctrl+Shift+F快捷键可能导致冲突;
  2. OpenArk 有局限性,不能举出系统中的所有快捷键

参考:

1. https://zhuanlan.zhihu.com/p/704643938

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注