Я хотел бы сценарий bash, который переключается между:
setxkbmap se
и setxkbmap us
.
Затем я собираюсь сопоставить этот скрипт с CtrlEscпомощью клавиатуры> настраиваемых сочетаний клавиш.
Дело в том, что я хочу переключить раскладку клавиатуры с помощью CtrlEscape. Как я могу это реализовать?
shell-script
x11
keyboard-layout
xkb
Фредрик
источник
источник
Ответы:
Я не знаю, в какой среде рабочего стола вы работаете, как вы можете назначить комбинацию клавиш, может отличаться, но этот скрипт работает глобально, по крайней мере, для моих
Ubuntu 12.04 box
иArch Linux
:источник
xmodmap
как в моем ответе ниже.setxkbmap
. То же самое происходит, если я переключаю макеты, используя ярлык, настроенный черезkeyboard shortcuts
графический интерфейс на моем LMDE.setxkbmap
меняется только когда я переключаюсь с его помощью.Есть разные ответы на похожие вопросы . Тем не менее, ни один из них не работает надежно для меня.
Следующий скрипт должен работать во всех случаях. Это, безусловно, работает в моей системе Debian при переключении раскладок с помощью
setxkbmap
:Сценарий анализирует выходные данные xmodmap, чтобы определить, является ли текущий макет «us» или «se». В макете «нас» SHIFT+ 7отображается на «амперсанд». Если вы будете переключаться между макетами «us» и «se», то включение «ampersand» 7означает, что вы используете макет «us», и сценарий изменится на «se». Если у вас нет «амперсанда» 7, сценарий переключается на «нас».
источник
лучшим способом было бы не использовать скрипт, а загрузить двухслойную клавиатуру (например :)
setxmodmap "us,se"
и переопределить Ctrl- Escдля отправки ISO_Next_GroupПосмотрите на этот ответ на xkb, чтобы узнать, как переопределить некоторые ключи без необходимости редактировать основные файлы по умолчанию (таким образом, не нужно быть пользователем root). В файле локальных символов (например:)
~/.xkb/symbols/mysymbols
поместите небольшой раздел как:PC_CONTROL_LEVEL2 сообщает, что второй символ для этого ключа получен с помощью Control (вместо Shift).
и в локальном файле раскладки (например:;
~/.xkb/keymap/mykbd
вы можете создать его с помощьюsetxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) измените строку xkb_symbols, добавив «mysymbols (ctr_esc_toggle)», так что вы получите что-то вроде:(обратите внимание на «se: 2», «: 2» говорит загружать определения символов «se» как Group2; вы можете составлять различные группы).
теперь вы можете загрузить его с помощью:
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
тогда Ctrl-Esc будет переключаться между макетами «us» и «se».Обратите внимание, что вам нужно нажать Ctrl (и удерживать) перед Esc; с другой стороны, это не работает (это потребует определения виртуального модификатора для Escape, и я не знаю, как это сделать)
источник
leftwin+leftalt+space
выглядело?{ include "pc+us+ru:2+inet(evdev)+group(win_space_toggle)" };