Switching keyboard language linux

Switch between languages in Linux with xkb. Write in multiple languages with same keyboard.

How to set up multiple keyboard layouts from console.

Overview

A guide for Linux polyglots to use Cyrillic letters, Chinese characters, Latin letters and any other language in Linux, with the ability to easily switch between them in an X11 graphical environment or console.

The X11/Xorg server uses XKB, the X Keyboard Extension, to control the available keyboard layouts.

If we want to use many languages with the same keyboard, we will have to address four main topics: model, layout, variant and options.

To specify the different languages, we use the command setxkbmap which sets the keyboard using the X Keyboard Extension.

It is used like: setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options] so the in each topic we will see how to fulfill each parameter.

1. Current configuration

You can see your current configuration with setxkbmap -query or for further details setxkbmap -print -verbose 10 .

In Debian/Ubuntu systems the default keyboard layout is described in /etc/default/keyboard 1 .

At this stage we pay particular attention to the current “physical” keyboard model.

XkbModel selects the keyboard model. This has an influence only for some extra keys your keyboard might have. The safe fallback are pc104 or pc105. But for instance laptops usually have some extra keys, and sometimes you can make them work by simply setting a proper model.

2. Languages

Select which keyboard layouts are needed, i.e.: the languages you will use.

XkbLayout selects the keyboard layout. Multiple layouts may be specified in a comma-separated list, e.g. if you want to quickly switch between layouts.

For a complete list of keyboard layouts and its descriptions check /usr/share/X11/xkb/rules/base.lst .

The layout name is often the typical two letter country code. e.g.: for Russian: ru.

3. Variants

For each layout, a variant can be chosen.

XkbVariant selects a specific layout variant. For instance, the default sk variant is qwertz, but you can manually specify qwerty, etc.

The full list of variants can also be seen at /usr/share/X11/xkb/rules/base.lst .

For example you can choose:

For a Russian layout, a phonetic variant is available, which will make it writing Russian in a Latin/US keyboard very intuitive.

And to see specifically the mappings it has, consult the proper layout file, e.g. for Russian (ru): /usr/share/X11/xkb/symbols/ru and locate the xkb_symbols «phonetic» . It will have all the key mappings like: key < [ Cyrillic_te, Cyrillic_TE ] >; where it specifies that the Latin T key will be the Cyrillic version: С‚ .

4. Switch between layouts

XkbOptions contains some extra options (comma-separated). Used for specifying layout switching, notification LED, compose mode etc.

To switch between the keyboard layouts we rely on the options parameter of XKB .

It already comes with a list of possible key combinations that will be switching between all the specified layouts listed in /usr/share/X11/xkb/rules/base.lst , starting with grp: and ending with toggle .

5. Testing

To test it works as desired, we specify the command and try to switch between layouts.

For example for English and Russian (phonetic) keyboards switching with both CTRL keys pressed at the same time: setxkbmap -model pc105 -layout us,ru -variant ,phonetic -option grp:ctrls_toggle .

Then we press both CTRL and start typing in Р СѓСЃСЃРєРёР№.

6. Persisting Changes

setxkbmap changes the layout for the current X session only.

To keep changes in the next reboot we can choose between:

  • Manually changing the configuration files:
    • xinitrc or
    • xprofile .
  • Using the command localectl which automatically saves the new configuration.

6.1 Manual

Create the X11 configuration file /etc/X11/xorg.conf.d/00-keyboard.conf with the new data:

Читайте также:  Mac os удалить файлы outlook

6.2 Automatic

locatectl automatically creates/updates the required configuration file /etc/default/keyboard (in Ubuntu) or /etc/X11/xorg.conf.d/00-keyboard.conf .

It is used like: $ localectl [—no-convert] set-x11-keymap layout [model [variant [options]]]

Following the above example:

7. Graphical indicator

Finally we add an X11 keyboard indicator and switcher.

gxkb is an utility that switchs the language selecting it from a menu, and shows an icon with the current active layout.

If you change the layout with the above combination key, gxkb also updates and show the current layout.

To install it in Debian/Ubuntu: sudo apt-get install gxkb .

Keyboards layout references

To generate any graphical representation of the keyboard layout, use gkbd-keyboard-display -l » or xkbprint .

  • for English US version: gkbd-keyboard-display -l us
  • for English US with altgr-intl variant: gkbd-keyboard-display -l “us(altgr-intl)»

Each letter on the keyboard can have up to 4 symbols associated. They are defined in /usr/share/X11/xkb/symbols/ for each language in the form of key < [ symbol1, symbol2, symbol3, symbol4 ] >; .

Each symbol can be accesed with:

  • unmodified
    • press a letter without any other modificator
  • shift
    • press SHIFT +
    • access the upper left letter symbol definition
  • altgr
    • press ALT gr +
    • access the bottom right letter symbol definition
  • shift+altgr
    • press SHIFT + ALT gr +
    • access the upper left letter symbol definition

altgr stands for Alt Graph and is the right alt key. “Is a modifier key used to type characters that are unusual for the locale of the keyboard layout”. 2

Example key layout and how to access each symbol:

Источник

Linux Mint Forums

Welcome to the Linux Mint forums!

Shortcut for switching between keyboard layouts (languages)?

Shortcut for switching between keyboard layouts (languages)?

Post by beansandjeans » Tue Jan 01, 2013 6:11 pm

So I recently installed Mint 13 XFCE on a netbook, and this computer is shared with someone who uses the German keyboard layout. I have both keyboard layouts (German and US English) set-up, but the process of switching between them is somewhat tedious — I have to go into the keyboard settings menu, and from there to the layout tab, and then switch from one language to the other. I put a shortcut to this menu on the desktop, so at least I don’t have to navigate through the menu to get to it, but it’s still rather tedious.

This is the first time I’ve worked used multiple keyboard layouts on a Linux computer. On Windows it was always just a matter of Alt-Shift.

So I’m wanting to know if there’s any existing shortcut that could be used, or if one could be set up.

In that same keyboard menu there’s an «application shortcuts» tab, and I’ve made a new shortcut already for an application, but I imagine this might also work for other keyboard shortcuts in general. But for that I need a command, and I don’t know what the command is to switch between keyboard layouts. I hope there is one, and preferably one that can be used to toggle it in either direction (the same command to switch from English to German and vice versa), but if has to be two separate commands that’s not a big deal.

All help much appreciated! Thanks

Re: Shortcut for switching between keyboard layouts (languag

Post by beansandjeans » Sat Jan 05, 2013 8:38 pm

Nobody had replied here, so I did a bit more digging and finally found a thread on a PC Linux forum which discussed this: http://www.pclinuxos.com/forum/index.php?topic=95438.0

One of the replies gave this command: «setxkbmap XX» (excluding the quotation marks), with the «XX» for the keyboard layout language.

So for the shortcuts then, «setxkbmap de» ended up working for German. «setxkbmap en» DOESN’T work for English, but «setxkbmap us» did, and I would imagine similar commands for other variants would as well, like «setxkbmap uk» for the UK English layout.

I’m not sure if these commands also work in Gnome/MATE or other environments, or if they’re just for XFCE.

Also still don’t know if there’s one command that would toggle it in both directions. If anyone knows if that’s possible, please let me know.

But at least it’s working a lot better now than having to go into the menu each time!

Re: Shortcut for switching between keyboard layouts (languag

Post by nissimnanach » Mon Jan 14, 2013 4:18 pm

LINUX MINT 14: LEFT SHIFT + CAPS LOCK is default

Change default by:
1. Right-click on keyboard language indicator in right
2. Select «Layouts» tab
3. Options: KEYS TO CHANGE LAYOUT

Re: Shortcut for switching between keyboard layouts (languag

Post by OxidE » Wed Jan 16, 2013 9:38 am

Читайте также:  Обзор средств администрирования windows 10

Re: Shortcut for switching between keyboard layouts (languag

Post by dman » Sat Jan 19, 2013 5:26 pm

That’s to switch between English-US and German-DE on the command line using Alt+Shift.

I’m trying to figure out where to put that for a permanent setting. I know where in Lubuntu, but that path and file are not applicable to xfce.

Re: Shortcut for switching between keyboard layouts (languag

Post by yarlipo » Wed Mar 13, 2013 5:48 pm

It amazes me that Linux Mint doesn’t have a built in solution for toggling languages. Nevertheless, I used the solution posted above, and I figured out a way to store it between sessions. Hopefully people can find this straight away, it took me days to find a solution.

Go to Menu — Settings — Session and Startup. Chose application autostart. Click on add. Fill in the first two lines with whatever you prefer, and then in the Command field paste the code dman kindly provided:

setxkbmap -option grp:alt_shift_toggle «de,us»

replacing de and us with your own language code.

Note that the language mentioned first will be activated as the default language when you boot.

That’s it! Now your linux mint install remembers the toggle between sessions.

Источник

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

Для чего вообще специально настраивать клавиатуру?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечание

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

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

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

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

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

Читайте также:  Не запускается sql developer restoring windows

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

ESC и CapsLock

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

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

Alt и Win

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И главное, что это реально упростило процесс набора текста.

Замечание

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

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

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

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

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

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

Источник

Оцените статью