Linux console (Русский)/Keyboard configuration (Русский)
Состояние перевода: На этой странице представлен перевод статьи Keyboard configuration in console. Дата последней синхронизации: 26 июля 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
- Конфигурация клавиатуры в Xorg
- Дополнительные клавиши
- Консоль Linux#Шрифты
Сопоставление клавиш (раскладки) для виртуальной консоли, консольных шрифтов и консольных карт предоставляется пакетом kbd (зависимость для systemd), который также предоставляет множество инструментов низкого уровня для управления виртуальной консолью. Кроме того, systemd также предоставляет инструмент localectl, который может контролировать как локали системы, так и настройки раскладки клавиатуры как для виртуальной консоли, так и для Xorg.
Просмотр настроек клавиатуры
Используйте localectl status для просмотра текущих конфигураций клавиатуры.
Раскладки клавиатуры
Файлы раскладок хранятся в дереве каталогов /usr/share/kbd/keymaps/ . Обычно один файл keymap соответствует одной раскладке клавиатуры (оператор include может использоваться для совместного использования общих частей, а файл keymap может содержать несколько схем с некоторой комбинацией клавиш, используемой для переключения). Для получения дополнительной информации смотрите keymaps(5) .
Список раскладок
Соглашения об именах консольных раскладок несколько условны, но обычно они основаны на:
- Коды языков: где код языка совпадает с кодом страны (например, ru для русского языка или fr для французского языка).
- Коды стран: где варианты одного и того же языка используются в разных странах (например, uk для английского языка в Великобритании или us для Соединенных Штатов Америки); список кодов стран также можно найти в w:ru:ISO 3166-1#Список кодов по ISO 3166.
- Раскладка клавиатуры: где раскладка не связана с конкретной страной или языком (например, dvorak для раскладки клавиатуры Dvorak).
Для получения списка всех доступных раскладок используйте команду:
$ localectl list-keymaps
Чтобы найти раскладку клавиатуры, используйте следующую команду, заменив search_term кодом для вашего языка, страны или раскладки:
$ localectl list-keymaps | grep -i search_term
Альтернативно, используя find:
$ find /usr/share/kbd/keymaps/ -type f
Временная конфигурация (Loadkeys)
Можно установить раскладку только для текущего сеанса. Это полезно при проверке различных раскладок, решение проблем и т.д.
Для этого используют инструмент loadkeys. Он используется внутри systemd при загрузке раскладки клавиатуры, настроенной в /etc/vconsole.conf . Пользоваться им легко:
# loadkeys раскладка_клавиатуры
Для получения дополнительной информации смотрите loadkeys(1) .
Постоянная конфигурация
Постоянную комбинацию клавиш можно установить в /etc/vconsole.conf , которая считывается systemd при запуске. Для указания раскладки используется переменная KEYMAP . Если переменная пуста или не установлена, в качестве значения по умолчанию используется раскладка us . Смотрите vconsole.conf(5) для получения информации обо всех параметрах. Например:
/etc/vconsole.conf
KEYMAP=ru .
Для удобства, localectl можно использовать для настройки раскладки клавиатуры. Он изменит переменную KEYMAP в /etc/vconsole.conf , а также установит раскладку для текущего сеанса:
$ localectl set-keymap --no-convert раскладка_клавиатуры
Опцию —no-convert можно использовать для предотвращения localectl автоматического изменения раскладки клавиатуры в Xorg до ближайшего совпадения. Для получения дополнительной информации смотрите localectl(1) .
Создание своей раскладки
Вы используете горячие клавиши для вывода особенных символов, пользуясь консолью. Кроме того, мы можем также напечатать последовательность символов и некоторые escape-последовательности. Таким образом, если мы печатаем последовательность символов, составляющих команду, а затем escape-символ для новой строки, эта команда будет выполнена.
Один из способов сделать это — отредактировать файл раскладки. Однако, поскольку он будет перезаписан в любое время, когда пакет, к которому он принадлежит, обновляется, редактирование этого файла не рекомендуется. Лучше объединить существующую раскладку со своей. Утилита loadkeys может сделать это.
Сначала, создайте файл раскладки. Этот файл раскладки может быть где угодно, но этот способ подражает иерархии каталогов в /usr/local :
# mkdir -p /usr/local/share/kbd/keymaps # vim /usr/local/share/kbd/keymaps/personal.map
В качестве примечания следует отметить, что личная раскладка также полезна для переопределения поведения клавиш, уже обработанных стандартной раскладкой: при загрузке с помощью loadkeys директивы в стандартной раскладке будут заменены при конфликте с новыми директивами и сохраняются в противном случае. Таким образом, только изменения в раскладке должны быть указаны в личной раскладке.
Совет: Также вы можете изменить существующую раскладку, расположенную в дереве каталогов /usr/share/kbd/keymaps/ . Раскладка имеет расширение .map.gz, например Американская раскладка — us.map.gz . Просто скопируйте раскладку в /usr/local/share/kbd/keymaps/personal.map.gz и распакуйте.
Добавление директив
- Keycode — это номер генерируемый вашей клавиатурой при нажатии на определенную клавишу. Например, кнопка пробела сгенерирует Keycode=128.
- Keysym — это просто слово используемое для обозначения типа клавиши. Эта концепция очень важна, потому как позволяет программам не оперировать с кодами напрямую, а работать с клавиатурой по названиям клавишь.
В этой личной раскладке требуются два типа директив. Прежде всего директивы keycode, которые соответствуют формату, указанному в стандартных раскладках по умолчанию. Эти директивы сопоставляют keycode с keysym. Keysyms представляют действия клавиатуры. Доступные действия включают вывод кодов символов или последовательностей символов, переключение консолей или раскладок клавиатуры, загрузку машины и многие другие действия. Полную активную текущую раскладку можно получить с помощью
# dumpkeys -l
Большинство keysyms интуитивно понятны. Например, чтобы настроить клавишу 112 для вывода символа ‘e’, директива примет следующий вид:
keycode 112 = e
Чтобы настроить клавишу 112 для вывода символа евро, директива будет следующего вида:
keycode 112 = euro
Некоторые keysym не сразу связаны с действиями клавиатуры. В частности, keysyms с префиксом заглавной буквы F и от одной до трех цифр (F1-F246), составляющие число больше 30, всегда свободны. Это полезно для указания горячей клавиши для вывода последовательности символов и других действий:
keycode 112 = F70
Затем F70 может быть связан для вывода определенной строки:
string F70 = "Hello"
Когда клавиша 112 нажата, она выведет содержимое F70. Чтобы выполнить команду в терминале, символ окончания новой строки должен быть добавлен в конец строки с командой. Например, чтобы ввести систему в спящий режим, добавляется следующая строка в раскладку:
string F70 = "sudo /usr/sbin/hibernate\n"
Другие примеры
- Чтобы сделать клавишу Правый Alt такой же как клавиша Левый Alt (для Emacs), используй следующую строку в своей раскладке. Это включит файл /usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc , посмотри его для получения дополнительной информации.
- Чтобы поменять местами CapsLock и Escape (для Vim), выполните переназначение соответствующих кодов клавиш:
keycode 1 = Caps_Lock keycode 58 = Escape
- Чтобы сделать CapsLock еще одним Control, выполните переназначение соответствующих кодов клавиш:
keycode 58 = Control
- Чтобы поменять местами CapsLock и Левый Control, выполните переназначение соответствующих кодов клавиш:
keycode 29 = Caps_Lock keycode 58 = Control
Сохранение изменений
Чтобы использовать свою раскладку, нужно ее загрузить с помощью loadkeys:
$ loadkeys /usr/local/share/kbd/keymaps/personal.map
Однако, эта раскладка активна только для текущего сеанса. Чтобы загрузить ее при загрузке, укажите полный путь файла вашей раскладки в переменной KEYMAP в /etc/vconsole.conf. Файл не должен быть запакован, как официальные раскладки, представленные kbd .
Регулировка задержки и скорости автоповтора
Задержка автоповтора означает количество времени (обычно в милисекундах), за которое необходимо нажать и удерживать клавишу для начала повторного процесса. После запуска повторяющегося процесса символ будет повторяться с определенной частотой (обычно заданной в Гц), указанной скоростью автоповтора. Эти значения могут быть изменены с помощью команды kbdrate. Обратите внимание, что эти настройки настраиваются отдельно для виртуальной консоли и для Xorg.
# kbdrate [-d delay] [-r rate]
Например, чтобы установить задержку автоповтора в 200 мс и скорость автоповтора в 30 Гц, используйте следующую команду:
# kbdrate -d 200 -r 30
Ввод команды без указания задержки и скорости автоповтора приведет к сбросу значений до их соответствующих значений по умолчанию; задержка 250 мс и скорость 11 Гц:
# kbdrate
Служба systemd
Службу systemd можно использовать для установки скорости клавиатуры. Например
/etc/systemd/system/kbdrate.service
[Unit] Description=Keyboard repeat rate in tty. [Service] Type=oneshot RemainAfterExit=yes StandardInput=tty StandardOutput=tty ExecStart=/usr/bin/kbdrate -s -d 450 -r 60 [Install] WantedBy=multi-user.target
Затем запустите/включите службу systemd kbdrate.service .
- Linux console (Русский)
- Keyboard configuration (Русский)
sparky/xfce — при добавлении индикатора раскладки 100% cpu
Жрет xorg. То же касается pulseaudio. Отчего так? Индикатор нужен, ползунок громкости тоже..
whoim
04.02.18 02:10:03 MSK
У меня так было с индикатором батареи. Пиши багрепорт, что ещё делать. Ну или можешь сам отладить.
anonymous
( 04.02.18 08:38:29 MSK )
А если после добавления релогинуться или ребутнуться?
Infra_HDC ★★★★★
( 04.02.18 11:40:11 MSK )
Ответ на: комментарий от Infra_HDC 04.02.18 11:40:11 MSK
whoim
( 04.02.18 12:49:30 MSK ) автор топика
Ответ на: комментарий от anonymous 04.02.18 08:38:29 MSK
проще на другой дист уйти
whoim
( 04.02.18 12:50:02 MSK ) автор топика
У меня похожий косяк в gentoo. Проявляется с определённой вероятностью при запуске приложения на gtk3 со значком в трее. ЛОР ничего подсказать не смог, ошибок в логах нет, лекарства и даже временного костыля найти не смог.
kirill_rrr ★★★★★
( 04.02.18 16:33:30 MSK )
Ответ на: комментарий от whoim 04.02.18 12:49:30 MSK
Значит майнит что-то. Либо просто формирует у юзера майнерозависимость.
Установка SparkyLinux
Дистрибутив SparkyLinux предназначен для старых компьютеров и не требователен к аппаратным ресурсам.
Установка дистрибутива выполняется из Live-системы. Используется простой инсталлятор, который используется в других популярных дистрибутивах. Рассмотрим, процесс установки системы.
Оглавление
- Видео-обзор и установка
- Подготовка
- Установка
- Первый запуск
- Заключение
Видео-обзор и установка
Наш видео-обзор дистрибутива SparkyLinux:
Подготовка
Скачайте образ, который вы будете устанавливать. Подробнее о редакциях вы можете почитать на странице дистрибутива.
В данном руководстве рассматривается установка редакции SparkyLinux LXDE, которая основана на Debian stable.
Выполните загрузку с созданного носителя.
Установка
В Live системе дважды щелкните по иконке Sparky Installer . Откроется программа установки.
Выберите язык будущей системы. Русский присутствует. На следующем экране выберите часовой пояс.
Выберите раскладку клавиатуры. Сейчас можно выбрать английскую. Русскую раскладку можно будет потом добавить уже после установки.
Следующий шаг — это разметка диска. Процесс разметки диска подробно разобран в Руководстве по установке Linux Mint. Интерфейс для создания разделов там практически ничем не отличается.
Введите данные о пользователе и имени компьютера (hostname). Запомните имя пользователя, так как его нужно будет вводить вручную в окне входа в систему.
Отобразится окно с параметрами установки. Проверьте, все ли там верно.
Запустится процесс установки.
Когда установка завершится, появится следующее окно. Установите галочку перезагрузить. Не забудьте извлечь носитель, с которого вы устанавливали систему, чтобы повторно не запустить загрузку Live системы.
Первый запуск
Когда система загрузится, появится окно входа в систему. В нем нужно вписать свое имя пользователя и пароль.
При первом входе в систему автоматически запустится утилита обновления. Можно сразу же выполнить обновление системы.
После обновления системы, запустится утилита для установки дополнительных языковых пакетов.
Заключение
Мы кратко рассмотрели процесс установки системы. Также вы можете ознакомится с нашим видео, в котором показан процесс установки, рассказывается о редакциях дистрибутива, рассматриваются редакции SparkyLinux LXDE и SparkyLinux GameOver Edition.
Linux. Настройка клавиатуры
Можно пользоваться и стандартными настройками, но иногда внесенные изменения дают возможность набирать быстрее (это, конечно, не слепая печать, но все же), совершать меньше ошибок, меньше переключать раскладку.
Почему я захотел изменить свою клавиатуру?
Во-первых, когда я начал использовать vim как основной редактор, я понял, что не хочу каждый раз тянуться к ESC . Кроме того, я писал в основном на питоне, поэтому ; нажимал сильно реже, чем : , а в vim разница стала более явной.
Во-вторых, через некоторое время я стал пользоваться вимовскими комбинациями для навигации в браузере, дальше — тайловый оконный менеджер i3 , где они тоже использовались, и хотелось перейти на них везде (вместо обычных стрелок, например, в файловом менеджере).
В-третьих, когда начал писать конспекты на TeX в vim , я понял, что могу реально упростить и ускорить этот процесс; если английская и русская раскладки будут больше похожи друг на друга, то я смогу вводить одинаковые символы (например, точку, запятую, кавычки, доллар) одинаково. Плюс приходится часто менять язык, поэтому надо это делать быстро, надежно и удобно.
Настройка переключения раскладки
Что же, начнем. Сначала разберемся, как можно настроить смену раскладки клавиатуры.
- Первый способ. Можно воспользоваться какой-нибудь программой, например, 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.
Этот пост стал для меня отправной точкой к пониманию того, как можно и нужно настроить клавиатуру.