首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用setkeycode更改密钥代码

如何使用setkeycode更改密钥代码
EN

Unix & Linux用户
提问于 2012-12-15 15:17:17
回答 2查看 11.8K关注 0票数 5

我有一个Thinkpad边缘E130运行Sabayon (一个基于Gentoo的发行版),我正在与众所周知的bug Xorg 255密钥限制作斗争。

我的笔记本电脑有一个Fn+F4热键,用于Mute/Unmute。这就是问题所在:

  • showkey -k在Fn+F4按键上显示密钥代码248
  • showkey -s在按键上什么也没有显示
  • xev在按键上没有显示任何内容(因为248+8 由内核添加大于255)

如果密钥具有密钥代码,则它也必须具有扫描代码。通过getscancodes码码程序,我获得了26的扫描代码:

代码语言:javascript
复制
# ./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)

根据线程,我的猜测只是用一个更小的、未使用的键来更改热键的键码。例如,根据我的$ xmodmap -pke,120似乎是未使用的

我试过了

代码语言:javascript
复制
# setkeycodes 0x1a 120

但没有成功,关键代码总是248个检查与showkey

如何正确地更改密钥代码?

EN

回答 2

Unix & Linux用户

发布于 2021-01-05 22:09:56

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

  1. 切换到控制台
  2. 使用showkey -k来知道“暂停”按钮的键码(在我的例子中是425)
代码语言:javascript
复制
$ showkey -k
keycode 425 press
keycode 425 release
  1. 使用getkeycodes获取将密钥代码映射到扫描代码的表
代码语言:javascript
复制
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. 在这个表中,查找与keycode 425相关联的扫描代码(在我的例子中是e075)。
  2. 切换回X
  3. 使用xmodmap -pke查找您需要的关键代码(您也可以修改它们)(在我的例子中是45)
代码语言:javascript
复制
keycode  45 = k K Cyrillic_el Cyrillic_EL k K
  1. 减去8得到内核密钥(45-8= 37)
  2. 使用setkeycodes添加原始扫描代码e075和内核密钥代码37之间的关联
代码语言:javascript
复制
sudo setkeycodes e075 37
  1. 试试看。它应该能工作
票数 1
EN

Unix & Linux用户

发布于 2016-10-02 11:43:19

步骤1:xmodmap -pke将列出您的密钥

步骤2:xmodmap -e 'keycode 51 = backslash bar'将将该密钥代码更改为反斜杠

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/58559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档