Вопрос или проблема
Я гуглил это почти неделю безрезультатно. Когда я открываю панель настроек клавиатуры, варианты (те, которые содержат “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
для смены раскладки клавиатуры →
- Добавить новую строку селектора
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)
...
- Добавить новую строку селектора
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)
...
- Добавить блок группы в файл
/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:
- Получить текущие опции клавиатуры:
setxkbmap -print -verbose 10 | grep options:
Вывод (в моем случае):
options: ctrl:nocaps,grp:win_space_toggle
- Здесь стандартный
grp:win_space_toggle
будет перекрывать наш параметр, поэтому сначала нужно очистить все опции:
setxkbmap -option
- Добавить новую опцию для выбора раскладки + другие ранее установленные опции (кроме
grp:...
):
setxkbmap -option grp:lctrl_space_toggle,ctrl:nocaps
- Готово
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, включая:
-
Редактирование файла
/usr/share/X11/xkb/rules/evdev.lst
: Добавление новой строки для описания вашего пользовательского переключателя. -
Обновление файла
/usr/share/X11/xkb/rules/evdev
: Включение вашего нового правила в раздел описания символов. -
Добавление блока группы в
/usr/share/X11/xkb/symbols/group
: Определение поведения клавиши Space при нажатии вместе с Ctrl. Это осуществляется через секцию xkb_symbols, где вы указали, что ключ Space соотвествует ISO_Next_Group при нажатии с Ctrl.
После создания этих конфигурационных изменений, вы можете применить их с помощью команды setxkbmap
.
Практическое применение
-
Редактирование конфигурационных файлов 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 ] }; };
-
-
Применение конфигураций:
-
Сначала очистите текущие опции, которые могут конфликтовать:
setxkbmap -option
-
Затем установите ваш переключатель:
setxkbmap -option grp:lctrl_space_toggle
-
-
Обеспечение устойчивости настроек:
- Настройки, сделанные вручную, могут сбрасываться при перезагрузке из-за настроек GUI инструментов. Для устойчивости добавьте желаемое поведение в файл
/etc/default/keyboard
:XKBOPTIONS="grp:lctrl_space_toggle"
- Настройки, сделанные вручную, могут сбрасываться при перезагрузке из-за настроек GUI инструментов. Для устойчивости добавьте желаемое поведение в файл
Теперь вы должны иметь возможность переключать раскладку клавиатуры с помощью Ctrl+Space. Важно отметить, что любые графические инструменты или дополнительные настройки клавиатуры могут перезаписать эти изменения, поэтому убедитесь, что вручную введенные конфигурации не будут сбрасываться.
Заключение
Таким образом, настройка клавиатурного сочетания Ctrl+Space для переключения раскладки в Xfce требует ряда манипуляций с системными файлами конфигурации xkb. Хотя это может показаться сложным, процесс вполне выполним, если точно следовать описанным шагам. Этот метод также даёт возможность глубокого понимания и контроля за конфигурацией клавиатуры в Linux, что может оказаться полезным в дальнейшем.