确定 PC 上 X.org 的键码分配

确定 PC 上 X.org 的键码分配

在 2008 年底到 2009 年初的某个时间点,当在 Linux 下运行 X.org 时,标准 PC 键盘上的一些键码值(显然是 XT 键盘上没有的键)发生了变化。我不知道这是由于内核更改还是 X 更改所致。 Debian lenny 和 Ubuntu 8.04 使用旧的分配; Debian挤压和Ubuntu 10.04使用了新的分配。

所以我有两个xmodmaprc文件,一个包含旧的密钥代码,另一个包含新的密钥代码。如何确定从 my.xinitrc和加载哪一个.xsession

我希望我的启动文件能够轻松移植,因此我想摆脱目前对计算机名称的依赖(!)。我不想引入对 Linux 发行版本的依赖(无论如何,这将是有关客户端的信息,但它是有关我需要的服务器的信息)。此时我的脚本中已经有了有关服务器的信息(所有符号都列在xrdb(1)可作为环境变量使用);希望我的问题可以简化为“我要与哪些参数进行比较?”。

请注意,由于我希望启动文件能够在我不管理的计算机上运行,​​因此仅重新分配键符号没有任何帮助。例如,我想将我最喜欢的修饰符分配给按键Win,但我无法预测登录时将分配什么键符号。但是,如果有一个 XKB 概念,我可以使用它来代替键码(并且独立于任何系统管理员自定义,所以 keysyms 不会这样做),我愿意切换到 XKB。

答案1

您可以通过XKB找到某个按键的keycode,例如

xkbcomp -a -dflts -xkb $DISPLAY - | sed -ne 's/^ *<LWIN> *= *\([0-9][0-9]*\).*/\1/p'

相关内容