Переназначение клавиатуры

Материал из FRUCT Maemo wiki (Russian)
Перейти к: навигация, поиск

Переназначение клавиатуры

В английском варианте клавиатуры устройства N900 у клавиш со стрелками нет дополнительно закрепленных символов.

Данные клавиши можно переназначить, чтобы добавить диакритические знаки, умляуты и другие символы (например, `|', `<' или `>' для X терминала).

Необходимо отредактировать данный файл на устройстве N900 (прежде всего, рекомендуется создать копию данного файла на случай непредвиденных проблем. Не помещайте копию файла в папку nokia_vndr или телефон не будет загружаться):

/usr/share/X11/xkb/symbols/nokia_vndr/rx-51

Клавиши со стрелками расположены в конце файла. В данном примере показывается, как добавлять акутовое ударение, тупое ударение, тильду и диакритический знак циркумфлекс (применяется в португальском языке). Нажмите Fn+Вверх/Вниз/Лево/Право, чтобы использовать данные диакритические знаки.

xkb_symbols "arrows_4btns" {
    key <UP>   { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Up, dead_circumflex ] };
    key <LEFT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, dead_acute ] };
    key <DOWN> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Down, dead_tilde ] };
    key <RGHT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, dead_grave ] };
};

Данный пример добавляет умляуты немецкого языка:

xkb_symbols "arrows_4btns" {
    key <UP>   { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Up, udiaeresis ] };
    key <LEFT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, odiaeresis ] };
    key <DOWN> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Down, adiaeresis ] };
    key <RGHT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, ssharp ] };
};

Таким образом добавляются клавиши пролистывание страниц назад и вперед, возврат в исходное положение и переход в конец строки:

xkb_symbols "arrows_4btns" {
    key <UP>   { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Up, Page_Up ] };
    key <LEFT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Left, Home ] };
    key <DOWN> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Down, Page_Down ] };
    key <RGHT> { type[Group1] = "PC_FN_LEVEL2", symbols[Group1] = [ Right, End ] };
};

Введите setxkbmap, чтобы сохранить изменения. В случае ошибки необходимо заменить файл rx-51 резервной копией. В противном случае устройство не будет загружаться и пользователю придется перепрошивать его.

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

При необходимости узнать название символа просто обратитесь к списку стандартных раскладок компьютерных клавиатур, например:

http://cgit.freedesktop.org/xkeyboard-config/tree/symbols/

Альтернативный способ получить пользовательские специальные символы – редактировать Вид специальных символов.

Обратите внимание: символ трубы (pipe) называется "вертикальная черта" (bar).

Временное переназначение

Клавиши можно также переназначить временно. Для этого загрузите keymap в файл, отредактируйте данный файл и затем перезагрузите измененный файл на сервер N900 X, например так (в X терминале):

xkbcomp :0
vi server-0.xkb
xkbcomp server-0.xkb :0

У данного способа есть преимущество, которое заключается в том, что в случае возникновения проблем с keymap можно просто выполнить setxkbmap и клавиатура будет возвращена к исходной раскладке. Если это не поможет, перезагрузка устройства все наверняка исправит.

Предлагаемый далее сценарий может пригодиться для переназначения клавиш со стрелками:

Только что было отмечено, что данный сценарий полностью разряжает батарею устройства N900!!! Отмечены случаи выключения устройства. После выполнения данного сценария maemo-xinput-sounds потребляет более 90 % ресурсов центрального процессора. Принудительное завершение процесса может быть временным решением проблемы. Идет поиск лучшего решения.

#!/bin/sh

set -eux

# busybox mktemp is sooo strict: 6 X:s at the end is the only option...
tf=`mktemp xkb-XXXXXX`
trap "rm $tf.0 $tf" 0

xkbcomp :0 $tf.0

perl -pe '
 sub out ($$$) {
        print qq(    key <$_[0]> { type[Group1] = "PC_FN_LEVEL2",);
        print qq( symbols[Group1] = [ $_[1], $_[2] ] };);
        return if s/.*};//; while (<>) { last if s/.*};//; };
 }
 s/controls=\)/controls=SlowKeys\)/; # hmm...
 out "UP", "Up", "Odiaeresis" if (/key\s+<UP>/);
 out "DOWN", "Down", "adiaeresis" if (/key\s+<DOWN>/);
 out "LEFT", "Left", "odiaeresis" if (/key\s+<LEFT>/);
 out "RGHT", "Right", "Adiaeresis" if (/key\s+<RGHT>/);
' $tf.0 > $tf

xkbcomp $tf :0

Данный сценарий переназначает клавиши Вверх, Вниз, Лево, Право на Ö, ä, ö, Ä соответственно (для пользователей из Скандинавии/Финляндии). Его также легко можно отрегулировать для других целей. Скопируйте его как xk в начальный каталог на устройстве N900 и выполните как sh xk во время каждой (редко) перезагрузки устройства N900.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты