Содержание
Для того, чтобы пользователь мог с помощью компьютера набирать текст на разных языках, была придумана раскладка клавиатуры. После смены раскладки одним и тем же клавишам присваиваются другие символы. Можно добавить несколько раскладок, но активной в определённый момент может быть только одна.
Обычно после установки уже есть две раскладки клавиатуры Ubuntu — это английская и та, которую вы выбрали во время установки. Вы можете убедится в этом, нажав на значке переключение раскладки клавиатуры Ubuntu:
Но если вам нужно добавить ещё и третью раскладку, например украинскую, то сделать это не так сложно. Откройте параметры системы:
Затем выберите пункт Регион и язык. Далее под списком раскладок клавиатуры найдите кнопку со значком «+«:
Вы можете выбрать раскладку из списка предложенных, а если её там нет, то можно нажать кнопку с тремя точками, чтобы открыть полный список. В этом списке можно использовать поиск:
Далее останется только выбрать нужную раскладку и нажать кнопку Добавить, после этого она появиться в списке:
Некоторые раскладки не доступны в стандартном списке, чтобы их открыть, выполните в терминале команду:
Раскладки можно менять местами, для этого выберите раскладку и используйте соответствующие стрелочки:
Ещё во времена Windows XP раскладка клавиатуры переключалась с помощью сочетания клавиш Ctrl+Shift, во времена Windows Vista/7 сочетание клавиш для переключения изменилось на Alt+Shift, а с приходом Windows 8 было добавлено ещё одно сочетание — Super+Пробел, которое в дополнение выводит список раскладок на экран.
Все эти сочетания клавиш перекочевали в Linux, и сейчас смена раскладки клавиатуры Ubuntu 18.04 может быть выполнена такими способами:
- Alt+Shift— переключить раскладку на следующую;
- Super+Пробел — переключить источник ввода на следующий с выводом на экран;
- Super+Shift+Пробел— переключить источник ввода на предыдущий с выводом на экран;
Super — это клавиша со значком Windows, это название пошло от название аналогичной кнопки в MacOS. Изменить сочетания клавиш для переключения на следующий и предыдущий источник ввода можно в разделе Устройства -> Клавиатура:
Выберите нужный пункт и нажмите комбинацию, которую надо установить вместо Super+Пробел. Здесь же можно полностью отключить эти сочетания, нажав в окне выбора комбинации клавишу Backspace.
Установить вместо Alt+Shift привычную многим Ctrl+Shift не так просто, но возможно, для этого вам понадобится утилита Gnome Tweaks:
Откройте утилиту, перейдите на вкладку Клавиатура и мышь, затем выберите Дополнительные настройки раскладки:
Здесь в разделе Переключение на другую раскладку можно выбрать сочетание клавиш для переключения, доступны не только Ctrl+Shift, но и Win, Caps Lock и многие другие.
Если же вам нужно изменить раскладку клавиатуры Ubuntu 18.04 именно по сочетанию Ctrl+Shift, и вы не хотите устанавливать никаких утилит, можете воспользоваться командой:
Но обратите внимание, что при выборе сочетания Ctrl+Shift, раскладка будет переключаться каждый раз, когда вы открываете терминал.
В этой небольшой статье мы рассмотрели, как настраивается раскладка клавиатуры Ubuntu и сочетания клавиш для её изменения. Раньше среди пользователей были популярны флаги вместо индикаторов раскладки, но сейчас эта возможность была удалена из Gnome, вы можете её использовать разве что в Cinnamon или Mate.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
В данном материале рассматривается, как изменить сочетание клавиш, которое используется для переключения раскладки клавиатуры в Ubuntu Linux.
Данное руководство можно использовать для Ubuntu 18.04, 18.10, 19.04 и, скорее всего, для других версий Ubuntu, использующих GNOME 3.
Примечание для посетителей: Если произойдут изменения в способе настройки раскладок клавиатуры в Ubuntu, пожалуйста, напишите об этом в комментариях, чтобы мы обновили материал.
Оглавление
- Сочетание, используемое по умолчанию, для смены раскладки в Ubuntu
- Как изменить сочетание клавиш для переключения раскладки
- Смена сочетания клавиш через утилиту Gnome Tweaks
- Смена сочетания клавиш через Параметры системы
Сочетание, используемое по умолчанию, для смены раскладки в Ubuntu
По умолчанию в Ubuntu Linux для смены раскладки клавиатуры используется сочетание клавиш:Super+Пробел
Для переключения раскладок клавиатуры в обратном порядке используется сочетание клавиш: Super+Shift+Пробел
Клавиша Super это клавиша, которая обычно расположена между клавишами Ctrl и Alt. На Windows клавиатурах на ней расположен логотип Windows.
Как изменить сочетание клавиш для переключения раскладки
Изменить сочетание клавиш для переключения раскладки клавиатуры в Ubuntu можно двумя основными способами:
- Используя утилиту Gnome Tweaks
- Используя штатную утилиту Параметры системы (Settings)
Почему мы рассматриваем два способа? Дело в том, что штатная утилита Параметры системы не позволяет установить такие сочетания, как Ctrl+Shift, Alt+Shift и некоторые другие. Утилита Gnome Tweaks позволяет это сделать.
Смена сочетания клавиш через утилиту Gnome Tweaks
Если у вас не установлена утилита Gnome Tweaks, то ее нужно сначала установить. Это можно сделать через штатный Менеджер приложений Ubuntu, используя поиск по фразе «gnome tweaks«. На русском языке приложение переведено как «Доп. настройки GNOME«.
Также можно установить Gnome Tweaks через терминал. Откройте терминал (для этого можно нажать сочетание клавиш Ctrl+Alt+T). Выполните команду:
sudo apt install gnome-tweaks
Запустите утилиту Gnome Tweaks. Запустить можно из Лаунчера (иконка «Доп. настрой…«).
Выберите вкладку Клавиатура и мышь и нажмите кнопку Дополнительные параметры раскладки
Откроется окно с разворачивающимся списком настроек комбинаций клавиш. Найдите пункт Переключение на другую раскладку. Установите галочку напротив сочетания, которое вы хотите использовать для переключение раскладки клавиатуры.
Смена сочетания клавиш через Параметры системы
Как было сказано выше, сочетание клавиш для переключения раскладки клавиатуры можно изменить через Параметры системы, но данная утилита не поддерживает установку некоторых сочетаний, которые часто используются для переключения раскладки.
Запустите Параметры системы. Для этого можно нажать сочетание клавиш Super+A и в Лаунчере найти значок Параметров системы — Параметры (Settings).
Откроется окно Параметров системы. Перейдите на вкладку Устройства.
Перейдите на вкладку Клавиатура. В правой части вы можете видеть список «Комбинации клавиш», который содержит список используемых в текущий момент сочетаний клавиш в системе.
Комбинации клавиш, используемые для смены раскладки клавиатуры, представлены пунктами:
- Переключиться на предыдущий источник ввода — по умолчанию Super+Shift+Пробел
- Переключиться на следующий источник ввода — по умолчанию Super+Пробел
Нажмите на соответствующий пункт, чтобы изменить сочетание клавиш для него. Откроется окно для ввода нового сочетания.
Нажмите на клавиатуре новое сочетание клавиш. Не все сочетания можно использовать в этом окне. Если сочетание можно установить, то оно отобразится в окне. Если оно вам подходит, нажмите кнопку Установить.
- Чулан*
Наверное у всех нас за время работы с компьютером накапливается определенный набор бредовых желаний, которые, бывает, засядут в голове и сидят там до тех пор пока не будут выполнены. И тогда особый, ни с чем не сравнимый зуд, заставляет нас вновь и вновь продлевать свою членскую карточку в клубе «Пила и бубен». Благо, «Линукс» — та система, в которой любая настройка может быть осуществлена; да еще и тысячью разных способов. И сегодня мой рассказ будет о том, как я настраивал клавиатуру на вновь приобретенном нетбуке «Эйч-пи мини». И да, «настраивал» здесь — это эвфемизм к словам «реализовывал полный спектр своих странных требований».
Нужно иметь ввиду
Итак, есть несколько вещей, о которых лучше упомянуть, прежде чем вы твердо решите потратить свое драгоценное время на прочтение этого топика.
- Я — пользователь «Арча». Это такой дистрибутив «Линукса». Соответственно, всё что я буду описывать в данной статье апробировалось и работает в приведенном виде только на нем.
- Я — пользователь «и3». Это такой мозаичный (тайловый) оконный менеджер. У пользователей ДЕ могут возникнуть проблемы при попытках повторения у себя описываемых в этой статье манипуляций. Давайте решать вместе.
- Эта статья — не ман. Эта статья — хауту. Здесь будет мало теории и много (относительно) примеров. Из примеров вы сможете собрать свои команды и конфигурации, с шахматами и пианистками. Делающие то, что нужно вам.
Типографские соглашения.
В этом топике приняты следующие соглашения по выделению информации:
- Выделение вводимых пользователем команд осуществляется следующим образом:
$ echo Команда выполненная обычным пользователем # echo Команда выполненная суперпользователем
- Выделение частей конфигурационных файлов осуществляется аналогичным предыдущему способом.
- Названия приложений и сервисов выделены курсивом, например xxkb.
- Пути выделены жирным шрифтом, например, /urs/share/каталог/, или /urs/share/каталог/файл.
Цель
Сразу обозначу что мне было нужно, чтобы было ясно, что́ мы будем делать. Я хотел:
- Две раскладки: английскую и привычную русскую.
- Смену раскладок по нажатию «Капса».
- Типографскую раскладку по зажатию правого Альта.
- Светящийся индикатор «Капса» при включенной русской раскладке.
- Индикатор текущей раскладки в виде флага на каждом открытом окне.
- Чтобы новые окна открывались с английской раскладкой.
- Чтобы старые окна сохраняли свою раскладку независимо от переключения раскладок в других окнах.
- Функция «Делит» на правом Контроле (привык к «Делиту» справа внизу, на моем нетбуке он расположен сверху).
- Функция «Инцерт» на клавише «Делит» (той, которая справа сверху).
- Функции «Хом», «Энд», «Пэйдждаун» и «Пэйджап» на клавишах курсора при зажатом правом Альте (на клавиатурах нетбука Эйч-пи Мини 210-ой серии соответствующих кнопок нет ).
- Эмуляция правого мышиного клика по нажатию клавиши Меню.
- Эмуляция среднего мышиного клика по нажатию правый Альт + Меню.
Настройка раскладок
Есть три варианта настроек раскладок клавиатуры в «Иксах». Рассмотрим их в том порядке, в котором они будут читаться системой: сперва читаются правила, записанные в xml-файле из /etc/X11/xorg.conf.d/, затем исполняется команда setxkbmap из какого-нибудь init-скрипта (например, ~/.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
Еще раз, — этот способ является альтернативным первому. Конечно, он может использоваться и вместе с ним (не знаю зачем), но конкурентные настройки будут переназначены командой 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 <AB06> { [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: 14x14-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 <Left> { [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; возможно с его помощью получится удовлетворить существующим требованиям более изящным образом. А этот текст подготовлен в редакторе Вим, спасибо за внимание ;-)
Источники
Используемые источники:
- https://losst.ru/raskladka-klaviatury-v-ubuntu
- https://pingvinus.ru/note/ubuntu-change-layout-hotkeys
- https://habr.com/sandbox/21270/