Переназначение клавиатуры
Переназначение клавиатуры
В английском варианте клавиатуры устройства 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.