我正在使用CLX+STUMPWM+McCLIM,当我通过"setxkbmap us -variant dvorak -option ctrl:nocaps“修改键盘布局时,这个键盘布局在我的CLIM应用程序中没有更新,但是对其他所有东西都进行了正确的更新(因此,为了使用COLEMAK,我在第一次启动CLIM之前运行适当的shell命令)。
为什么会这样?
发布于 2016-03-22 19:01:43
这似乎是CLX中的一个bug,它独立地影响McCLIM和stumpwm。
例如,我在测试
setxkbmap -layout us(奎蒂)和
setxkbmap -layout fr(阿兹蒂)运行这些命令既不影响stumpwm的输入栏,也不影响Climacs。默认的数量仍然有效。
X服务器向应用程序发送密钥。应用程序可以使用keymap表解释这些密钥代码,它们可以从服务器请求这些密钥代码。
在CLX中,密钥到keysym的转换似乎是由在keycode->keysym中定义的translate.lisp函数执行的。它调用在其上方定义的display-keyboard-mapping函数:
(defun display-keyboard-mapping (display)
(declare (type display display))
(declare (clx-values (simple-array keysym (display-max-keycode keysyms-per-keycode))))
(or (display-keysym-mapping display)
(setf (display-keysym-mapping display) (keyboard-mapping display))))显然,这个函数只请求一次keymap表并缓存它。改到
(defun display-keyboard-mapping (display)
(declare (type display display))
(declare (clx-values (simple-array keysym (display-max-keycode keysyms-per-keycode))))
(setf (display-keysym-mapping display) (keyboard-mapping display)))修复输入栏和气候。警告:,我不认为这不会破坏任何其他东西。
注:如果试图使用法语布局从stumpwm的输入栏运行shell命令,请记住这一点!定位在/上。
https://stackoverflow.com/questions/35988746
复制相似问题