PowerToys 多个键显示为"未定义",并且只能Map到一个键,

ssm49v7z  于 6个月前  发布在  其他
关注(0)|答案(5)|浏览(60)

我们将按照以下步骤解决这个问题:

  1. 首先,我们需要了解键盘上的特殊键的功能。在这个问题中,我们有以下特殊键:

    • 無変換 (muhenkan),表示不转换

    • PS/2 0x79,表示转换

    • ひらがな /カタカナ (hiragana/katakana),表示字母选择

    • \ / _ (backslash and underscore),表示反斜杠和下划线

    • ¥ (yen sign and vertical pipe),表示日元符号和竖线

  2. 根据问题描述,我们需要将这些特殊键Map到相应的功能。例如,当用户按下PS/2 0x79时,我们希望将其Map到空格键。

  3. 为了实现这个目标,我们可以使用PowerToys的Keyboard Manager工具。首先,我们需要打开Keyboard Manager并添加一个新的Map。在这个Map中,我们将为每个特殊键分配一个特定的功能。

  4. 对于無変換 (muhenkan)键,我们可以将其Map到空格键。为此,我们需要在Keyboard Manager中找到PS/2 0x7b键(对应于無変換键),然后将其Map到空格键。

  5. 对于PS/2 0x79键(转换键),我们可以将其Map到空格键。为此,我们需要在Keyboard Manager中找到PS/2 0x79键(对应于转换键),然后将其Map到空格键。

  6. 对于ひらがな /カタカナ (hiragana/katakana)键,我们可以将其Map到字母选择功能。为此,我们需要在Keyboard Manager中找到PS/2 0x70键(对应于字母选择功能),然后将其Map到该功能。

  7. 对于\ / _ (backslash and underscore)键,我们可以将其Map到右Shift键。为此,我们需要在Keyboard Manager中找到PS/2 0x73键(对应于右Shift键),然后将其Map到该功能。

  8. 对于¥ (yen sign and vertical pipe)键,我们可以将其Map到退格键。为此,我们需要在Keyboard Manager中找到PS/2 0x7d键(对应于退格键),然后将其Map到该功能。

  9. 最后,我们需要保存我们的更改并重新启动PowerToys。现在,当我们使用内置的键盘时,特殊键应该能够按照我们的期望执行相应的功能。

ef1yzkbh

ef1yzkbh1#

尝试了解这里发生了什么,我发现使用Nirm的KeyboardStateView等诊断工具时,当Power Toys Keyboard Manager关闭时,它显示的所有键都为“未定义”,给出的键码都是255,即Windows PS/2键盘驱动程序正在做一些非常愚蠢的事情:一开始就将它们全部Map到相同的虚拟键上。
也许解决这个问题超出了Power Toys的范围,但我会很高兴接受任何关于解决方法的聪明想法:D

8e2ybdfx

8e2ybdfx2#

好的,作为解决方法,我直接在PS/2扫描码级别使用注册表键重新Map了剩余的按键(文档)。你们编织了一个复杂的网络。

$x_{1a0b1} x$

y3bcpkx1

y3bcpkx13#

如果你感兴趣:
我已使用autohotkey实现了重新MapJIS键,甚至依赖于当前键盘布局。
它甚至依赖于当前活动的键盘布局。
(虽然我的键盘缺少0x70键并且有一些其他怪癖)
我也尝试使用Powertoys进行重新Map(起初只有1个键),但很快就失去了依赖于当前键盘布局的能力。
(因为我已经在使用其他ahk脚本,所以我甚至没有考虑在这里打开一个问题)
如果你愿意的话,我可以将脚本和必要的dll上传到某个地方......

zpf6vheq

zpf6vheq4#

你能请上传脚本吗?试着学习了ahk,但我无法让它正常工作。
我也遇到了同样的问题,我的alt、ctrl和窗口键不知为何被设置为未定义。

mwyxok5s

mwyxok5s5#

这里有一个压缩包,里面包含了我的AHK脚本以及检测当前键盘布局所需的DLL:AHK_JIS_Remap.zip
DLL是从这个源码编译而来的:https://github.com/Saya47/GetKeyboardLayout
我没有添加在某些按键上触发的声音文件,因为我有时会不小心按到这些键。

相关问题