Сегодня мне приехала моя BT клава (Nokia SU-8W). И теперь я пытаюсь начать ей пользоваться. С одной стороны, я конечно читал про вопросы, задаваемые владельцами, но реалии оказались всё-равно неожиданными. Надеюсь, что кто-то из читающих этот форум уже приручил клаву и поделится со мной шаманством, но пока я слегка разочарован.
Самое первое разочарование - переключение раскладок. Пока я не нашёл нигде информации о том, можно ли это делать с клавы. Оказывается "из коробки" переключения нет. Можно в апплете управления выбрать раскладку и набираешь только в ней. Есть возможность временно изменить раскладку нажав AltGr, но нигде не нашёл как задать, что используется в качестве второй раскладки. В результате, если установлена English USA, то по altgr идут буквы с умляутами. Если же выбрать русскую, то по altgr - английские. На худой конец, для ввода русских текстов, слегка англоязырованных может пойти.
Немного поискав нашёл maemo-xkb-plugin. Поставил. Появилась возможность использовать две раскладки, выбранные в этом плагине. Но переключение всё-равно тыканьем в апплет на статус баре. Причём почему-то у меня там аббревиатура раскладки не показывается - только квадаратики :-(
Дальше больше. Вроде как клавиатура у меня "родная" для таблетки, но то, что вводится по нажатию на клавиши не совпадает с написанным на кнопках. Очень захотелось привести бы это в соответствие. Но чем - не нашёл. Оказится на N800 не используется xmodmap. Как тогда править раскладку?
Пока я в сухом осадке. Клавиатура есть, но пользоваться ей невозможно (я не умею). Даже если закрыть глаза на сложности переключения между раскладками, просто не возможно вводить текст. Есть ряд символов, которые с клавиатуры просто не ввести, а как без них набирать - не понятно. Ведь как только таблетка видит клаву, виртуальная становится не доступна! А с клавы не ввести ":;-~` а как без этих крючёчков вообще жить? :-(
Неактивен
Вдогонку. Уже нашёл xkb файлы. А как на клаве активировать level 4? Правильно понимаю, что:
просто - левел 1
с шифтом - левел 2
с альтгр - левел 3
а левел 4?
Неактивен
Может это поможет?
http://community.livejournal.com/ru_maemo/14797.html 
Неактивен
Да, это уже облегчает. Уже нашёл все файлы, начал разгребать, а тут такая подсказка! Если получится - выложу свой вариант.
Неактивен

заказываю stowaway, тоже буду разгребать...
Неактивен
Ну в общем первый блин есть. Для начала - реверансы.
1. г-ну Wall за ссылку
;
2. Автору того блога, на который он меня послал;
3. г-ну Ивану Паскалю за подробнейшее описание
XKB .
Я не пошёл предложенным путём, а попытался решить проблему изначально. Для начала я выяснил, что в N800 действительно полноценный XKB. Дальше я нашёл, что все файлы конфигураций XKB лежат в /usr/share/X11/xkb . Вся структура фалов там прозрачна и очевидна, за исключением каталога rules. Как я понял - это надстройка над XKB, позволяющая конфигурировать гуёвый интерфейс по выбору раскладок. Поскольку я не ставил мегацели перенастроить весь XKB. а хотел только сделать реально рабочую двухраскладочную работу, то я пошёл по пути модернизации существующей раскладки. Всё, что касалось клавиатуры Nokia SU-8W было сложено в каталог symbols/nokia_vndr. Русская раскладка лежала в файле ru. начинатвшись за три дня Ивана Паскаля я просто взял и переписал эту раскладку, изменив конфигурацию так, чтобы вместо одной группы с 4-мя уровнями стало 2 группы. Попутно сделал, чтобы дефолтным был английский язык, а вторым - русский. В качестве переключателя ракладок пока задал AltGr. Чтобы не напороться на подводные дефолтные камни, везде в лоб прописал типы клавиш. И, самое удивительное, всё заработало сразу. Даже не пришлось перезагружать машинку. Подключил клаву и получил работу на двух языках с переключением раскладок с клавиатуры!
Собственно это был первый этап. Здесь прилагаю получившийся результат. Дальше буду исправлять несоответствие символов и надписей и биться за правильные Ctrl и Alt. Ждите продолжения
Поскольку файлики тут не приложить, выкладываю некузяво содержимое файла, поскольку приложить его никак
// We don't include ru in this file, because we want to achieve exact
// parity with the SU-8W as used on other Nokia devices.
// Russian layout on first two levels, US layout on third and fourth.
partial alphanumeric_keys default
xkb_symbols "basic" {
name[Group1]= "English";
name[Group2]= "Russian";
// XXX Would be nice if this actually generated a tilde.
key <TLDE> {
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ grave ],
symbols[Group2] = [ Cyrillic_io, Cyrillic_IO ] };
key <AE01> {
type = "TWO_LEVEL",
symbols[Group1] = [ 1, exclam],
symbols[Group2] = [ 1, exclam] };
key <AE02> {
type = "TWO_LEVEL",
symbols[Group1] = [ 2, at],
symbols[Group2] = [ 2, at] };
key <AE03> {
type = "TWO_LEVEL",
symbols[Group1] = [ 3, numbersign],
symbols[Group2] = [ 3, numbersign] };
key <AE04> {
type = "TWO_LEVEL",
symbols[Group1] = [ 4, dollar],
symbols[Group2] = [ 4, dollar] };
key <AE05> {
type = "TWO_LEVEL",
symbols[Group1] = [ 5, percent],
symbols[Group2] = [ 5, percent] };
key <AE06> {
type = "TWO_LEVEL",
symbols[Group1] = [ 6, dead_circumflex],
symbols[Group2] = [ 6, dead_circumflex] };
key <AE07> {
type = "TWO_LEVEL",
symbols[Group1] = [ 7, ampersand],
symbols[Group2] = [ 7, ampersand] };
key <AE08> {
type = "TWO_LEVEL",
symbols[Group1] = [ 8, asterisk],
symbols[Group2] = [ 8, asterisk] };
key <AE09> {
type = "TWO_LEVEL",
symbols[Group1] = [ 9, parenleft],
symbols[Group2] = [ 9, parenleft] };
key <AE10> {
type = "TWO_LEVEL",
symbols[Group1] = [ 0, parenright],
symbols[Group2] = [ 0, parenright] };
key <AE11> {
type = "TWO_LEVEL",
symbols[Group1] = [ minus, underscore],
symbols[Group2] = [ minus, underscore] };
key <AE12> {
type = "TWO_LEVEL",
symbols[Group1] = [ equal, plus],
symbols[Group2] = [ equal, plus] };
key <AD01> {
type = "ALPHABETIC",
symbols[Group1] = [ q, Q ],
symbols[Group2] = [ Cyrillic_shorti, Cyrillic_SHORTI ] };
key <AD02> {
type = "ALPHABETIC",
symbols[Group1] = [ w, W ],
symbols[Group2] = [ Cyrillic_tse, Cyrillic_TSE ] };
key <AD03> {
type = "ALPHABETIC",
symbols[Group1] = [ e, E ],
symbols[Group2] = [ Cyrillic_u, Cyrillic_U ] };
key <AD04> {
type = "ALPHABETIC",
symbols[Group1] = [ r, R ],
symbols[Group2] = [ Cyrillic_ka, Cyrillic_KA ] };
key <AD05> {
type = "ALPHABETIC",
symbols[Group1] = [ t, T ],
symbols[Group2] = [ Cyrillic_ie, Cyrillic_IE ] };
key <AD06> {
type = "ALPHABETIC",
symbols[Group1] = [ y, Y ],
symbols[Group2] = [ Cyrillic_en, Cyrillic_EN ] };
key <AD07> {
type = "ALPHABETIC",
symbols[Group1] = [ u, U ],
symbols[Group2] = [ Cyrillic_ghe, Cyrillic_GHE ] };
key <AD08> {
type = "ALPHABETIC",
symbols[Group1] = [ i, I ],
symbols[Group2] = [ Cyrillic_sha, Cyrillic_SHA ] };
key <AD09> {
type = "ALPHABETIC",
symbols[Group1] = [ o, O ],
symbols[Group2] = [ Cyrillic_shcha, Cyrillic_SHCHA ] };
key <AD10> {
type = "ALPHABETIC",
symbols[Group1] = [ p, P ],
symbols[Group2] = [ Cyrillic_ze, Cyrillic_ZE ] };
key <AD11> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ bracketleft, braceleft ],
symbols[Group2] = [ Cyrillic_ha, Cyrillic_HA ] };
key <AD12> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ bracketright, braceright ],
symbols[Group2] = [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
key <AC01> {
type = "ALPHABETIC",
symbols[Group1] = [ a, A ],
symbols[Group2] = [ Cyrillic_ef, Cyrillic_EF ] };
key <AC02> {
type = "ALPHABETIC",
symbols[Group1] = [ s, S ],
symbols[Group2] = [ Cyrillic_yeru, Cyrillic_YERU ] };
key <AC03> {
type = "ALPHABETIC",
symbols[Group1] = [ d, D ],
symbols[Group2] = [ Cyrillic_ve, Cyrillic_VE ] };
key <AC04> {
type = "ALPHABETIC",
symbols[Group1] = [ f, F ],
symbols[Group2] = [ Cyrillic_a, Cyrillic_A ] };
key <AC05> {
type = "ALPHABETIC",
symbols[Group1] = [ g, G ],
symbols[Group2] = [ Cyrillic_pe, Cyrillic_PE ] };
key <AC06> {
type = "ALPHABETIC",
symbols[Group1] = [ h, H ],
symbols[Group2] = [ Cyrillic_er, Cyrillic_ER ] };
key <AC07> {
type = "ALPHABETIC",
symbols[Group1] = [ j, J ],
symbols[Group2] = [ Cyrillic_o, Cyrillic_O ] };
key <AC08> {
type = "ALPHABETIC",
symbols[Group1] = [ k, K ],
symbols[Group2] = [ Cyrillic_el, Cyrillic_EL ] };
key <AC09> {
type = "ALPHABETIC",
symbols[Group1] = [ l, L ],
symbols[Group2] = [ Cyrillic_de, Cyrillic_DE ] };
key <AC10> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ semicolon, colon ] ,
symbols[Group2] = [ Cyrillic_zhe, Cyrillic_ZHE ] };
key <AC11> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ apostrophe, quotedbl ],
symbols[Group2] = [ Cyrillic_e, Cyrillic_E ] };
key <AB01> {
type = "ALPHABETIC",
symbols[Group1] = [ z, Z ],
symbols[Group2] = [ Cyrillic_ya, Cyrillic_YA ] };
key <AB02> {
type = "ALPHABETIC",
symbols[Group1] = [ x, X ],
symbols[Group2] = [ Cyrillic_che, Cyrillic_CHE ] };
key <AB03> {
type = "ALPHABETIC",
symbols[Group1] = [ c, C ],
symbols[Group2] = [ Cyrillic_es, Cyrillic_ES ] };
key <AB04> {
type = "ALPHABETIC",
symbols[Group1] = [ v, V ],
symbols[Group2] = [ Cyrillic_em, Cyrillic_EM ] };
key <AB05> {
type = "ALPHABETIC",
symbols[Group1] = [ b, B ],
symbols[Group2] = [ Cyrillic_i, Cyrillic_I ] };
key <AB06> {
type = "ALPHABETIC",
symbols[Group1] = [ n, N ],
symbols[Group2] = [ Cyrillic_te, Cyrillic_TE ] };
key <AB07> {
type = "ALPHABETIC",
symbols[Group1] = [ m, M ],
symbols[Group2] = [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
key <AB08> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ comma, less ],
symbols[Group2] = [ Cyrillic_be, Cyrillic_BE ] };
key <AB09> {
type[Group1] = "TWO_LEVEL",
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ period, greater ],
symbols[Group2] = [ Cyrillic_yu, Cyrillic_YU ] };
key <AB10> {
type = "TWO_LEVEL",
symbols[Group1] = [ slash, question ],
symbols[Group2] = [ slash, question ] };
include "group(toggle)"
};
partial alphanumeric_keys
xkb_symbols "nodeadkeys" {
name[Group1] = "Russian - no dead keys";
include "nokia_vndr/ru(basic)"
key <AE06> {
type = "TWO_LEVEL",
symbols[Group1] = [ 6, asciicircum],
symbols[Group2] = [ 6, asciicircum] };
};Отредактированно gLobster (15-10-2007 05:40:07)
Неактивен
По идее неплохо бы в конце ваших изысканий получить некую инструкцию как это делать и пакет[ы] для ленивых.
Это реально, как думаете?
Неактивен
Инструкцию как править файл самому или как заменить штатный на мой? Пакет не думаю, что сложно сделать - это же один файл заменить. Хорошо бы тогда чуть потестировать и потом задебианю
Неактивен
Это на ваше усмотрение. Если вы где-то об этом прочитали, то можно и просто линк, но лучше какое-то внятное описание.
И еще хотелось бы, чтобы это как-то можно было бы выбирать в контрольной панели, там где языки для клавиатуры.
Неактивен
Ну на самом деле я просто разобрался в конфигурации xkb достаточно, для того, чтобы отредактировать существующую раскладку. Другими словами я меняю "кривую" предлагаемую Нокией на свою. Так что, с точки зрения выбора в панели управления, ничего не поменялось. Просто вместо штатной теперь другая. Добавить ещё одну в список я не рискнул, поскольку добавление новой затрагивает очень большое количество файлов, не всегда, для меня, очевидных. Побоялся сломать механизмы настройки. Но описать собственно какие изменения я сделал в файл - могу, поскольку там всё очень однотипно. Только уже не сегодня.
Неактивен
Естественно не сегодня. Жаль, что другую нельзя сделать, было бы на мой взгляд лучше.
Неактивен
Поскольку был вопрос о том, что же я поменял, я решил описать поподробней.
Как я уже говорил, все файлы, относящиеся к подсистеме xkb лежат от /usr/share/X11/xkb. Самое главное описание, определяющее код какого символа будет выдан при нажатии на любую клавишу, определяется в каталоге symbols. Там я нашёл подкаталог с заманчивым именем nokia_vndr, в котором внутри файлов упомниалось о клавиатуре Nokia SU-8W. ВНачале я пытался найти конфигурациооные файлы XFree86, которые задают собственно какие выбраны раскладки (по аналогии с десктопным компьютером), но подумав, решил что конфигурация вряд хранится в них. Ведь в таблетке раскладки можно менять на лету. Ну и тогда, порывшись в файлах, я нашёл вот такой:
rules/base В нём упоминались каталоги и файлы, ссылающиеся на раскладки для моей клавиатуры.
! $nokiamodels = su-8w ! $nokialayouts = da de fi no ru se us ... ! model layout = symbols abnt2 br = pc+br $nokiamodels $nokialayouts = nokia_vndr/nokia(%m)+nokia_vndr/%l%(v) $nokiamodels jp = nokia_vndr/nokia(%m)+pc+jp(latin)+jp:2 $nokiamodels $nonlatin = nokia_vndr/nokia(%m)+pc+us+%l%(v):2 $nokiamodels * = nokia_vndr/nokia(%m)+pc+%l%(v)
судя по всему, эти строчки определяют из каких файлов "собирается" раскладки для Nokia SU-8W.
$nokiamodels = su-8w определяет идентификатор клавы
$nokialayouts = da de fi no ru se us возможные варианты раскладок
$nokiamodels $nokialayouts = nokia_vndr/nokia(%m)+nokia_vndr/%l%(v) задаёт какие файлы будут использоваться. В частности для моего случая %m="su-8w", %l="ru". Получается что русская раскладка строится из следующей конфигурации: nokia_vndr/nokia(su-8w)+nokia_vndr/ru. Первый файл определяет поведение управляющих и системных клавиш, а второй nokia_vndr/ru - буквенную раскладку.
Править я стал только второй. Файл начинается со следующего описания:
xkb_symbols "basic" {
name[Group1]= "Russian";
// XXX Would be nice if this actually generated a tilde.
key <TLDE> { [ Cyrillic_io, Cyrillic_IO, grave ] };
key <AE01> { [ 1, exclam, exclam, exclam ] };
key <AE02> { [ 2, at, quotedbl, at ] };Здесь оговаривается имя только для одной группы, а дальше перечисляются команды key с указанием имени клавиши, которую конфигурируют и строки из четырёх значений разделённых запятыми, соответствующих четырём состояниям нажатия управляющих клавиш. Первое - ничего не нажато. Второе - нажат шифт (для букв ещё если нажат капслок), третье - нажата клавиша AltGr, четвёртое - нажаты и AltGr и шифт или капслок. Из прочитанных описаний я усвоил, что для того, чтобы на клавиатуре переключались несколько раскладок с фиксацией, каждая должна была быть в отдельнйо группе. Поэтому я изменид описание файла, сделав 2 группы:
xkb_symbols "basic" {
name[Group1]= "English";
name[Group2]= "Russian";
// XXX Would be nice if this actually generated a tilde.
key <TLDE> {
type[Group2] = "ALPHABETIC",
symbols[Group1] = [ grave ],
symbols[Group2] = [ Cyrillic_io, Cyrillic_IO ] };
key <AE01> {
type = "TWO_LEVEL",
symbols[Group1] = [ 1, exclam],
symbols[Group2] = [ 1, exclam] };
key <AE02> {
type = "TWO_LEVEL",
symbols[Group1] = [ 2, at],
symbols[Group2] = [ 2, at] };Причём первой я сделал английскую, второй русскую. На самом деле строки name[Group1]= "English"; не нужны особенно, поскольку нет приложения,, показывающего текущую раскладку. Самое главное касалось описания самих клавиш. Поскольку я не был уверен, что по дефолту типы (type)клавиш указаны как надо, здесь я дополнительно все их прописал ещё раз. ALPHABETIC - это буква, у которой регистр меняется от шифта и капслок, а TWO_LEVEL - просто клавиша, каоторая реагирует только на шифт, но не на капслок. symbols[Group1] определяет что выводится на латинской раскладке, а symbols[Group2] = что на русской.
Ну и в конце заменив
include "level3(ralt_switch)"
на
include "group(toggle)"
я задал, что у меня не используется, как управляющий AltGr, а он используется для переключения групп.
Вот собственно пока и всё. Если что-то надо поподробней - подскажите, что.
ну и, естественно, менять эти файлы модно только будучи рутом.
Неактивен
Большое спасибо.
Неактивен
Потихоньку подправляю раскладку. Сейчас сделал её соответствующей виндовой в плане небуквенных символов. Попутно выяснил некий прикладной баг. Точнее не знаю, баг это или умышленное деяние, но в osso-xterm не правильно обрабаытваются управляющие (cntrl) сочетания. Как только переключаешься на русскую раскладку, все сочетания Cntrl+ перестают работать. Причём этот баг только в этом приложении. Да я и уже xev'ом проверил - выдаются все коды правильно, а xterm почему-то их вот так обрабатывает
Поскольук пока файлы тут так и не приложить даю ссылку на свою ветку на другом форуме http://palmz.in/board/index.php?showtopic=41175 
Отредактированно gLobster (17-10-2007 02:34:32)
Неактивен

Спасибо.
Получил сегодня stowaway - очень нетривиально она коннектится... Избитый граблями буду приступать к xkbзации...
Неактивен
Я ещё успел, по просьбе с maemo-developers сделать болгарскую раскладу, но её ещё тестируют. Видимо придётся страничку заводить, где всё выложить и описать подробно, как кастомизировать дальше. Щас пытаюсь, задетый словами Wall, всё-таки научитьсяя добавлять раскладки, а не править, но похоже это не проходимо. Такое чувство, что собсвтенно сам выбор "прошит" в апплет. Не приручается... Но пока не сдался :-) Надеюсь сегодня выложить ещё одну раскладку, ещё более исправленную и более адаптированную под 4-х рядную клавиатуру
Неактивен
Ну и сделал я ещё один релиз. Надеюсь последний. В нём я разложил все символы по полочкам, как на виндовой клаве, сделал переключение раскладок русской и латинской по правому шифту, поскольку задействовал AltGr для временного переключения при удержании вместо клавиши Fn.
Попутно хочу отметить, клавиша с кавычками (русской Э) тоже зависит от Fn (это если будете искать обратный слэш и вертикальную черту).
Сам файл лежит на http://palmz.in/board/index.php?showtop … p;p=377984 
Неактивен
Я разобрался в конфигурационных файлах и сумел добавить раскладку к общему списку. Прилагаю файл, разархивировав который из-под рута в каталоге /usr/share/X11/xkb командой
tar -xvzf nokia.su-8w.ru.layout.tar.gz
автоматом будут заменены нужные файлы и добавлены новые. Оригинальные лежат там же с расширением .orig
После выполнения в выборе раскладок добавится новая "Русская (альтернативная)", а оригинальная переименуется в "Русская (оригинальная)".
Сам архив лежит по ссылке выше
Неактивен
А запакетировать?
Неактивен
Похоже не осилю. Все описания, что я нашёл, относятся к пакетирвоанию компилируемых программ. А здесь то компилировать нечего
Стоит ли игра свеч для копирования 3-х файлов, два из которых надо бы сохранить, поскольку они уже могли быть изменены владельцем до меня
? На нашёл примера, как сделать пакет для простого размещения файлов
Неактивен
Ну в общем добил я. Сделал и пакет. Вот, выложил
https://garage.maemo.org/projects/xkblayouts/ 
Неактивен

Спасибо огромное. Если бы вы поделились опытом по сборке пакета - было бы супер.
Неактивен

Собственно не знаю какого я тормозил - ваша раскладка чудесно работает на stowaway, за что опять же спасибо ![]()
Неактивен
А скольки рядная клава ? Если 4х, то насколько я понял, Нокия и сделала свою su-8w именно с stowaway (потроха их). Как оказалось с точки зрения раскладок, клавиаатуры отличаются только количеством и расположением клавиш. Так что, если кто даст фотки раскладок - могу подправиить и для них.
Неактивен

4х рядная / потыкался по клавишам - вроде всё как надо работает /
вот фотография :
http://www.flickr.com/photo_zoom.gne?id … amp;size=l 
http://bp3.blogger.com/_fOnitBMw0Jo/Rkx … MG0367.JPG 
Просто где то прочитал совет указывать в контроль панели Generic keyboard и мне казалось что она кардинально отличается.
Неактивен