Изучая раскладки хардверной клавиатуры 810 таблетки пришёл к некоему выводу, которым решил и поделиться.
Если посмотреть на крупное фото клавы на http://www.nokia.com/A4136017?category=n810#,
то можно увидеть, что отсутствует одна, очень важная для shell клавиша - Табуляция... Как без неё шелить - и не знаю теперь. С одной стороны видимо придётся в своей раскладке её накуданибудь повесить (правый шифт может или загадочная клавиша chr?), а с другой - серьёзно задумался. А нужна ли мне тогда вообще машинка с такой клавой
?
Неактивен
Ещё раз спрошу. Вы уверены в том что пишите? Я могу опираться на Ваши слова? Аргументируйте, пожалуйста! Скажите тогда её скан-код, поскольку в xkb файле чётко написано:
xkb_symbols "base" {
key <AD01> { [ q, Q, 1, 1 ] };
key <AD02> { [ w, W, 2, 2 ] };
key <AD03> { [ e, E, 3, 3 ] };
key <AD04> { [ r, R, 4, 4 ] };
key <AD05> { [ t, T, 5, 5 ] };
key <AD06> { [ y, Y, 6, 6 ] };
key <AD07> { [ u, U, 7, 7 ] };
key <AD08> { [ i, I, 8, 8 ] };
key <AD09> { [ o, O, 9, 9 ] };
key <AD10> { [ p, P, 0, 0 ] };
key <BKSP> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
// broken UI spec.
key <RTRN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] };
key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };
key <LFSH> { [ Shift_L, Shift_L, Shift_L, Shift_L ] };
key <FN> { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] };
key <SPCE> { [ space, space, space, space ] };
key <RCTL> { [ Control_R, Control_R, Control_R, Control_R ] };
key <TAB> { [ Tab, Tab, Tab, Tab ] };
modifier_map Shift { Shift_L };
modifier_map Mod5 { ISO_Level3_Shift };
modifier_map Control { Control_R };
key <KPEN> { [ Return ] };
key <UP> { [ Up ] };
key <DOWN> { [ Down ] };
key <LEFT> { [ Left ] };
key <RGHT> { [ Right ] };
key <ESC> { [ Escape ] };
key <FK01> { [ F1 ] };
key <FK02> { [ F2 ] };
key <FK03> { [ F3 ] };
key <FK04> { [ F4 ] };
key <FK05> { [ F5 ] };
key <FK06> { [ F6 ] };
key <FK07> { [ F7 ] };
key <FK08> { [ F8 ] };
key <FK09> { [ F9 ] };
key <FK10> { [ F10 ] };
key <FK11> { [ F11 ] };
key <FK12> { [ F12 ] };
// generated from the headset, must always be in the map.
key <I29> { [ XF86Phone ] };
};Описаны только 3 модификатора: Shift_L, ISO_Level3_Shift и Control_R (Левый шифт, клавиша FN и правый Control)
Ничего не написано про Chr, (и про правый шифт тоже). Вы можете мне назвать её скан-код?
Хотя бы запустив xev и нажав её?
Не говоря уж о явном противоречии Вашего нынешнего тезиса и высказанного в другом месте. С одной стороны ВСЕ ПРИЛОЖЕНИЯ переписываются под встроенную клавиатуру, а с другой стороны терминал будет работать с табуляцией только тапаньем.
Простите, а как Вы себе это представляете? У меня табуляция - самая стёртая клавиша, после слэша.
На самом деле это всё решаемо самостоятельно (собственно этим я и занимаюсь) Уже по этому файлу понятно, что клавша FN не аппаратная, как на BT клавах, поэтому можно переписать всё поведение. Вот только не могу узнать скан-коды без живого устройства. А у меня оно не появится скоро, поскольку 100 еврового я недостоен, а за 470 брать не вижу смысла.
Неактивен
Вот пораскинул я тут мозгами на тему покупки н810 в Европе, какие минусы? Как мне казалось, минус один - не будет букв "великого и могучего" на хардварной клаве.
Потом я увидел фотку как в реале выглядит русская клава на н810 и задумался:
http://bp2.blogger.com/_NK39rB5F4sI/RzK … 0_N810.JPG 
Задумался и понял, что на одной кнопке 2 буквы + символ - это перебор. Гораздо проще брать незахламленный кириллицей аппарат и поставить раскладку Яверты, любезно предоставленную globster'ом. Благо по Заурусу я ее неплохо помню ![]()
Неактивен
Да, я яверттами на завре и Треоо пользуюсь без проблем.
Но честно говоря, я чем больше разбираюсь, тем больше удивляюсь тому как её сделала Нокия. Похоже их дизайнеры запуская в серию, даже не подумали какие нужны клавиши. Сегодня изучал фотки клав. Так вот даже на штатовской раскладке нарисованные символы не совпадают с тем, что будет выдаваться при нажатии.
Неактивен
Посмотрите, что на всех официальных фотках клавиатур на нокиевском сайте над клавишей Z . Какой-то перечёркнутый два раза Y. Но ни в одной раскладке в /usr/share/X11/xkb/symbols/nokia_vndr/rx-44 нет такого символоа на этот код. Там везде подчёркивание. Ну и ещё пару таких символов знаю. Хотя вполне допускаю, что на официальной странице сфотографирована не настоящая клавиатура, которую в девайсах сделали другой, и что этот файл в SDK не соответствует тому, что будет зашито в машинку.
Как впрочем и то, что мне отвечают на вопросы в мэйл-листе нокиевцы о сканкодах неправда, поскольку оно идёт в разрез с даннйо Вами информацией. ВО всяком случае нет ни одного указания на то, что в какая-то калвиша на клавиатуре вызывает экранную строку, но есть чётко прописанная Multi_key клавиша для ввода дополнительных двухбуквенных символов
Неактивен
Вы знаете, у меня такое чувство, что мы говорим о разных девайсах. Или нокия встроенную клавиатуру реализовала как-то абсолютно самостоятельно, зашив в код, или я просто дурак.
Если Вам не сложно сказать, какой у Вас релиз, о котором говорите? Что у Вас в файле /etc/osso_software_version ?
Простт то, что я видел в sdk и живьём по конфигурации никак не соответствует Вашим словам. В них нет ни слова про переключение.
Неактивен
Хорошо, давайте отвязно от релиза.
- Всё, что связано с клавиатурами в Maemo идёт в пакете xkbdata. На Bora это была версия 0.8-0osso11, а на Chinook - 0.8-0osso26;
- Всё, что связано с раскладками - лежит в каталоге /usr/share/X11/xkb;
- Текущее состояние клавиатурных определений можно выгрузить с помощью простой команды:
xkbcomp :0 в текущем каталоге появится текстовый файл вида server-0.xkb. В нём содержится полное описание;
Механизм включения раскладок на bora был следующим. Когда подключается BT клавиатура, то по данным апплета в панели управления загружается конфигурационный файл. Входными параметрами являются 2 - имя клавиатуры и имя раскладки. Возмодные варианты описаны в файле (относительно указанного мной каталога) в rules/base. В chinook в этом файле есть запись
nokiarx44 * = nokia_vndr/rx-44(%l) nokiasu8w * = nokia_vndr/su-8w(%l)
которая говорит, что собственно раскладки для клавиатуры nokiarx44 содержатся в файле symbols/nokia_vndr/rx-44, а для nokiasu8w - в файле symbols/nokia_vndr/su-8w. %l - это имя секции, которую надо брать в этом файле и которая собственно и определяет вид раскладки. Для русской - это ru. Собственно описание раскладки - это секция, начинающаяся с xkb_symbols "ru" {.
Там, в начале есть указание на то, что ещё надо подгрузить из этого же файла базовую секцию секцию (include "nokia_vndr/rx-44(base)").
Вот их то и можно смотреть. Чтобы не описывать всё подробно, а ограничиться только не понятным мне вопросом, опишу только ключевые моменты. Переключение раскладок фиксированное в xkb достигается за счёт того, что для каждой клавиши создаются две или больше группы символов, которые и переключаются с помощью "волшебной" клавиши. Чтобы переключение было возможно хотя бы между двумя группами, для любой клавиши описание должно быть вида
key <AC01> { symbols[Group1] = [ ... ], symbols[Group2] = [ ... ] };. Так вот, в этом файле вообще отсутствует какое-либо упоминание Group?, где ? - не единица. Т.е. не определены группы.
Вот поэтому я и делаю вывод, что или у Вас иная прошивка, с не тем модулем xkbdata, что представлен в SDK, или Nokia использует для встроенной клавы иной механизм для конфигурирования. Понять это можно только выгрузив текущую конфигурацию с помощью xkbcomp, как я описал выше и посмотреть - есть ли там упоминание о Group2.
Опять же, за клавишей Chr закреплён код <COMP>, как мне ответил Tomas Junnonen в mail-list maemo-developers@maemo.org. А в доступных мне конфигурационных файлах, прописано следующее определение:
key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };Которое говорит, что при нажатии на клавишу Chr генерится только Multi_key. А Multi_key - это в стандартном случае способ ввести символы, не представленные на клавиатуре, с помощью двухбуквенных сочетаний. В частности @ вводится как Multi_key, A, T.
Так что я могу опираться только на станлартные механизмы и доступные мне конфигурационные файлы и делать выводы только исходя из них. Если же Nokia в реальном устройстве делает по-другому или вообще отказалось от xkb - это печально, прежде всего для меня, поскольку шанс получит ьего за 100 евров я проиграл, а в моём ближайшем окружении никто 810 покупать не сбирается и "покрутить" мне будет нечего
Да и некрасиво как-то нарущать приницпы построения X-ов.
Отредактированно gLobster (15-11-2007 23:47:50)
Неактивен
У меня есть предположение, не более, что реальное переключение происходит выше, в input methods. Они похоже анализируют набор языков, которые пользователь разрешил и переключаются между ними, На уровне xkb этой информации нет.
Если интересно как оно работает можно поряться здесь: http://live.gnome.org/Hildon/HildonInputMethod 
Повторяю, это только предположение и я на нем не настаиваю.
Неактивен
Hildon после. Я думаю, что скорее всего существует некая составляющая, которая не прописана в этих файлах, но делаеь управление более гибким. Например можно в момент подгрузки в X конфигурации клавиатуры к тому. что прописано в этих файлах, добавлять ещё что-то своё. Никто не мешает загрузить не просто nokia_vndr(ru), а nokia_vndr(ru)+groupe(ctrl_toggle), причём содавая эту последовательность загрузки динамически. И понять это можно только узнав у разработчика или косвенно, декомпилировав рабочую раскладку на живой машинке. Первое можно будет сделать только после выхода девайса официально (так мне ответили ребята из Нокии. Это политика компании и очень строгая), а второе - у меня нет знакомых среди субконтрагентов, которым Нокия дала машинки для отладки. Я слишком недавно начал вариться в этой кухне :-)
Неактивен
нет, поскольку symbols/ru не грузится - это атавизм от обычных клавиатур. Это можно легко увидеть по тому как описаны остальные клавиши. Точто так же и compose. И там везде прописано Group1. В общем как и во всех предыдущих случаях в Ваших постах ноль информации кроме той, что Вы намекаете, что Вы из Нокия и что держите в руках экземпляр 810. Играть с Вами в словоблудство и дать Вам возможность упражняться в не отвечании на простые вопросы мне не интересно.
P.S. Реально работающие знакомые ребята в Nokia мне ответили более честно и прямо. Просто не можем, без глупых ссылок, показывающих, что Вы даже не прочитали что я написал.
Неактивен