суббота, 1 августа 2009 г.

Альтернативный способ переключения раскладок

Около года я пользовался клавишей <CAPS LOCK> для переключения раскладки.
На днях почувствовал, что это не так удобно, как хотелось бы.
А захотелось включать раскладку, а не переключать. Сначала думал, что хорошо бы задействовать клавишу WIN для включения латинской раскладки, а MENU использовать для включения русской. Даже вспомнил, что таким устройством пользуется alv (хотя оказалось, что на самом деле это В. Повов).
По рекомендации альва зашел на линуксфорум и прочитал труд sash-kan "Заметки на полях клавиатуры". Выяснилось, что метод включения раскладок принято называть "нециклическим способом переключения". Просмотрев приведенные примеры переключения, я не смог остановиться ни на одном, а клавиши WIN и MENU решил оставить для других действий.
В итоге было решено использовать сочетание SHIFT_R+SHIFT_L для латинской раскладки и SHIFT_R+CTRL_L для включения русской.

Теперь слайды. Для начала разберемся что нам нужно сделать для достижения цели. Потребуется создать новый режим переключения, потом создать правило ( чтобы иксы узнали где находится описание режима) и добавить это правило в файл конфигурации X сервера у меня он находится в /etc/X11/xorg.conf, останется только перезапустить иксы, чтобы настройки вступили в силу.

$ cat /usr/share/X11/xkb/symbols/mysym

// illustrative xkb scripts for "notes on kb margins"
// Copyright (C) 2007 alexander d. barakin aka sash-kan
// a-barakin at ukr dot net
//
// Added shsh_shctrl layout
// Fri Jul 24 16:38:55 MSD 2009
// by Alexader (su6s) Polyakhov
// apolyakhov@gmail.com
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.

partial modifier_keys xkb_symbols "shift-shift_shift-ctrl" {
key <LFSH> {
[ Shift_L , ISO_First_Group ]
};
key <RTSH> {
type="PC_BREAK",
symbols[Group1]= [ Shift_R, ISO_Last_Group ]
};
key <LCTL> { [ Control_L, ISO_Last_Group ] };
};


Таким образом, наш новый режим, добавленный в файл mysym называется shift-shift_shift-ctrl. Клавиша левый SHIFT выполняет свою обычную функцию, в то время как, нажатая вместе с правым шифтом - включает первую раскладку (латиница является первой раскладкой по-умолчанию). По описанию клавиши правый шифт (RTSH), видим, что она также выполняет свою стандартную функцию, а, нажатая вместе с левым контроллом, - включает последнюю раскладку (так как у меня их всего две, то последняя является русской).

Теперь добавим новое правило для xkb.


$ grep -E "\! option.*symbols" /usr/share/X11/xkb/rules/xorg -A1
! option = symbols
shsh_shctrl = +mysym(shift-shift_shift-ctrl)


Наше правило называется shsh_shctrl. Осталось его активировать в файле xorg.conf, и готово.


$ grep shsh_shctrl /etc/X11/xorg.conf -C2

Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "shsh_shctrl"
EndSection


Перезапустим иксы.

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

Дело за малым. Нужно довести действие включения раскладки до автоматизма. Желательно стараться включать необходимую раскладку до начала редактирования и постараться перестать запоминать какая раскладка задействована в данный момент.

Комментариев нет: