Для тех, кто перешел с обыкновенного телефона на сенсорный было непривычно использовать qwerty-клавиатуру вместо стандартной клавишной. Если вы причесляетесь к этим людям - тогда эта тема для вас. В данный момент ведуться разработки по внедрению фингерпада (ФП) на равне со стандартной клавиатурой.
Автор разработки
eug - тема на
мотофане.
Цитата:
Пока не удалось нормально пристроиться, как деф. клава, чтобы поле ввода можно было скроллить.
В аттаче - библиотека. Можно потестировать (никаких гарантий с моей стороны, что ничего плохого не случится нет - у меня работает) с блокнотом (если с ним не заработает, то с мессенджером тож)
кидаем ее в корень флехи, например.
Далее из консоли:
LD_PRELOAD=/mmc/mmca1/main.so /usr/SYSqtapp/notepad/notepad или (с последней библиотекой)
LD_PRELOAD=/mmc/mmca1/fp.so /usr/SYSqtapp/notepad/notepad
и жмем стилусом на поле ввода
если мессага не вылезла, значить пока не судьба (но дело поправимое)
если вылезла, то будет работать и с мессенджером (как - объясню если будут желающие)
Новая либа (babf1ce5a30d6cbe6c60fb282d52640e)
2 языка (русский и английский) + режим цифр, языки пока вкомпиленны (в дальнейшем вынесу в настройки, наверное)
в режиме букв 3 режима работы (AB - все прописные Ab - первая прописная, остальные строчные ab - все строчные)
клавиша, где дб * - AB->Ab->ab->AB->... (надпись соот след режиму), в режиме цифр - *
клавиша, где дб # - en->ru->num->en->... (надпись соот след режиму)
клавиша 0 в режиме букв пока тоже пробел
клавиша 1 в режиме букв - куча разных символов
bks - бэкспейс
spc - пробел
std - вызов стд клавы
quit - убрать клаву
в зеленом лейбле (на этих скринах его еще нет) отображается текущая буква (как только исчезнет - значит кнопка сбросилась) - это пока просто так и вообще текущая версия не более чем прототип
|
Цитата:
с месседжером я делал так (может что-то упустил, месяц прошел, но идею из команд надеюсь уловите)
Код:
mkdir -p /ezxlocal/qtbin/messaging/o
cp /usr/SYSqtapp/messaging/messaging /ezxlocal/qtbin/messaging/o
cp /usr/SYSqtapp/messaging/msgctrloadslaveapp /ezxlocal/qtbin/messaging
в /ezxlocal/qtbin/messaging делаем скрипт с именем messaging (!!! обязательно с таким !!!) след содержания
Код:
#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib:/usr/lib/ezx/lib
export LD_PRELOAD=/mmc/mmca1/fp.so
exec /usr/SYSqtapp/messaging/o/messaging $*
последняя строка (там, где exec) обязательно через /usr/SYSqtapp, а не через /ezxlocal/qtbin (будут проблемы с правами)
не забываем chmod +x для него
mount --bind /ezxlocal/qtbin/messaging /usr/SYSqtapp/messaging
все killall messaging (или killall am, messaging запускается am'ом) и ждите пока перезапустится (если после щелчка на иконке не запустился - тыкните еще, просто он еще не готов)
если нужно больше приложений, то необязательно всех их так
для части (аддрбук (там есть проблемы с поиском), блокнот(вроде чисто), месседжер(проблема на скрине), может еще что) достаточно аналогичным образом переделать am.
|
Скачать
fp.so.gz и
liba.tar.gz
Цитата:
Так как am-application manager, запускает все приложения, включая ява, именно поэтому при убивании am вылетают абсолюто все приложения.
Результат:
- фингерпад работает во всех приложениях, включая ява.
|
Цитата:
Сделать скрипт, выполнить его 1 раз
Код:
#!/bin/bash
mkdir -p /mmc/mmca1/am/o
cp /usr/SYSqtapp/am/am /mmc/mmca1/am/o/
cp /usr/SYSqtapp/am/idlefetchdb /mmc/mmca1/am/o/
cp /usr/SYSqtapp/am/statmemprog /mmc/mmca1/am/o/
cp /usr/SYSqtapp/am/SysMenuTree /mmc/mmca1/am/o/
cp /usr/SYSqtapp/am/SysMime /mmc/mmca1/am/o/
cp /usr/SYSqtapp/am/SysRegistry /mmc/mmca1/am/o/
echo '#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib:/usr/l ib/ezx/lib
export LD_PRELOAD=/mmc/mmca1/fp.so
exec /usr/SYSqtapp/am/o/am $*' > /mmc/mmca1/am/am
chmod +x /mmc/mmca1/am/am
Потом в консоле:
mount --bind /mmc/mmca1/am /usr/SYSqtapp/am
kill -9 am
|
Цитата:
Как считать логи с am я не знаю, пришлось запускать ФП для конкретного ява-приложения. в консоли:
Код:
LD_PRELOAD=/mmc/mmca1/fp.so /usr/SYSjava/kvm -launch 20002
|
Обновленно
[quote]
Текущие исходники
(38b62ab7427047f0f84a54e19b1138fe)
все, что забито на
#if 0 #if 1 - разные тесты
в тек варианте - вроде то, что в шапке (на всяк случай в архив положил и сборку).
По коду
main - перехват и встраивание ФП,
mykbd - сам ФП.
Сейчас оставлен перехват только
KbTouchInputEngine::showInputWidget (ну и
hide),
так как часть других методов
show/hide клавы в конечном итоге обращается к ним (их там несколько, грепайте
objdump либ на
inputwidget, и еще в
inputmethods что-то лежит)
MyButton хотел унаследовать от
UTIL_PushButton, не получилось (у
UTIL_PushButton по либам нет деструктора при испол его как базы (D2)), поэтому такой изврат с
MyButton константа
fingerPadHeight сейчас не используется (осталась от пред вариантов).
Все русское (подписи) - в UTF-8
Код можете использовать как хотите (никаких лиц. ограничений с моей стороны)...
Скачать
fp.so.gz