CLX,stumpwm,McCLIM键盘布局在启动时锁定

时间:2016-03-14 13:21:31

标签: common-lisp clim stumpwm

我正在使用CLX + STUMPWM + McCLIM,当我通过“setxkbmap us -variant dvorak -option ctrl:nocaps”修改键盘布局时,键盘布局无法在我的CLIM应用程序中更新,但正确更新其他所有内容(因此,要使用COLEMAK,我在第一次启动CLIM之前运行相应的shell命令。

为什么会出现这种情况的想法?

1 个答案:

答案 0 :(得分:1)

这似乎是CLX中一个独立影响McCLIM和stumpwm的错误。

例如,我正在测试

之间的区别
    def client = new SOAPClient(AConfig.url)
    client.httpClient.sslTrustStoreFile = abcd
    client.httpClient.sslTrustStorePassword =AConfig.password

(querty)和

setxkbmap -layout us

(AZERTY)。运行这些命令既不会影响stumpwm的输入栏,也不会影响Climacs。默认的querty仍然有效。

X服务器将密钥代码发送给应用程序。应用程序可以使用keymap表解释这些密钥代码,他们可以从服务器请求。

似乎在CLX中,keysym转换的关键代码是由translate.lisp中定义的setxkbmap -layout fr 函数执行的。它调用正上方定义的keycode->keysym函数:

display-keyboard-mapping

显然,这个函数只请求一次keymap表并缓存它。将其更改为

(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))))

修复了输入栏和Climacs。 CAVEAT:我没有声称这不会打破其他任何事情。

注意:如果尝试使用法语布局从stumpwm的输入栏运行shell命令,请注意!位于/.