Как в Linux Mint 20.1 изменить раскладку и настроить клавиатуру
Раскладку клавиатуры нужно настраивать во время установки операционной системе. Но в некоторых Linux системах такой возможности нет. Например, после установки ОС Manjaro в системе присутствует только один язык, который был выбран во время установки. Как привило это русский а вот английский уже нужно добавлять самостоятельно. В Linux Mint 20.1 раскладку можно настроить во время установки, но изменить эти настройки можно так же и после установки. Это базовые знания которыми должен обладать любой пользователь. Но как показывает практика сделать это может далеко не каждый, а если брать пользователей которые в возрасте то практически ни кто. Данный вывод я сделал из собственного опыта. Так как одно время администрировал организацию в которой использовалась ОС Linux Mint. Сегодня я подробно опишу процесс изменения настроек клавиатуры.
Для пополнения своих знаний рекомендую прочитать следующие статьи из которых вы узнаете о том как настроить раскладку в различных Linux системах.
Настройка клавиатуры и раскладки
Открыть настройки клавиатуры в Linux Mint можно разными способами, но самый простой это кликнуть ПКМ на значке текущей раскладки, который находиться внизу на панели задач и выбрать пункт «Параметры клавиатуры».
Первая вкладка позволяет настроить автоповтор и мигание курсора.
Вторая вкладка отвечает за раскладку клавиатуры.
Третья вкладка «Вспомогательные технологии» позволяет настроить «Залипающие клавиши», «Медленные клавиши» и «Кнопки мыши». Например, можно включить игнорирование быстрых повторных нажатий.
Для удобства можно включить управление указателем мыши с клавиатуры. В некоторых случаях это просто необходимо.
И последняя вкладка называется «Прерывание в работе». Она конечно мало относиться к настройки клавиатуры или раскладки. Но все же если она тут есть о ней нужно рассказать. Здесь можно включить принудительную блокировку экрана после определенного времени, тем самым организуя себе перерыв в работе.
Данная функция будет полезна трудоголикам которые не могут оторваться от монитора. Настройки клавиатуры во всех Linux системах практически одинаковые. Поэтому по аналогии можно изменить раскладку клавиатуры в любой другой ОС.
Источник
Тонкая настройка клавиатуры и языков в «Линуксе»
Наверное у всех нас за время работы с компьютером накапливается определенный набор бредовых желаний, которые, бывает, засядут в голове и сидят там до тех пор пока не будут выполнены. И тогда особый, ни с чем не сравнимый зуд, заставляет нас вновь и вновь продлевать свою членскую карточку в клубе «Пила и бубен». Благо, «Линукс» — та система, в которой любая настройка может быть осуществлена; да еще и тысячью разных способов. И сегодня мой рассказ будет о том, как я настраивал клавиатуру на вновь приобретенном нетбуке «Эйч-пи мини». И да, «настраивал» здесь — это эвфемизм к словам «реализовывал полный спектр своих странных требований».
Нужно иметь ввиду
Итак, есть несколько вещей, о которых лучше упомянуть, прежде чем вы твердо решите потратить свое драгоценное время на прочтение этого топика.
- Я — пользователь «Арча». Это такой дистрибутив «Линукса». Соответственно, всё что я буду описывать в данной статье апробировалось и работает в приведенном виде только на нем.
- Я — пользователь «и3». Это такой мозаичный (тайловый) оконный менеджер. У пользователей ДЕ могут возникнуть проблемы при попытках повторения у себя описываемых в этой статье манипуляций. Давайте решать вместе.
- Эта статья — не ман. Эта статья — хауту. Здесь будет мало теории и много (относительно) примеров. Из примеров вы сможете собрать свои команды и конфигурации, с шахматами и пианистками. Делающие то, что нужно вам.
Типографские соглашения.
В этом топике приняты следующие соглашения по выделению информации:
- Выделение вводимых пользователем команд осуществляется следующим образом:
$ echo Команда выполненная обычным пользователем
# echo Команда выполненная суперпользователем - Выделение частей конфигурационных файлов осуществляется аналогичным предыдущему способом.
- Названия приложений и сервисов выделены курсивом, например xxkb.
- Пути выделены жирным шрифтом, например, /urs/share/каталог/, или /urs/share/каталог/файл.
Сразу обозначу что мне было нужно, чтобы было ясно, что́ мы будем делать. Я хотел:
- Две раскладки: английскую и привычную русскую.
- Смену раскладок по нажатию «Капса».
- Типографскую раскладку по зажатию правого Альта.
- Светящийся индикатор «Капса» при включенной русской раскладке.
- Индикатор текущей раскладки в виде флага на каждом открытом окне.
- Чтобы новые окна открывались с английской раскладкой.
- Чтобы старые окна сохраняли свою раскладку независимо от переключения раскладок в других окнах.
- Функция «Делит» на правом Контроле (привык к «Делиту» справа внизу, на моем нетбуке он расположен сверху).
- Функция «Инцерт» на клавише «Делит» (той, которая справа сверху).
- Функции «Хом», «Энд», «Пэйдждаун» и «Пэйджап» на клавишах курсора при зажатом правом Альте (на клавиатурах нетбука Эйч-пи Мини 210-ой серии соответствующих кнопок нет ).
- Эмуляция правого мышиного клика по нажатию клавиши Меню.
- Эмуляция среднего мышиного клика по нажатию правый Альт + Меню.
Настройка раскладок
/.xinitrc) или вашим приложением автозапуска (в этом случае она будет выполняться последней), и наконец, читаются настройки, заданные в ГУИ-приложении которое отвечает за параметры клавиатуры. Сразу стоит отметить, что каждый последующий уровень так или иначе сбивает настройки предыдущего. Следует также отметить, что демон gdm в своем конфигурационном файле /etc/gdm/Xsession имеет строки, содержащие команду setxkbmap, и при переключении пользователей также будет сбивать настройки. Проще всего не пользоваться этим демоном или выпилить соответствующие строки из конфига. Кстати, ГНОМовские параметры клавиатуры тоже всего лишь формируют свою команду setxkbmap, которую затем и исполняют. Причем нажатие на кнопочку «параметры по умолчанию» просто выполнит ее per se, без всяких ключей, что как ни странно, не собьет существующих параметров, заданных setxkbmap или в xml-файле, но испортит настройки, заданные с помощью команды xmodmap из
/.xinitrc (решается добавлением команд xmodmap в автозапуск; выше я уже отметил, что он исполняется последним).
Настройка /etc/X11/xorg.conf.d/10-keyboard.conf
Вот как содержимое этого файла выглядит у меня:
Section «InputClass»
Identifier «evdev keyboard catchall»
MatchIsKeyboard «on»
MatchDevicePath «/dev/input/event*»
Driver «evdev»
Option «XkbModel» «pc104»
Option «XkbLayout» «us,ru(winkeys)»
Option «XkbOptions» «grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:caps,lv3:ralt_switch,misc:typo»
EndSection
Опциями задается модель клавиатуры, две раскладки — английскую и привычную русскую, переключение по нажатию клавиши «Капс», прерывание работы Иксов по нажатию сочетания клавиш Контроль, Альт и «Бэкспейс». Также здесь задается свечение индикатора «Капса» при включенной русской раскладке и переключение на третий уровень правым Альтом. На третьем уровне висит типографская раскладка «typo». В строку опций «XkbOptions» можно включить также «grp:rwin_switch», для временного переключение раскладки при зажатой левой клавише Супер. Вы можете захотеть назначить переключения на другие клавиши, вот примеры: shifts — два «Шифта», alt_shift — Альт + «Шифт», ctrl_shift — Контроль + «Шифт», et cetera. Чтобы при включении русской раскладки загорался индикатор «Скролла», — укажите «grp_led:scroll» вместо «grp_led:caps».
setxkbmap
/.i3/config) или прямо в
/.xinitrc. Если настройки все-таки сбиваются (иначе говоря, если ваша идеология странным образом позволяет использовать ДЕ и отказываться от приложений автозапуска) — можете прибегнуть к варианту со следующей записью в инициализационном скрипте:
exec sleep 45; setxkbmap -option grp:caps_toggle -option lv3:ralt_switch -option grp_led:caps -layout us+typo,ru:2+typo
Указание подождать 45 секунд позволит пропустить всё, что могло переназначить раскладку. Без него строка для включения в скрипт выглядит так:
exec setxkbmap -option grp:caps_toggle -option lv3:ralt_switch -option grp_led:caps -layout us+typo,ru:2+typo
А команда, которую вы можете выполнить в терминале немедленно и наблюдать эффект так:
$ setxkbmap -option grp:caps_toggle -option lv3:ralt_switch -option grp_led:caps -layout us+typo,ru:2+typo
Прошу прощения за излишне подробные примеры, но возможно кому-то они окажутся полезны именно в таком виде. Параметры которые задает эта команда мы уже рассмотрели говоря о файле /etc/X11/xorg.conf.d/10-keyboard.conf. После выполнения команды можете проверить раскладки, переключая их «Капсом», и типографскую раскладку, обращаясь к ее символам с зажатым правым Альтом (например, правый Альт + «-» позволит набрать тире). Полный список значений третьего ряда указывается в файле /usr/share/X11/xkb/symbols/typo. Вы можете изменять или добавлять свои символы для третьего ряда, воспользовавшись сайтом консорциума Юникод чтобы узнать обозначение интересующего вас знака. Например, добавим короткое тире на клавишу с английской буквой «N»:
.
xkb_symbols «base» <
.
key < [NoSymbol, NoSymbol, endash, minus] >;
>;
NB! После « » в примере выше я поставил гифены, чтобы запись не была пропарсена как тег. Прежде чем вставлять запись в свой файл необходимо удалить их.
Обратите внимание, кроме короткого тире (endash) мы назначили минус (minus) на ту же клавишу. Он набирается при зажатии правого Альта с «Шифтом». Хотя у меня минус стоит на клавише «m», но это дело вкуса.
Настройка параметров клавиатуры в ГУИ приложении
Думаю, они достаточно очевидны, чтобы не останавливаться на этом в статье. Тем более что я предупреждал, — речь будет идти в основном о конкретно моем варианте настроек.
Настройка изменений раскладки при переключениях окон и ее индикаторов на каждом из них
Все это сделает одно приложение, — xxkb. Установим его:
# pacman -S xxkb
После установки нужно настроить конфигурационный файл. Создадим его если он не создался сам (
/.xxkbrc) и укажем в нем следующие настройки:
XXkb.image.path:/usr/share/xxkb # Директория, в которой расположены картинки флагов — /usr/share/xxkb
XXkb.button.enable: yes # Включение функции отображения кнопочки — да
XXkb.button.border.width: # Толщина рамки вокруг кнопочки — оставили пустым, рамки не будет
XXkb.button.border.color: # Цвет рамки — оставили пустым
XXkb.button.label.enable: false # Текст на кнопочке — не будет
XXkb.button.label.font: # Шрифт текста на кнопочке — оставили пустым
XXkb.button.label.background: # Фон кнопочки — оставили пустым, у нас ведь будет флажок
XXkb.button.label.foreground: # Цвет шрифта — оставили пустым
XXkb.button.geometry: 14×14-2+1 # Высота, ширина, положение по оси абсцисс (x) относительно правого края, положение по оси ординат (y) относительно верха
XXkb.button.image.1: en15.xpm # Название файла с флажком для первой раскладки, она у нас английская, с ней будут открываться новые окна
XXkb.button.image.2: ru15.xpm # Название файла с флажком для второй раскладки, русской
XXkb.button.image.3: # Название файла с флажком для третьей раскладки — оставили пустым
XXkb.button.image.4: # Название файла с флажком для четвертой раскладки — оставили пустым
XXkb.controls.add_when_start: yes # Начинать контролировать раскладку с запуском приложения
XXkb.controls.add_when_create: yes # Начинать контролировать раскладку каждого окна с его созданием
XXkb.controls.add_when_change: no # Начинать контролировать раскладку окна только если оно в фокусе и в нем изменилась раскладка.
С такой конфигурацией каждое окно моего тайлового менеджера украшено аккуратным флажком, отображающим текущую раскладку, в заголовке. У некоторых пользователей при такой конфигурации приложение не работает должным образом и они советуют добавить вместо «XXkb.controls.add_when_change: no»
XXkb.controls.add_when_change: yes
XXkb.controls.focusout: yes
Более подробно и очень понятно о настройках приложения написано в мане. После сохранения конфигурационного файла запустите его следующей командой:
$ xxkb &
Не забудьте добавить команду в инициализационный скрипт, например
/.xinitrc:
exec xxkb
Переназначение функций клавишам
Для этого нам понадобится два приложения: xev для того чтобы узнать коды и названия клавиш и xmodmap, чтобы переназначить им функции.
$ xev
Откроется окно. По нажатию любой клавиши (кроме физической «Fn») консоль выведет нечто подобное следующему:
KeyRelease event, serial 27, synthetic NO, window 0x2400001,
root 0xfe, subw 0x0, time 34357283, (314,209), root:(318,617),
state 0x0, keycode 118 (keysym 0xff63, Insert), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Здесь нас интересует то, какую клавишу мы нажали, keycode (118 в данном случае) и keysym (Insert). Чтобы переназначит клавишу с помощью xmodmap введем следующую команду:
$ xmodmap -e «keycode 105 = Delete»
Здесь «119» — это код клавиши которой мы хотим назначит ту или иную функцию, а «Delete» — название клавиши, которой эта функция принадлежит по умолчанию. Чтобы подобная команда выполнялась всякий раз при запуске, — поместите ее в
/.xinitrc:
exec xmodmap -e «keycode 119 = Insert»
Кстати, этим же способ можно реализовать временное переключение раскладки при зажатии определенной клавиши:
exec xmodmap -e «keycode 94 = Mode_switch»
К сожалению, однако, он не позволяет назначить курсорам функции «Пэйджап», «Пэйдждаун», «Хом» и «Энд» при зажатом правом Альте. То есть позволять-то он позволяет, такая возможность есть и вы можете проверить ее командой, затем нажимая «Инсерт» в различных сочетаниях с «Капсом», «Шифтом» и Альтом:
$ xmodmap -e «keycode 105 = 1 2 3 4 5 6 7 8»
Но это сбивает возможность динамического выделения нажатием курсоров при зажатом «Шифте». Поняв, что так осуществить задуманное не получится, я стал смотреть в сторону упомянутой ранее /usr/share/X11/xkb/symbols/typo. Я думал добавить туда строку:
key < [NoSymbol, NoSymbol, Home] >;
Но это тоже сбивало выделение и пришлось обратиться к новым приложениям, — xbindkeys и xdotool (их необходимо предварительно установить). Правда первое в моем случае успешно заменила функция bind моего оконного менеджера, но вы можете использовать его. Ниже представлена строка из моего конфигурационного файла
/.i3/config, добавляющая функцию «Пэйджап» левому курсору с зажатым правым Альтом:
bind Mod5+111 exec sleep 0.15; xdotool key Prior
Обратите внимание на костыль в виде задержки в две третьих секунды. Она была подобранна эмпирическим путем. В силу системы очереди xlib и однопоточности xorg без этой задержки наша нотация должным образом работать не будет. Меньше ее делать не рекомендуется— будет срабатывать через раз. Больше — нет смысла. Вот весь участок моего конфига, задающий функции курсорам:
bind Mod5+111 exec sleep 0.15; xdotool key Prior
bind Mod5+116 exec sleep 0.15; xdotool key Next
bind Mod5+113 exec sleep 0.15; xdotool key Home
bind Mod5+114 exec sleep 0.15; xdotool key End
Использовать xbindkeys вместо оконного менеджера для этих целей наверное еще правильнее. Все что нам нужно, — это установить приложение:
# pacman -S xbindkeys
Затем вызвать окошко определения нажатой клавиши или сочетания комадой
$ xbindkeys -k
Нажать клавишу и получить вывод консоли вида:
«(Scheme function)»
m:0x80 + c:108
Mod5 + ISO_Level3_Shift
Прописать в конфигурационный файл
/.xbindkeysrc:
«sleep 0.15; xdotool key Home»
m:0x80 + c:108
Сохранить и выполнить
$ xbindkeys
Также можно добавить команду в инициализационный скрипт. Кроме того, вместо xdotool можно использовать xbkbd. Это приложение — ничто иное как виртуальная клавиатура. Попробуйте установить его и выполнить следующую команду чтобы убедиться в этом:
$ xbkbd
Настройка функций по нажатию клавиш с помощью этой команды в основном аналогична настройке с помощью xdotool и выглядит так:
bind Mod5+111 exec sleep 0.15; xvkbd -text ‘\[Prior]’
Выберите то, что больше по душе ва́м. А мне осталось рассказать о двух способах клавиатурной эмуляции нажатия кнопки мыши.
Эмуляция мышиного клика по нажатию кнопки клавиатуры
Способ 1: с помощью xdotool:
bind 135 exec xdotool click 3
bind Mod5+135 exec xdotool click 2
Первая команда назначает функцию нажатия правой кнопки мыши на клавишу Меню. Вторая — функцию средней кнопки на клавишу Маню с зажатым правым Альтом.
Способ 2: с помощью команды xmodmap. Правда чтобы воспользоваться им придется дополнительно установить пакет xkbset. С его помощью мы разрешим эмуляцию нажатия кнопки мыши и снимем лимит времени на действие этого разрешения (изначально приложение разрабатывалось для людей с ограниченными возможностями по использованию мыши). А затем назначим кнопку на клавишу Меню:
exec xkbset m
exec xkbset exp =m
exec xmodmap -e «keycode 78 = Pointer_Button2»
Заключение
Это все что я хотел рассказать сегодня о настройках клавиатуры. В следующий раз попробуем разобраться с демоном actkbd; возможно с его помощью получится удовлетворить существующим требованиям более изящным образом. А этот текст подготовлен в редакторе Вим, спасибо за внимание ;-)
Источник