如何使用 setkeycodes 更改键码

如何使用 setkeycodes 更改键码

我有一台运行 Sabayon(基于 Gentoo 的发行版)的 Thinkpad Edge E130,我正在与众所周知的错误作斗争Xorg 255 个键码限制

我的笔记本电脑有 Fn+F4 热键麦克风静音/取消静音。这就是问题:

  • showkey -k显示键码248按 Fn+F4 按键
  • showkey -s按键时不显示任何内容
  • xev按键时不显示任何内容(因为 248+8 [由内核添加] 大于 255)

如果钥匙有键码,则它也必须有扫描码。和获取扫描代码程序确实我得到了 26 作为扫描码:

# ./Sabayon/getscancodes/getscancodes /dev/input/event6 
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x17aa product 0x5054 version 0x4101
Input device name: "ThinkPad Extra Buttons"
26 (0x1a)
26 (0x1a)

根据线程,我的猜测只是将热键的键码更改为较小的未使用的键码。例如 120 根据我的说法似乎没有使用$ xmodmap -pke

我尝试过

# setkeycodes 0x1a 120

但没有成功,键码始终是 248,用showkey.

更改键码的正确方法是什么?

答案1

  1. 用于showkey了解您的按键扫描码:

    $ sudo showkey -s
    0xe0 0xXX
    
  2. 内核将在您的代码中添加 8,请112改为使用120

    $ sudo setkeycodes e0XX 112
    
  3. 用于xmodmap制作您的密钥报告XF86AudioMutekeysym:

    $ xmodmap -e "keycode 120 = XF86AudioMute"
    
  4. 选修的。在 DE 设置中创建所需内容的快捷方式时按您的键。

答案2

我想做的是,当按下“暂停”按钮时,打印字符“k”。问题是“暂停”按钮没有扫描码(showkey -s不起作用)。我这样解决了这个问题:

  1. 切换到控制台
  2. 用于showkey -k了解“暂停”按钮的键码(在我的例子中为 425)
$ showkey -k
keycode 425 press
keycode 425 release
  1. 用于getkeycodes获取键码到扫描码的映射表
e0 68:  128 159 158 157 155 226 225 224
e0 70:    0 192 193 149 148 425 116   0
e0 78:  464 148   0   0   0   0   0   0
  1. 在此表中找到与键码 425 关联的扫描码(在我的例子中为 e075)
  2. 切换回X
  3. 用于xmodmap -pke查找您需要的密钥代码(您也可以修改它们)(在我的例子中为 45)
keycode  45 = k K Cyrillic_el Cyrillic_EL k K
  1. 减去 8 得到内核键码 (45 - 8 = 37)
  2. 用于setkeycodes添加原始扫描码 e075 和内核键码 37 之间的关联
sudo setkeycodes e075 37
  1. 测试一下。应该有效

答案3

第 1 步:xmodmap -pke将列出您的密钥代码

第 2 步:xmodmap -e 'keycode 51 = backslash bar'将该键码更改为反斜杠

相关内容