Изменение раскладки клавиатуры Xfce Ctrl+Пробел

Вопрос или проблема

Я гуглил это почти неделю безрезультатно. Когда я открываю панель настроек клавиатуры, варианты (те, которые содержат “Space”) ограничены только Alt+Space и Super+Space – нет Ctrl+Space.

Я нашел пару ответов, ни один из которых, похоже, не работает.

Первый – установить xfce4-xkb-plugin (который я уже установил), затем установить флажок “использовать системные настройки” в панели настроек клавиатуры, после чего использовать свойства плагина для установки языков и ярлыков. Это не работает – в панели свойств есть только варианты того, как выглядит элемент панели… и всё.

Второй вариант – эта строка:

-option grp:ctrl_space_toggle,grp_led:scroll en,ru

Это тоже не работает. Если я помещаю это в мой файл .Xmodmap, возникает ошибка, и файл больше не анализируется.

Я прекратил поиски, но мне действительно нужно это, так как это рефлекс длительного времени. Пожалуйста, помогите мне установить Ctrl+Space как ярлык для смены раскладки. (Я использую Arch Linux.)

Вот очень подробный ответ, который помог мне.

Что я сделал, чтобы активировать селектор Ctrl + Space для смены раскладки клавиатуры →

  1. Добавить новую строку селектора grp:lctrl_space_toggle в файл /usr/share/X11/xkb/rules/evdev.lst:
! option
  grp                  Switching to another layout
  grp:switch           Right Alt (while pressed)
  grp:lswitch          Left Alt (while pressed)
  ...
  grp:lctrl_space_toggle Ctrl+Space (Custom layout selector)
  ...
  1. Добавить новую строку селектора grp:lctrl_space_toggle в файл /usr/share/X11/xkb/rules/evdev:
! option        =       symbols
  grp:shift_toggle      =       +group(shifts_toggle)
  altwin:menu           =       +altwin(menu)
  altwin:menu_win       =       +altwin(menu_win)
  ...
  grp:lctrl_space_toggle =      +group(lctrl_space_toggle)
  ...
  1. Добавить блок группы в файл /usr/share/X11/xkb/symbols/group:
partial modifier_keys
xkb_symbols "lctrl_space_toggle" {
    key <SPCE> {
        type[Group1]="PC_CONTROL_LEVEL2",
        symbols[Group1] = [ space, ISO_Next_Group ]
    };
};

* Я добавил этот блок между другими группами grp:

  1. Получить текущие опции клавиатуры:
setxkbmap -print -verbose 10 | grep options:

Вывод (в моем случае):

options:    ctrl:nocaps,grp:win_space_toggle
  1. Здесь стандартный grp:win_space_toggle будет перекрывать наш параметр, поэтому сначала нужно очистить все опции:
setxkbmap -option
  1. Добавить новую опцию для выбора раскладки + другие ранее установленные опции (кроме grp:...):
setxkbmap -option grp:lctrl_space_toggle,ctrl:nocaps
  1. Готово

PS возможно, что некоторые графические инструменты могут переопределить это поведение при перезагрузке (СистемаКлавиатураДополнительно в KDE сделали это в моем случае), поэтому необходимо отключить любые настройки ярлыков, чтобы избежать этого. Также может быть полезно добавить наши пользовательские параметры в /etc/default/keyboard:

...
XKBOPTIONS="grp:lctrl_space_toggle,ctrl:nocaps"
...

Ответ или решение

Конечно, давайте подробно разберем, как настроить переключение раскладки клавиатуры с помощью сочетания клавиш Ctrl+Space в Xfce на Arch Linux. Мы рассмотрим теорию, приведем примеры и объясним, как на практике применить это решение.

Теория

В X Window System раскладки клавиатуры могут быть настроены через xkb (X Keyboard Extension). Параметры настройки находятся в различных конфигурационных файлах, и управление ими осуществляется с помощью инструмента setxkbmap. Когда вы хотите переключать раскладки клавиатуры с помощью определенного сочетания клавиш, таких как Ctrl+Space, вам необходимо создать соответствующее правило в xkb, которое будет определять это поведение.

Пример

Проблема автора заключалась в отсутствии опции для сочетания Ctrl+Space в стандартном диалоговом окне настроек клавиатуры в Xfce. Стандартные опции, доступные для Space, ограничиваются сочетаниями Alt+Space и Super+Space.

Чтобы обойти это ограничение, можно вручную добавить новое правило для переключения клавиатуры с помощью Ctrl+Space. Это требует внесения изменений в системные конфигурационные файлы xkb, включая:

  1. Редактирование файла /usr/share/X11/xkb/rules/evdev.lst: Добавление новой строки для описания вашего пользовательского переключателя.

  2. Обновление файла /usr/share/X11/xkb/rules/evdev: Включение вашего нового правила в раздел описания символов.

  3. Добавление блока группы в /usr/share/X11/xkb/symbols/group: Определение поведения клавиши Space при нажатии вместе с Ctrl. Это осуществляется через секцию xkb_symbols, где вы указали, что ключ Space соотвествует ISO_Next_Group при нажатии с Ctrl.

После создания этих конфигурационных изменений, вы можете применить их с помощью команды setxkbmap.

Практическое применение

  1. Редактирование конфигурационных файлов xkb:

    • Откройте /usr/share/X11/xkb/rules/evdev.lst и добавьте:

      grp:lctrl_space_toggle Control+Space (Custom layout selector)
    • Откройте /usr/share/X11/xkb/rules/evdev и добавьте:

      grp:lctrl_space_toggle = +group(lctrl_space_toggle)
    • Создайте блок в /usr/share/X11/xkb/symbols/group:

      partial modifier_keys
      xkb_symbols "lctrl_space_toggle" {
       key <SPCE> {
           type[Group1]="PC_CONTROL_LEVEL2",
           symbols[Group1] = [ space, ISO_Next_Group ]
       };
      };
  2. Применение конфигураций:

    • Сначала очистите текущие опции, которые могут конфликтовать:

      setxkbmap -option
    • Затем установите ваш переключатель:

      setxkbmap -option grp:lctrl_space_toggle
  3. Обеспечение устойчивости настроек:

    • Настройки, сделанные вручную, могут сбрасываться при перезагрузке из-за настроек GUI инструментов. Для устойчивости добавьте желаемое поведение в файл /etc/default/keyboard:
      XKBOPTIONS="grp:lctrl_space_toggle"

Теперь вы должны иметь возможность переключать раскладку клавиатуры с помощью Ctrl+Space. Важно отметить, что любые графические инструменты или дополнительные настройки клавиатуры могут перезаписать эти изменения, поэтому убедитесь, что вручную введенные конфигурации не будут сбрасываться.

Заключение

Таким образом, настройка клавиатурного сочетания Ctrl+Space для переключения раскладки в Xfce требует ряда манипуляций с системными файлами конфигурации xkb. Хотя это может показаться сложным, процесс вполне выполним, если точно следовать описанным шагам. Этот метод также даёт возможность глубокого понимания и контроля за конфигурацией клавиатуры в Linux, что может оказаться полезным в дальнейшем.

Оцените материал
Добавить комментарий

Капча загружается...