LINUX.ORG.RU

Emacs и xxkb

 , ,


1

4

Да, опять. )) В гугле инфы полно, но не помогает. Итак, хочу чтобы alt+shift переключал раскладку. Всегда. В Emacs тоже.

Казалось бы, чего там уметь-то? Наливай да пей Напиши в ~/.xinitrc:

setxkbmap -layout us,ru -variant -option grp:alt_shift_toggle,terminate:ctrl_alt_bksp &
xxkb &

и всего делов. Но Тогда в Emacs сочетания C-S-M-arrow (да, да, Meta + Shift + Ctrl + arrow, педалей нет) перестают работать. Как бы сделать так, что пока набираешь сочетание оно не передавалось в xxkb. Например, чтобы xxkb срабатывало когда клавиши отпускаешь, а не нажимаешь и только эти клавиши именно alt+shift, не более того. Кстати, это не фантастика, это возможно, в прошлой инсталляции у меня все так и работало каким-то непостижимым образом причем изкаробки, судя по всему. В силу ряда причин пришлось ось переустановить.

А при чем здесь вообще xxkb и Емакс? То, о чем вы говорите — это фундаментальное ограничение xkb (то есть Иксов) — переключение раскладки можно настроить только на нажатие клавиши, а вы хотите — на отжатие. Ничего у вас так работать «в прошлой инсталляции» не могло, если только за выбор раскладки не отвечало что-то более высокоуровневое, чем xkb.

Ну и не могу заметить, что придумать более неудобный способ менять раскладку, чем Shift-Alt по кругу, сложно.

Zmicier ★★★★★ ()

переключай по капс-локу

anonymous ()
Ответ на: комментарий от Zmicier

А при чем здесь вообще xxkb и Емакс?

Согласен, вопрос не совсем корректен, да Емакс не при чем. Про xxkb затрудняюсь сказать.

Ничего у вас так работать «в прошлой инсталляции» не могло, если только за выбор раскладки не отвечало что-то более высокоуровневое, чем xkb.

Поставил сейчас xubuntu в соседний раздел. Накатил stumpwm, запускаю сессию иксов без xfce4. xxkb срабатывает именно при отпускании. Конфиг и версия xxkb та же самая.

если только за выбор раскладки не отвечало что-то более высокоуровневое, чем xkb

Вот вопрос что это? Настройка или версия иксов? Другой демон? Какие еще варианты есть?

Ну и не могу заметить, что придумать более неудобный способ менять раскладку, чем Shift-Alt по кругу, сложно.

Да, ну тут дело привычки, на вкус и цвет.

kostafey ()
Ответ на: комментарий от kostafey

xxkb срабатывает именно при отпускании.

В убунту же вроде все патчат чтобы так было. В других дистрибутивах только на нажатие.

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

В убунту же вроде все патчат чтобы так было.

Впервые слышу, спасибо, буду знать. А можно ссылку на патч?

Zmicier ★★★★★ ()
Ответ на: комментарий от curufinwe

Ага, спасибо.

kostafey, пинайте сопровождающих вашей новой поставки (что у вас там вместо Убунты теперь).

Ну или поищите то самое «что-нибудь уровнем повыше». Может быть SCIM, может быть XNeur, может быть еще какая-нибудь хрень. Но я точно не знаю.

Но если уж костылять, то не хотите попробовать просто по шифту (без альта) или по альту (без шифта) переключать? Это при помощи такого костыля, как xcape сделать несложно. И что характерно — альт-шифт или шифт-альт тоже будут работать.

Zmicier ★★★★★ ()

Вообще, если в Emacs переключить общесистемным способом ввод на русский, все хоткеи по-любому отвалятся, разве нет? Для чего же ctrl-\ ?

curufinwe ★★★★★ ()
Ответ на: комментарий от curufinwe

Да, верно; но товарищ, вероятно, очень эпизодически пользуется кириллицей в Емаксе.

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

Но если уж костылять, то не хотите попробовать просто по шифту (без альта) или по альту (без шифта) переключать?

Не буду ждать ответа, расскажу, как это сделать.

Оформляете ~/.xkb (кроме строчек с <CHGR> пишете то, что вам надо, разумеется):

xkb_keymap {
  xkb_keycodes {
    include "evdev+aliases(qwerty)"
    <CHGR> = 247;
  };

  xkb_types {
    include "complete"
  };

  xkb_compatibility {
    include "complete"
    include "ledcaps(group_lock)"
  };

  xkb_symbols {
    include "pc+us:1+ru:2+inet(evdev)"
    key <CHGR> { [ ISO_Next_Group ] };
  };
};

А после запуска Исков исполняете:

xkbcomp "$HOME/.xkb" "$DISPLAY"
xcape '#50=ISO_Next_Group;#62=ISO_Next_Group;#64=ISO_Next_Group;#108=ISO_Next_Group'

Не проверял, но по-идее любой шифт или любой альт или любое сочетание этих четырех клавиш будет переключать раскладку по кругу.

Zmicier ★★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Покурил еще интернеты, да, это, пожалуй, действительно лучшее решение из возможных (xcape -e только). Все хитрые биндинги работают.

Не кинете ссылкой как еще можно диодиком на клавиатуре текущую раскладку посвечивать?

kostafey ()
Ответ на: комментарий от kostafey

работают

Ну и славно.

xcape -e

Да, точно.

ссылку, как диодиком раскладку подсвечивать

А че ссылку-то? Я же выше все уже написал — ledcaps(group_lock).

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

А че ссылку-то? Я же выше все уже написал — ledcaps(group_lock).

Непомогает. CapsLock перестал подсвечивать диод это да, а вот переключенние раскладки подсвечивать не стало. Это может быть из-за kbdd? Или ЧЯНТД?

kostafey ()
Ответ на: комментарий от kostafey

Не помогает.

УМВР.

Это может быть из-за kbdd?

У вас, кажется, только что был xxkb — и уже kbdd? Почему? Может быть, мне тоже стоит сменить один на другой?

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

У вас, кажется, только что был xxkb — и уже kbdd?

Да на самом деле ни тот ни другой не запоминают раскладку для приложения. Первый раз при возврате в окно срабатывает восстановление раскладки, второй раз нет. Попробую gxkb еще.

kostafey ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.