Вопрос или проблема
Выдавая эту команду:
setxkbmap -layout "us,ua,ru" -variant ",winkeys" -option "grp:shift_caps_toggle,grp_led:scroll" -model pc105 -rules xorg
При нажатии Caps Lock+Shift я переключаюсь между английской (us) и украинской (ua) раскладками, но не между русской (ru).
Я попытался сбросить это с помощью следующей команды:
setxkbmap -layout "us,ua,ru" -option ""
и экспериментировал с множеством различных опций – ничего не помогает.
Моя система – Gentoo Linux и менеджер окон wmii.
Я протестировал вашу команду (мне пришлось добавить “-keycodes evdev”, чтобы обрабатывать мои стрелочные клавиши, но это не имеет значения), и я мог переключаться между тремя раскладками.
Не может ли быть так, что сочетание Caps+Shift перехватывается менеджером окон?
Вы также можете выполнить команду: xkbcomp $DISPLAY somefile.txt
(или xkbcomp $DISPLAY - | less
) и проверить, что CAPS определено следующим образом:
key <CAPS> { [ Caps_Lock, ISO_Next_Group ] };
посмотрите, меняется ли дамп xkbcomp, когда вы меняете раскладку клавиатуры с помощью Caps+Shift (он не должен!)
setxkbmap -model pc104 -layout us,ua,ru -variant ,winkeys -option grp:lwin_switch,grp:caps_toggle,grp_led:caps
При нажатии CAPSLOCK переключается между всеми тремя.
При нажатии и удерживании WIN включается следующая раскладка, например: если текущая раскладка ‘ua’, то будет вводиться ‘ru’
Ответ или решение
Когда вы сталкиваетесь с проблемой переключения между тремя раскладками клавиатуры в Linux с использованием setxkbmap
, где реагирует только комбинация Caps Lock + Shift между двумя раскладками, это может быть вызвано рядом факторов, включая настройки вашей оконной системы или неправильно сконфигурированные параметры. Давайте разберем проблему по шагам.
1. Понимание команды setxkbmap
Когда вы выполняете команду:
setxkbmap -layout "us,ua,ru" -variant ",winkeys" -option "grp:shift_caps_toggle,grp_led:scroll" -model pc105 -rules xorg
-layout "us,ua,ru"
: Задаёт три раскладки: английскую (US), украинскую (UA) и русскую (RU).-variant ",winkeys"
: Добавляет вариант для первой раскладки (US), который подразумевает использование клавиш Windows, но для украинской и русской раскладок вариант не задан.-option "grp:shift_caps_toggle,grp_led:scroll"
: Определяет способ переключения между раскладками (в данной ситуации через комбинацию Caps Lock + Shift).-model pc105
: Устанавливает модель клавиатуры.-rules xorg
: Использует правила Xorg для конфигурации.
2. Проверка взаимодействия с оконным менеджером
Вы упоминали, что возможно комбинация клавиш Caps Lock + Shift может быть перехвачена вашим оконным менеджером wmii. Это действительно возможно, так как оконные менеджеры могут иметь собственные привязки клавиш. Рекомендуется проверить конфигурации wmii на наличие привязок клавиш, которые могут конфликтовать с настройками xkb.
3. Использование xkbcomp
Чтобы дополнительно диагностировать проблему, выполните следующую команду:
xkbcomp $DISPLAY - | less
Это выведет текущую конфигурацию клавиатуры. Важно обратить внимание на следующую строку:
key <CAPS> { [ Caps_Lock, ISO_Next_Group ] };
Эта строка указывает, что команда на клавише Caps Lock действительно отвечает за переключение раскладки. Вам нужно убедиться, что вывод xkbcomp
изменяется при переключении раскладки с использованием комбинации Caps Lock + Shift. Если он не меняется, это может указывать на неправильную конфигурацию.
4. Альтернативные настройки
Если проблема не решается, попробуйте другую комбинацию клавиш, например:
setxkbmap -model pc104 -layout us,ua,ru -variant ,winkeys -option grp:lwin_switch,grp:caps_toggle,grp_led:caps
В данной конфигурации:
- Используется другая модель (
pc104
). - Switch происходит через левую клавишу Windows (lwin), которая может быть более универсальной.
5. Проверка на влияние других приложений
Кроме того, проверьте, нет ли других приложений, использующих глобальные горячие клавиши на вашей системе, которые могут влиять на поведение клавиш переключения раскладки. Иногда приложения управления окнами, такие как Compiz или другие, могут перехватывать коммутирующие команды.
Заключение
Проблема с переключением между тремя раскладками может быть связана с неправильно настроенными параметрами setxkbmap
, конфликтами с оконным менеджером или другими приложениями, которые перехватывают горячие клавиши. Проверьте конфигурации, используйте команды для диагностики, и протестируйте альтернативные варианты настройки, чтобы найти наиболее подходящее решение. Надеюсь, это поможет вам успешно настроить переключение раскладок на вашем Gentoo Linux.