Часть вторая. Создаем собственные HID-профили управления
(Начало в №37)
Ну вот, работать с простейшими встроенными в ПО мобильного телефона профилями HID мы научились, но, скорее всего, они нас удовлетворить полностью не могут. Ведь и клавиши не все используются, и управлять любимым WinAmp или IrfanViewer пока телефон наш не научился. Так вот, сегодня мы этим и займемся, а именно - будем создавать собственный профиль и настраивать его для работы с нашими любимыми программами. Собственно, сам hid-файл представляет собой не что иное, как переименованный архив формата .tar (по аналогии с используемым в SonyEricsson форматом тем - .thm). Суть в том, что .tar не поддерживает сжатия, служит только для собирания нескольких файлов в один. Итак, внутри .hid лежат 2 файла: один - картинка .jpg, .gif или .png, второй - обычный текстовый файл с расширением .kcf, причем оба (и картинка, и файл с картой клавиш) имеют одинаковое название. Вот пример .kcf-файла, взятого из стандартного профиля SE W810i "Desktop":
<SONY_ERICSSON_REMOTE_CONTROL_CONFIGURATION VERSION="1.0"> <KEYMAP> <KEY_1> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "29" /> <!-- 1= ESCAPE --> </ACTION> </KEY_1> <KEY_2> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "52" /> <!-- 2= UP ARROW --> </ACTION> </KEY_2> <KEY_3> <ACTION> <KEYBOARD MODIFIERS = "04" USAGEID = "2B" /> <!-- 3= ALT+TAB --> </ACTION> </KEY_3> <KEY_4> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "50" /> <!-- 4= LEFT ARROW --> </ACTION> </KEY_4> <KEY_5> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "28" /> <!-- 5= RETURN --> </ACTION> </KEY_5> <KEY_6> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "4F" /> <!-- 6= RIGHT ARROW --> </ACTION> </KEY_6> <KEY_7> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "43" /> <!-- 7= F10 --> </ACTION> </KEY_7> <KEY_8> <ACTION> <KEYBOARD MODIFIERS = "00" USAGEID = "51" /> <!-- 8= DOWN ARROW --> </ACTION> </KEY_8> <KEY_9> <ACTION> <KEYBOARD MODIFIERS = "06" USAGEID = "2B" /> <!-- 9= ALT+SHIFT+TAB --> </ACTION> </KEY_9> <KEY_STAR> <ACTION> <KEYBOARD MODIFIERS = "05" USAGEID = "1E" /> <!-- *= CTRL+ALT+1 --> </ACTION> </KEY_STAR> <KEY_0> <ACTION> <KEYBOARD MODIFIERS = "05" USAGEID = "1F" /> <!-- 0= CTRL+ALT+2 --> </ACTION> </KEY_0> <KEY_HASH> <ACTION> <KEYBOARD MODIFIERS = "08" USAGEID = "00" /> <!-- #= LEFT GUI --> </ACTION> </KEY_HASH> </KEYMAP> </SONY_ERICSSON_REMOTE_CONTROL_CONFIGURATION>
Как видно, формат файла простой донельзя. Есть секции на привязку каждой кнопки, которые легко правятся руками под потребности пользователя. То есть телефон всего лишь отправляет сочетания клавиш, как будто они набраны на клавиатуре компьютера. А каждая программа, которую коснется фокус, распознает эти сочетания как внутренние команды.
<KEY_1> (кнопка) <ACTION> <KEYBOARD MODIFIERS = "00"
(использование в сочетании с CTRL, ALT, SHIFT... Различные комбинации от 00 до 08)
USAGEID = "15" (# клавиши на клавиатуре)/> <!- REWIND -> (Комментарий) </ACTION> </KEY_1>
USAGEID = "x" здесь указан номер клавиши на клавиатуре в hex. То есть, Esc = 29, стрелка вверх = 52 и так далее... Номера эти называются скан-коды, и, в принципе, в любом толковом справочнике по программированию их значения для определенных клавиш клавиатуры можно легко найти. В таблице я привел пример скан-кодов самых используемых для создания "горячих" комбинаций клавиш.
[MODIFIERS] | [USAGEID] | [USAGEID] | [USAGEID] |
00 (нет) | 28 ENTER | 2d - | 50 LEFT |
01 CTRL | 29 ESCAPE | 2e = | 51 DOWN |
02 SHIFT | 2a BACKSPACE | 2f [ | 52 UP |
03 CTRL+SHIFT | 2b TAB | 30 ] | 53 NUM LOCK |
04 ALT | 2c SPACE | 31 \ | 54 / (numeric pad) |
05 CTRL+ALT | 39 CAPS LOCK | 32 \ | 55 * (numeric pad) |
06 ALT+SHIFT | 3a F1 | 33 ; | 56 — (numeric pad) |
07 CTRL+ALT+SHIFT | 3b F2 | 34 ' | 57 + (numeric pad) |
08 WIN | 3c F3 | 35 ` | 58 ENTER (numeric pad) |
3d F4 | 36 | 59 1 (numeric pad) | |
3e F5 | 37 . | 5a 2 (numeric pad) | |
3f F6 | 38 / | 5b 3 (numeric pad) | |
40 F7 | 46 PRINT SCREEN | 5c 4 (numeric pad) | |
41 F8 | 47 SCROLL LOCK | 5d 5 (numeric pad) | |
42 F9 | 48 PAUSE | 5e 6 (numeric pad) | |
43 F10 | 49 INSERT | 5f 7 (numeric pad) | |
44 F11 | 4a HOME | 60 8 (numeric pad) | |
45 F12 | 4b PAGE UP | 61 9 (numeric pad) | |
4c DELETE | 62 0 (numeric pad) | ||
4d END | 63 . (numeric pad) | ||
4e PAGE DOWN | 64 \ | ||
4f RIGHT | 65 CONTEXT MENU |
Полный же список шестнадцатеричных значений скан-кодов клавиш можно посмотреть, к примеру, по следующему адресу www.ntlib.chat.ru/ware/tables/scan.htm.
Несколько слов касательно используемой картинки. Во-первых, ее размер не должен превышать 176х213 пикселов и, во-вторых, лучше всего использовать формат .png . В первом случае (т.е. при использовании стандартной картинки размером 176х220) видно небольшое смещение в несколько пикселов по горизонтали/вертикали. А во втором при конвертировании, к примеру, в .jpg теряется качество и начинают плыть линии (даже при 100% качестве).
Для тех, кто не любит работать с "Блокнотом" и предпочитает автоматизацию, есть маленькая и бесплатная программа HID Configuration Editor (www.cyd.liu.se/~andgu842/Hid/HIDConfigurationEditor.zip) от Anders Gunnarsson.
Единственный минус программы в том, что для работы ей потребуется Microsoft .NET Framework версии не ниже второй. Программа не требует установки и работа с ней очень проста. Выбираем нужную вам картинку, назначаем клавиши (поддерживаются cледующие клавиши : a-z/0-9/kp0-kp9 (keypad)/f1-f12/return, enter, esc, escape, backspace, tab, spa ce, prtscrn, scrolllock, pause, insert, home, pageup, delete, del, end, pagedown, rightarrow, leftarrow, downarrow, uparrow /-,,, ., +, *, /) и сохраняем готовый .hid файл.
Более функциональным является официальный продукт, предназначенный для самостоятельной работы с HID-профилями от SonyEricsson - SE Bluetooth Remote Control, который на данный момент уже дорос до версии 3.03 (берем его по адресу developer.sonyericsson.com/getDocument.do?docId=71477 - регистрация бесплатна, требуется всего лишь ввести код, соответствующий картинке). Работа с ней особой сложностью не отличается, в сравнении с вышеописанной программой, а вот количество настроек немного больше. В частности, добавлена возможность выбора модели телефона, что, в свою очередь, помогает более точно настроить создаваемый профиль под свои нужды. Каждой клавише можно назначить либо предустановленное действие (выпадающий список), либо свою комбинацию клавиш. Как и в первой программе, помимо создания своего, имеется возможность редактирования чужого .kcf файла и экспорта-импорта картинки. Результат сохраняется в формате SonyEricsson Bluetooth Remote Control File - тот самый .hid.
Итак, допустим, приложение, которым мы решили управлять, настроено (точнее, настроены на управление этим приложением комбинации "горячих" клавиш), картинка вместе с созданным .kcf файлом запакована в .tar архив и переименована в .hid. Теперь просто берем этот файлик и сбрасываем на телефон. Дистанционное управление включается запуском HID'а на телефоне (меню Развлечения - Дистанционное управление). После открытия файла на телефоне он автоматически начнет подсоединяться к ПК. Протокол Human Inferface Device должен быть разрешен в свойствах драйвера BT на компе. Между телефоном и компьютером должна быть установлена связь. Хотелось бы также заметить, что если .hid не умеет активировать запуск какого-либо приложения, то сделать это придется вручную, а потом уже только запускать процесс дистанционного управления на телефоне. Также зачастую невозможно использовать .hid файлы, созданные другими пользователями для работы с настроенными под их потребности приложениями, так как очень часто комбинации "горячих" клавиш у разных пользователей отличаются. То есть придется вручную править .kcf файл и вписывать свои значения скан-кодов клавиш. Данные манипуляции успешно опробованы на телефонах SonyEricsson (в частности, на моделях К750 и W810i) и теоретически все телефоны, которые имеются в списке выбора программы Bluetooth Remote Control, также способны работать в качестве пульта дистанционного управления, насчет моделей других производителей ничего сказать не могу. Вот, в принципе, и все. Основы даны, а дальше все зависит только от фантазии пользователя. Кстати, множество полезной информации касательно данной темы можно почерпнуть по адресу www.sonyericsson.com/developer и в ветке форума Mobile-Review, посвященной дистанционному управлению с помощью телефонов SE (forum.mobile-review.com/showthread.php?t=15435). По вопросам, дополнениям и предложениям пишите на е-mail. Удачи вам в нелегком деле улучшения удобства жизни :).
Сергей БЕСАРАБ аka
stean,
helpfaq@tut.by,
сyberlab.blose.org