“Pause/Break”键的扫描码是什么?

10

我从这里下载了 "SharpKeys.exe"。它运行得很好。但是我想把 "Pause/Break" 键映射成另一个键,但是这个应用程序无法正确识别该键。 有人知道该键的扫描码吗?谢谢。


我能够完美地使用SharpKeys重新映射它(我发布了一个关于如何做到这一点的答案)。被接受的答案是错误的。它可以完成,而且你不必使用任何其他工具。:) - Vitox
5个回答

18

暂停键是一种非常特殊的非类型化按键,具有不寻常的扫描码(E1 1D 45 E1 9D C5)。这个扫描码太长了,无法使用SharpKeys(或任何使用注册表进行扫描码重映射的程序)进行重新映射,因为该功能仅限于2字节的扫描码。如果您尝试重新映射它,您将只得到前两个字节,并最终重新映射数字键锁定键。这会以各种有趣的方式破坏。

您需要使用另一个程序来进行重映射,例如AutoHotKey。但我不确定这是否实际有效,因为此键非常特殊。

不清楚为什么程序员会想要重新映射暂停/中断键。这是一个非常有用的键,通常在笔记本电脑键盘上痛苦地缺失,在那里您唯一的选择是将另一个键重新映射为Ctrl + Break(扫描码E0 46)。这至少可以让您恢复真正暂停/中断键的部分功能。


2
谢谢。但我认为这个键不是很有用(https://en.wikipedia.org/wiki/Break_key)。所以,我决定重新映射Scroll-Lock键。 - Redick
我不知道OP的使用情况是什么,但我有一个平板电脑键盘,暂停键就在空格键旁边,所以我可以理解有人想将其重新映射为空格键,以防不小心碰到。特别是因为暂停键除了设计不良的游戏和中断执行(我几乎可以100%使用Ctrl-C)之外没有任何用处。 - NH.
1
@NH。当然,那很有道理,但我说的是“程序员”。中断执行是我每天做的事情之一,大约50次左右。在我所知道的大多数Windows调试器中,Ctrl+C都不起作用,但Ctrl+Break可以。你可能可以在Windows的已检查版本中使用F12,但并不是所有开发人员都运行这些版本。 - Cody Gray
嗯,如果你想谈论在Windows上进行调试,我使用的是.NET,所以Visual Studio需要按Shift-F5来停止调试。我认为总是假设每个人都像你一样做事并且“为什么他们会想要做其他事情呢?”这种态度并不好。 (顺便说一下,在Linux中,我认为使用Ctrl-C是一个很好的用途,特别是在shell脚本中) - NH.
你现在如何使用暂停/中断键?我很想了解一下。 - hzh
@huangzonghao 在我熟悉的几乎所有Windows调试器中,Ctrl+Break将会打断当前正在执行的程序,并将您带入调试器。 - Cody Gray

8
我使用SharpKeys完美地重新映射了暂停/中断键!这是我的操作方法:
我也下载了SharpKeys(顺便说一句,它非常棒),起初无法将Pause/Break键更改为其他键(我的情况是想更改为Media:Play/Pause)。
经过一番研究,我找到了这个博客页面:https://www.neox.net/w/2008/02/13/keyboard-remap-pause-break-key-as-del-key/ 在那里,这个人能够只使用序列的前两个字节就重新映射该键。 E11D。(他还搞乱了Del键,这是不必要的)
由于SharpKeys已经是一个很好的工具,我只需下载其代码,并将此键码E1 1D添加到键映射表中,就能够重新映射而无需任何其他修改。

长话短说:

我下载了SharpKeys的源代码,并在其代码文件Dialog_Main.cs中的方法BuildParseTables()中添加了一行m_hashKeys.Add("E1_1D", "-by Vitox: Pause/Break");

之后,我成功地重新映射了Pause/Break键。


SharpKeys的源代码,在修改后
SharpKeys的源代码,在修改后

SharpKeys的界面,在修改后
SharpKeys的界面,在修改后


SharpKeys:https://github.com/randyrants/sharpkeys
顺便说一句,Randy Rants,这是一个很棒的工具。谢谢!


< p >< em >注意:此修改器有效的键盘为Logitech G413,操作系统为Windows 7。


这很棒,但我该如何编译编辑过的代码呢?作为为数不多知道编译实际是什么的人之一,我认为自己很幸运,所以...? - GwenKillerby

4

这是我最近购买的MSI型号,但如果你认为这个键盘很荒谬,请查找华硕TUF Gaming FX705 :D - Bart Az.
ASUS无线键盘的开关按钮位于Del键的位置,所以它们总是看起来很荒谬... - GwenKillerby

4
人们喜欢这个工具,但需要明确的是,暂停/中断键是一个特殊的键,不容易重新映射。Windows技术只支持双字节启用的扫描码进行键位重映射。一些较新的键是三字节的,这些键将被删除。暂停/中断键是一个六字节的扫描码。
通过重新映射第一部分,您可能已经成功地重新映射了暂停/中断键,但您也重新映射了以E1 1D开头的每个其他键。在您的键盘上,这可能没有关系,但我建议您在没有备份计划的情况下不要尝试。
我还强烈推荐使用Microsoft的PowerToys来重新映射修改过的键(例如Ctrl+C)或SharpKeys无法映射的奇怪键。
希望能帮到你!

0

@Vitox的见解真的很有帮助。然而,视觉代码社区相当庞大,如果您不想自己编译修改过的版本,我这里有一个简单的解决方案。

暂停/中断键的扫描码是(E1 1D 45 E1 9D C5)。简单的方法是通过sharpkeys进行配置,并将Special: Hanja Key (E0 F1)重新映射到所需的键,例如F11 (00 57)。 打开注册表,导航到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout],并将路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]下的所有内容导出到.reg文件中。打开.reg文件,定位f1,e0段(可以搜索",f1,e0,"),将f1更改为1d,将e0更改为e1,保存并导入到注册表中。 然后在重启后就可以使用这个技巧了。

您还可以在SharpKeys中查看配置。请参见proof。但是,它不可能从SharpKeys侧导出它们。 Sharpkeys将忽略那个(E1_1D) - (00 57)配对,因为它不是本地内置的。

附言:这是一个简单的配置替换,在我的Windows 10环境中绝对可行。尽管如此,这只是一个绕路,可以避免您安装10+吉字节(或20+?无论多少)的MS Visual Studio社区版。我真的希望有人能发布一个构建版本的Sharpkeys,以原生支持暂停/中断键重新映射。


这实际上不起作用。完全不行。事实上。 - GwenKillerby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接