【问题标题】:CLX, stumpwm, McCLIM keyboard layout locked on startupCLX、stumpwm、McCLIM 键盘布局在启动时锁定
【发布时间】:2016-03-14 13:21:30
【问题描述】:

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

思考为什么会这样?

【问题讨论】:

    标签: common-lisp clim stumpwm


    【解决方案1】:

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

    例如,我正在测试两者之间的区别

    setxkbmap -layout us
    

    (查询)和

    setxkbmap -layout fr
    

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

    X 服务器向应用程序发送密钥代码。应用程序可以使用他们可以从服务器请求的键映射表来解释这些键码。

    似乎在 CLX 中,键码到键符的转换是由 translate.lisp 中定义的 keycode->keysym 函数执行的。它调用定义在它上面的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)))
    

    修复了输入栏和 Climacs。警告:我不认为这不会破坏其他任何东西。

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

    【讨论】:

    • 我已经使用此修复程序几天了 - 它似乎没有破坏任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多