相关疑难解决方法(0)

键盘输入和文本输出如何工作?

假设我A在文本编辑器中按下键,这会a在文档中插入字符并将其显示在屏幕上。我知道编辑器应用程序没有直接与硬件通信(中间有内核和其他东西),那么我的计算机内部发生了什么?

keyboard x11 architecture display

105
推荐指数
2
解决办法
3万
查看次数

用 XKB 覆盖一些键码

我想用 XKB 随机播放几个键。(为什么?在某些按键不方便的笔记本电脑上。)我目前使用 xmodmap:

keycode 110 = Prior
keycode 115 = Delete
keycode 112 = Next
keycode 117 = Insert
keycode 119 = End
keycode 118 = Home
Run Code Online (Sandbox Code Playgroud)

相反,我想使用 XKB 并为某些物理键分配不同的符号名称,而不是为某些键码分配不同的键符。(就是为什么。)我希望发送 keycode 110PGUP而不是 ,发送HOMEkeycode 115DELE而不是END等等。其余的配置必须不受影响(所以PGUP要继续发送 keysymPrior等,并且所有其他键都保留像他们那样)。

如何更改这些特定键码的分配?我将加载一个文件xkbcomp somefile.xkb $DISPLAY,我需要放入somefile.xkb什么?

x11 xkb keyboard-layout

11
推荐指数
2
解决办法
5367
查看次数

如何使用 setkeycodes 更改键码

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

我的笔记本电脑有Mic Mute/Unmute的 Fn+F4 热键。这就是问题:

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

如果一个键有一个键码,它也必须有一个扫描码。使用getscancodes程序确实我得到了 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)
Run Code Online (Sandbox Code Playgroud)

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

我试过

# setkeycodes 0x1a 120 …
Run Code Online (Sandbox Code Playgroud)

xorg keyboard thinkpad

5
推荐指数
1
解决办法
9494
查看次数

标签 统计

keyboard ×2

x11 ×2

architecture ×1

display ×1

keyboard-layout ×1

thinkpad ×1

xkb ×1

xorg ×1