2016-03-14 2 views
4

Я использую CLX + STUMPWM + McCLIM, и когда я изменяю раскладку клавиатуры через «setxkbmap us -variant dvorak -option ctrl: nocaps», раскладка клавиатуры не обновляется в моем CLIM, но корректно обновляет все остальное (таким образом, для использования COLEMAK я запускаю соответствующую команду оболочки перед запуском CLIM в первый раз).CLX, stumpwm, раскладка клавиатуры McClIM заблокирована при запуске

Мысли о том, почему это может быть?

ответ

1

Это, кажется, ошибка в CLX, независимо влияющая на McCLIM и stumpwm.

Например, я тестирую разницу между

setxkbmap -layout us 

(QUERTY) и

setxkbmap -layout fr 

(AZERTY). Выполнение этих команд не влияет ни на панель ввода stumpwm, ни на Climacs. Ошибка по умолчанию остается в силе.

X сервер отправляет коды ключей в приложения. Приложения могут интерпретировать эти коды ключей, используя таблицу раскладок, которую они могут запрашивать с сервера.

Похоже, что в CLX ключевой код для преобразования ключей выполняется функцией 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)))) 

По-видимому, эта функция запрашивает только таблицу раскладки клавиатуры один раз и кэширует его. Изменение его на

(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. CAVEAT: Я не утверждаю, что это ничего не сломает.

NB: Если вы пытаетесь запустить команду оболочки из панели ввода stumpwm с использованием французского макета, помните об этом! позиционируется на /.

+0

Я использовал это исправление в течение нескольких дней - он, кажется, ничего не сломал. –

Смежные вопросы