Название: нужен совет по клавиатуре на ARM9 телефоне Отправлено: lisarden от Март 24, 2011, 10:29 Всем привет!
Я разрабатываю GUI для телефона на ARM9. Аппарат имеет кнопки 0-9, * # плюс 4 софт-кнопки и навигатор <^> "OK" и мне нужно каким-то образом перехватывать все нажатия этих кнопок и создавать всю логику работы системы, а именно: 1) управлять окнами, менять их 2) с помощью стрелок перемещаться между активными виджетами 3) нажатия 0-9 транслировать в буквенный ввод, длительное нажатие преобразовать в цифру.. в общем, всё как на обычном кнопочном сотовом телефоне. Использую я qt-embedded-4.7, поэтому всё приходится делать ручками. По железу: клавиатура видна в линуксе как "/dev/input/event0" и "/dev/input/event1" (часть нажатий с одного ивента, часть с другого). Я могу объединить 2 драйвера в один, чтобы один event был, но это уже не по теме. Т.е. мне нужно какое-то одно место, где бы все нажатия и отпускания кнопок захватывались, преобразовывались в нужные Key_ и отправлялись на нужные виджеты. Как это сделать? Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: gogi от Март 24, 2011, 11:04 Пиши свой драйвер клавиатуры. Драйвер для Qt в смысле, а не для линукса.
В хелпе читай про QWSKeyboardHandler. Пример реализации смотри в $QTDIR/src/gui/embedded/qkbdlinuxinput_qws.cpp/.h И ещё погугли хорошенько. Я помню такая тема была на ЛОРе несколько лет назад и там были примеры кода. Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: lisarden от Март 24, 2011, 11:53 Спасибо за ответ!
а что мне даст драйвер? Он же не будет отслеживать какое окно у меня активное и сейчас надо цифры вводить или буквы (рус, анг, +регистр). Имхо драйвер это что-то Low-level, а не Application-level. Я не прав? Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: gogi от Март 24, 2011, 12:01 >а что мне даст драйвер?
Даст возможность обработать новые данные из /dev/input/event0 и передать их дальше в подсистему Qt. Возможно перед передачей нужно какие-то нажатия отбросить, подсчитать автоповторы вручную или что-нибудь ещё. Если ничего этого не надо, то пойдёт и стандартный драйвер. Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: lisarden от Март 24, 2011, 12:29 согласен, такой драйвер пригодится. Только я сейчас на x86 отлаживаюсь и там стандартная клавиатур работает без всяких драйверов.
Теперь следующй вопрос: каким образом мне захватывать события от клавиатуры (абсолютно все, вне зависимости от активности виджета) и посылать на нужный виджет? Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: ритт от Март 24, 2011, 14:40 события клавиатуры с виджетами никак не связаны. обработкой событий, рисованием, синхронизацией и т.д. занимается QWS.
посмотри сорцы любого из драйверов клавиатуры под QWS и сделай подобный для своей железки - всё. Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: gogi от Март 24, 2011, 21:02 Только я сейчас на x86 отлаживаюсь и там стандартная клавиатур работает без всяких драйверов. Стандартный и работает. Собственно ты можешь слушать /dev/input/event* что на своём телефоне, что на компьютере. И код будет практически совпадать. Правда у такого подхода есть недостаток: запускаешь программу через qvfb, она обрабатывает нажатия с клавиатуры. Переключаешься на редактор кода, а программа продолжает обработку нажатий. Пишешь код, а в программе чёрти что твориться :D Тут надо на уровне иксов как-то определять что окно qvfb не активно и всю обработку запрещать. Название: Re: нужен совет по клавиатуре на ARM9 телефоне Отправлено: lisarden от Апрель 02, 2011, 13:39 собрал апликуху под ARM с включенным qt-kbd-linuxinput. Запускаю и "о чудо!": кнопки работают, как комповая клавиатура без всяких плагинов и даже явного указания QWS_KEYBOARD. Дравер клавы написан в соответствии с подсистемой Linux Input, потому и заработало всё сразу..
|