在2008年末到2009年初的某些时候,在Linux下运行X.org时,标准PC键盘上的一些键码值(显然,对于不在XT键盘上的按键)发生了变化.我不知道这是由于内核更改还是X更改. Debian lenny和Ubuntu 8.04使用了旧的任务; Debian squeeze和Ubuntu 10.04使用了新的任务.
所以我有两个xmodmaprc文件,一个包含旧密钥代码,另一个包含新密钥代码.如何确定从.xinitrc和.xsession加载哪一个?
我希望我的启动文件可以轻松移植,所以我想摆脱我目前对机器名称的依赖(!).我不想引入对Linux发行版本的依赖(无论如何,这将是关于客户端的信息,但它是关于我需要的服务器的信息).我的脚本中已经有关于服务器的信息(xrdb(1)
中列出的所有符号都可用作环境变量);希望我的问题简化为“我将什么参数与什么值进行比较?”.
请注意,由于我希望我的启动文件可以在我不管理的计算机上运行,因此仅仅重新分配密钥就无济于事.例如,我想将我喜欢的修饰符分配给Win键,但我无法预测登录时将分配哪些keysym.但是,如果有一个XKB概念,我可以使用它来代替键码(并且是独立的)任何系统管理员自定义,所以keyyms不会这样做,我愿意切换到XKB.
解决方法:
例如,您可以通过XKB找到密钥的密钥代码
xkbcomp -a -dflts -xkb $DISPLAY - | sed -ne 's/^ *<LWIN> *= *\([0-9][0-9]*\).*/\1/p'