使用相同的扫描码和不同的键符配置键盘热键

使用相同的扫描码和不同的键符配置键盘热键

我有一个蓝牙键盘三星bkb10。它主要是用于 andoind 的键盘,所以它没有 alt、super(winkey)、f1-f12、menu,但有很多热键(大多数在 linux 下工作正常)。但有些热键不起作用,我想让它们表现得像 alt、f1-f12、menu。另外,我也想要热键功能,所以我很想为热键制作类似 Fn 按钮的东西。好吧,这就是我想要的一切。至少我需要 alt、super、menu 和 f1-f12,无法想象在 linux 下没有它们会这么难。所以,我试图使用 keytouch - 没有运气。它能够读取正确的键符,但 keytouch-editor 只将其中的一部分保存到其键盘文件中,而且似乎所需的键对于 keytouch 也是一样的。无论如何,我没有看到它对我有用,即使许多键的行为方式相同。现在,我想要设为 Alt、super、menu 的键根本不起作用,具有相同的扫描码,但具有不同的键符号:

xev 对于某些不起作用的热键显示相同的内容:

KeyRelease event, serial 39, synthetic NO, window 0x5400001,
root 0xf5, subw 0x0, time 12647284, (224,225), root:(224,253),
state 0x0, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

kacpimon可以识别它们的键盘符号并且它们是不同的键:

Input Layer:  Type: 4  Code: 4  Value: 787205
Input Layer:  Type: 1  Code: 240  Value: 0
Input Layer:  Sync
Input Layer:  Type: 4  Code: 4  Value: 787207
Input Layer:  Type: 1  Code: 240  Value: 1
Input Layer:  Sync

与...一样getscancodes

787205 (0xc0305)
787205 (0xc0305)
787207 (0xc0307)
787207 (0xc0307)

sudo evtest /dev/input/evt14相同键的输出:

Event: time 1457614378.384393, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0305
Event: time 1457614378.384393, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1457614378.384393, -------------- SYN_REPORT ------------
Event: time 1457614378.384420, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0305
Event: time 1457614378.384420, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1457614378.384420, -------------- SYN_REPORT ------------
Event: time 1457614378.681877, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0307
Event: time 1457614378.681877, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1457614378.681877, -------------- SYN_REPORT ------------
Event: time 1457614378.775600, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0307
Event: time 1457614378.775600, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1457614378.775600, -------------- SYN_REPORT ------------

正如您所看到的,即使在 中扫描码也是相同的kacpimon,但对于每个键,键符在kacpimon、中都不同getscancode,但对于 和其他工具则不同。另外,我认为 getscancodes 实际上显示的是键符,而不是它们的扫描码。我知道 xmodmap 很旧,我不应该使用,我应该使用 xkb。如果我不是菜鸟的话,我能够找到一些可以帮助我的答案 -evtestxev自定义键盘布局:添加未定义键符的字符 另外,该链接可能有用,但已经过时了,所以我无法检查-不要使用 showkey 或 xev——而是使用 udev 和 evtest。

但我无法使用 xkb 或 xmodmap 来实现,我就是不明白该怎么做。请帮助我,我花了整整 3 天时间才找到解决方案……非常感谢!

答案1

好的,解决方案在这里找到-在 14.04 (Trusty) 中,使 Microsoft Natural Ergonomic Keyboard 4000 和 7000 的缩放滑块上下滚动 阅读最后一条评论。事实证明,evtest 非常强大,它也可以显示扫描码。非常仔细地阅读 /lib/udev/hwdb.d/60-keyboard.hwdb,我不得不阅读 100 次才能使其工作。如果您需要将十六进制转换为 4 位十六进制,我使用了这个 -http://www.binaryhexconverter.com/hex-to-decimal-converter

相关内容