Перейти к содержимому

Debian как сменить раскладку клавиатуры

  • автор:

Linux. Настройка клавиатуры

Можно пользоваться и стандартными настройками, но иногда внесенные изменения дают возможность набирать быстрее (это, конечно, не слепая печать, но все же), совершать меньше ошибок, меньше переключать раскладку.

Почему я захотел изменить свою клавиатуру?

Во-первых, когда я начал использовать vim как основной редактор, я понял, что не хочу каждый раз тянуться к ESC . Кроме того, я писал в основном на питоне, поэтому ; нажимал сильно реже, чем : , а в vim разница стала более явной.

Во-вторых, через некоторое время я стал пользоваться вимовскими комбинациями для навигации в браузере, дальше — тайловый оконный менеджер i3 , где они тоже использовались, и хотелось перейти на них везде (вместо обычных стрелок, например, в файловом менеджере).

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

Настройка переключения раскладки

Что же, начнем. Сначала разберемся, как можно настроить смену раскладки клавиатуры.

Пример `gnome-tweaks` для Ubuntu

  • Первый способ. Можно воспользоваться какой-нибудь программой, например, gnome-tweaks :
    здесь мы можем выбрать один из вариантов, предлагаемых нам разработчиками.

    Главное — мы не можем создать свой вариант. Давайте научимся делать и это.

  • Второй способ.
    Посмотрим, как то же самое можно сделать руками, и чего еще можно добиться.
    Давайте поставим переключение на правый Alt (он же AltGr ):

$ setxkbmap -layout us,ru -option grp:toggle

Но где можно узнать, какие еще есть варианты, и как создать свои? Все файлы лежат /usr/share/X11/xkb/symbols/ . И наши переключения находятся в /usr/share/X11/xkb/symbols/group . Вот так выглядит выбранный вариант:

partial modifier_keys xkb_symbols "toggle" < virtual_modifiers AltGr; key < symbols[Group1] = [ ISO_Next_Group ], virtualMods = AltGr >; >;

Ациклическое переключение раскладок

Изменим циклическое переключение по AltGr на ациклическое: AltGr переключает на латинскую раскладку, Shift+AltGr — на русскую.

Перед тем как что-то менять, посмотрим на текущие настройки:

$ setxkbmap -layout us,ru -print

Должны получить что-такое ( pc105 может отличаться в зависимости от количества клавиш на вашей клавиатуре):

xkb_keymap < xkb_keycodes < include "evdev+aliases(qwerty)" >; xkb_types < include "complete" >; xkb_compat < include "complete" >; xkb_symbols < include "pc+us+ru:2+inet(evdev)" >; xkb_geometry < include "pc(pc105)" >; >;

Теперь запишем это в конфигурационный файл ~/.config/xkb/config .

В файле /usr/share/X11/xkb/symbols/group можно найти аналогичный вариант с CapsLock , откуда можно понять, что на us будет переключать ISO_First_Group , а на ru — ISO_Second_Group .

Вот такая строчка

говорит, что клавиша при обычном нажатии вызывает ISO_First_Group , а вместе с Shift — ISO_Last_Group .

Изменим в только что созданном файле xkb_symbols :

xkb_keymap < xkb_keycodes < include "evdev+aliases(qwerty)" >; xkb_types < include "complete" >; xkb_compat < include "complete" >; xkb_geometry < include "pc(pc105)" >; xkb_symbols "my" < include "pc+us+ru:2+inet(evdev)" key < [ ISO_First_Group, ISO_Last_Group ] >; >; >; 

Проверим, что у нас получилось. Загружаем конфиг:

$ xkbcomp $HOME/.config/xkb/config $DISPLAY

Теперь язык должен переключаться по заданным комбинациям.

Замечание

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

Еще один плюс ациклического переключения — можно больше не использовать никаких индикаторов.

Изменение клавиш

Двоеточие и точка с запятой

Поменяем местами двоеточие и точку с запятой. Как задать значение мы уже знаем, осталось понять как называются символы. Это можно посмотреть в тех же файлах /usr/share/X11/xkb/symbols/ . Выберем файл us и найдем нужную клавишу:

Осталось записать в наш конфигурационный файл в обратном порядке.

ESC и CapsLock

Поменяем ESC и CapsLock . В той же директории в файле capslock можно найти:

hidden partial modifier_keys xkb_symbols "swapescape" < key < [ Escape ] >; key < [ Caps_Lock ] >; >; hidden partial modifier_keys xkb_symbols "escape" < key < [ Escape ] >; >;

partical — специальные куски, которые мы можем включать в другие раскладки.
Теперь либо пишем include «swapescape» , либо просто копируем код.

Alt и Win

Еще аналогично можно поменять, например, левый Alt и Win , что особенно удобно в i3wm , если поставить главный модификатор на Win , то он будет ближе к остальной клавиатуре, и плюс мы не ограничим себя в использовании Alt в комбинациях различный программ (браузер, файловый менеджер. ).

Модификаторы

Для чего вообще они нужны? Можно задать комбинации, которые будут позволять нам быстрее и удобнее набирать какие-то символы или вызывать какое-то действие, помещая поверх других, то есть эти комбинации не будут пересекаться с уже созданными или с комбинациями заданными системой.

Существует два дополнительных уровня: level3 , level5 . И еще комбинации с Shift .

Сделаем так, чтобы клавиша CapsLock в комбинации с h, j, k, l давала эффект стрелки. Тогда не нужно будет каждый раз тянуться ним.

Назначим модификатор (мы уже решили поставить туда ESC , но можно сделать и то и другое: об этом далее):

Если мы хотим назначить для разных раскладок разное значение, то сначала нужно их определить:

name[group1] = "English (US)"; name[group2] = "Russian";

Теперь нужно настроить клавиши h, j, k, l. Сначала узнаем их имя — тоже можно посмотреть файл раскладки, это несложно. Их зовут ,… . Какие команды вызывают стрелки можно узнать совершенно аналогично. Дальше пропишем поведение в комбинации с модификатором:

key < [ h, H, KP_Left ] >; key < [ j, J, KP_Down ] >; key < [ k, K, KP_Up ] >; key < [ l, L, KP_Right ] >;

При нормальном нажатии будет обычная буква, при нажатии с шифтом — заглавная, с модификатором третьего уровня — стрелки.

Назначение модификатора как второе значение клавиши

Кроме стрелок можно назначить на третий слой символы или другие операции.
Давайте сделаем, чтобы кроме функции модификатора клавиша CapsLock выполняла и предназначенную ей миссию ранее — была ESC .

Для этого нам понадобится xcape , которая позволяет назначить на на клавишу значение, которое она будет иметь, если нажать ее не в комбинации. Еще есть полезная функция: можно настроить время, после истечения которого ее эффект отменяется.

Как я уже обещал, мы сделаем так, чтобы при однократном нажатии клавиши CapsLock вызывался ESC , а в комбинациях выступала в роли модификатора третьего уровня.

Для этого нужно выполнить

$ xcape -t -e "первое значение=втрое значение"

Я использую интервал 500 миллисекунд. Для нашей цели:

$ xcape -t 500 -e "ISO_Level3_Shift=Escape"

Дальнейшие изменения

Когда я пишу в TeX , я использую достаточно много одинаковых символов, но в разных раскладках. Поэтому появилась идея сделать их максимально похожими. В раскладках по умолчанию сильно отличаются положения точки, запятой, кавычек, квадратных и фигурных скобок, вопросительных знаков, различных слэшей.

Здесь было две идеи:

    Поставим редко используемые русские буквы на крайних правых клавишах на третий слой других букв.
    Схема была такая:

Клавиша Третий слой
у ю
в б
ь ъ
з ж
щ х

Для достижения такого эффекта добавляем в конфиг (здесь для у/ю, для остальных аналогично, названия букв русского алфавита можно посмотреть, где и все остальное):

key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_zhe, Cyrillic_ZHE, colon, semicolon] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_e, Cyrillic_E, apostrophe, quotedbl] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_be, Cyrillic_BE, comma, less] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_yu, Cyrillic_YU, period, greater] >;

Еще можем поставить в русской раскладке слэш и вопросительный знак туда, где они стоят в английской.

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

key < [ 3, numbersign, number, apostrophe ] >; key < [ 4, dollar ] >; key < [ 6, asciicircum ] >; key < [ 7, ampersand ] >;
Замечание

Аналогично можно добавлять пятый слой, хотя пока лично я не испытываю никакой нужды — вполне хватает третьего.

Интересный вариант BackSpace напоследок

А может хватит тянуться далеко-далеко в дальний угол клавиатуры?
Поставим-ка BackSpace на $mod3+Space ( $mod3 наш модификатор третьего уровня)!

P.S.

Все настройки в принципе применимы для любых Linux дистрибутивов, использующих X.

Полные конфиги можно найти на GitHub.

Этот пост стал для меня отправной точкой к пониманию того, как можно и нужно настроить клавиатуру.

Debian как сменить раскладку клавиатуры

Чтобы настроить клавиатуру, вы можете установить пакет keyboard-configuration. Также нужен пакет console-setup.

Настройки клавиатуры сохраняются в файле /etc/default/keyboard. Это предусмотрено пакетом keyboard-configuration, и другие пакеты используют эту информацию при настройке клавиатуры в консоле или в графической среде.

Вы можете поменять свои настройки клавиатуры, использую следующие команды:

# dpkg-reconfigure keyboard-configuration # service keyboard-setup restart

As usual, it will prompt you for the model of keyboard (what the keyboard *is*), and then for the keyboard layout (what the keys should *do*). Use this tool to change your keyboard map, e. g. from QWERTY to QWERTZ or to Dvorak, or for non-English layouts.

Для того, чтобы применить новые параметры, достаточно перезапустить службу keyboard-setup (в большенстве случаев этого должно быть достаточно), в противном случае, можно попробовать перезагрузить систему ввода ядра (kernel input system) с помощью udev:

udevadm trigger --subsystem-match=input --action=change

или перезагрузить ОС.

Для применения новых настроек /etc/default/keyboard для консольного терминала (ttyX), необходимо выполнить setupcon(1).

Вы также можете отредактировать файл /etc/default/keyboard вручную, пример:

# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="us,de,fr,ua,ru" XKBVARIANT="" XKBOPTIONS="grp:alt_shift_toggle" BACKSPACE="guess"
  • XKBMODEL переменная содержит модель клавиатуры (смотрите /usr/share/X11/xkb/rules/base.lst (обычный текст) или /usr/share/X11/xkb/rules/base.xml (XML) для полного списка);
  • XKBLAYOUT переменная содержит список используемых раскладок;
  • «grp:alt_shift_toggle» задает переключение раскладок комбинацией клавиш (+).
  • keyboard(5) man-страницу.
  • Секция настройки раскладки клавиатуры (keymap) см. в debian-reference («dpkg-reconfigure --priority=low xserver-xorg» предложенный способ по ссылке выше не работает в Squeeze. Вместо этого, можно попробовать добавить в ~/.xsessionrc что-то вроде «setxkbmap us,ru -option grp:ctrl_shift_toggle«).
  • Настройка дополнительных мультимедийных клавиш.

Как настроить раскладку клавиатуры в initramfs

В соответствующем разделе файла /etc/initramfs-tools/initramfs.conf надо поменять значение KEYMAP:

# # KEYMAP: [ y | n ] # # Load a keymap during the initramfs stage. # KEYMAP=y
# update-initramfs -u

Как включить USB клавиатуру в initramfs

initramfs-tools должен загружать модуль usbhid и его зависимости, для поддержки USB клавиатуры во время загрузки. Либо файл конфигурации /etc/initramfs-tools/conf.d/driver-policy должен включать большинство модулей, либо они должны быть указаны в другом файле:

# # MODULES: [ most | netboot | dep | list ] # # most - Add most filesystem and all harddrive drivers. # # dep - Try and guess which modules to load. # # netboot - Add the base modules, network modules, but skip block devices. # # list - Only include modules from the 'additional modules' list # MODULES=most

Если приведенная выше конфигурация не включает большинство модулей, то необходимые модули должны быть указаны в файле /etc/initramfs-tools/modules:

# USB keyboard at boot usbcore uhci_hcd ehci_hcd usbhid
# update-initramfs -u

Как переключить раскладку клавиатуры в X11 / графическом окружении рабочего стола

В графическом окружении должен быть апплет переключения раскладки клавиатуры. Также можно переключить раскладку клавиатуры используя терминал, например:

$ setxkbmap de $ setxkbmap fr $ setxkbmap us

Of special interest for keyboard hardware with us layout might be the altgr-intl variant (this provides a simple AltGr mapping for many umlauts and special symbols):

$ setxkbmap -rules evdev -model evdev -layout us -variant altgr-intl
$ setxkbmap -model pc105 -layout us -variant altgr-intl

To configure a simple key for toggling between multiple configured keyboard layouts, see Option XkbOptions in Section InputClass somewhere within the xorg config file collection (see [SOLVED] Setxkbmap .xinitrc).

  • Debian privacy policy, Wiki team, bugs and config.
  • Powered by MoinMoin and Python, with hosting provided by Metropolitan Area Network Darmstadt.

Debian переключение раскладки рус-англ

Здравствуйте! Есть дебиан последнескаченный. На дебиане не работает раскладка, в настройках задаю переключение раскладки на shift+alt , но все равно не переходит. Добалвяб в настройках английский — русский (фонетический), раскладка переходит на русский и не переходит на английский Погуглил по этому вопросу и нашёл что нужно поигратся с keyboard-reconfigurator, но как его установить если на сайте дебиана текстовые файлы. Прошу помочь знающих, спасибо

addi
16.08.18 15:25:56 MSK

Как настроить клавиатуру в Debian?

Установил Debian и получил кривую программную раскладку клавиатуры. А именно: при нажатии клавиши «| \ / » у меня вместо этих символов вводится «~» и «#». Менял параметр «Keyboard layout», ничего не помогает. Как привести программную раскладку клавиатуры в соответствие с физической раскладкой? Клавиатура — Defender XM500

Отслеживать

задан 6 июл 2023 в 7:07

RandomDice 779 RandomDice 779

456 3 3 серебряных знака 14 14 бронзовых знаков

А что показывает setxkbmap -print ?

6 июл 2023 в 8:04

xkb_keymap < xkb_keycodes < include "evdev+aliases(qwerty)" >; xkb_types < include "complete" >; xkb_compact < include "complete" >; xkb_symbols < include "pc+gb+inet(evdev)" >; xkb_geometry < include "pc(pc104)" >; >;

7 июл 2023 в 10:56

Надо поменять британскую раскладку ( gb ) на американскую ( us ).

7 июл 2023 в 11:09

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • debian
  • клавиатура

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *