А еще (с жиру бешусь, да-да) в Колибри из qemu у меня не работает планшет. Курсор прыгает в левый верхний угол экрана (как на новой ubuntu без модуля wizardpen, потому что на старой ubuntu и в xp планшет легко работает как HID), а при попытке переместить курсор резко прыгает в правый верхний угол. На настоящей машине с ядром из автосборки планшет просто мигает, курсор не движется. С USB-ядром выводит сообщение о том, что устройство не поддерживается, или вроде того. Подробности нужны?
UPDATE by moderator Mario
Подробности про планшет: Trust TB-5300
(Bus 007 Device 002: ID 5543:0004 UC-Logic Technology Corp. Genius MousePen 5x4 Tablet)
USB-ядро пишет в qemu: connect status changed, 0183/0181. И всё.
Про планшет: Trust TB-5300 USB
Ну, естественно скилл телепатии у всех людей в сообществе плохо прокачан, так что да нужны, но обещать я естественно ничего не могу.SoUrcerer wrote:Подробности нужны?
Выделил эту тему из "Ночные" сборки KolibriOS
Что-то мне подсказывает, что драйвер HID очень не прост и написан очень хитро.SoUrcerer wrote:как на новой ubuntu без модуля wizardpen, потому что на старой ubuntu и в xp планшет легко работает как HID... На настоящей машине с ядром из автосборки планшет просто мигает, курсор не движется. С USB-ядром выводит сообщение о том, что устройство не поддерживается, или вроде того.
Есть устройства hid с абсолютным позиционированием курсора, такие как планшеты и тачскрины.Они передают данные как-то иначе %)
Любопытно, характер данных, которые возвращает чтение /dev/input/, для мышки и планшета отличается. То есть в общем и целом вывод похож, но разница имеется. При перемещении мышки встречаются длинные блоки данных, иногда по 50-100 байт (каждый блок, видимо, заканчивается EF BF BD):
28 0A 20 20 20 20 20 20 20 20 EF BF BD
От планшета таких данных нет:
6A 02 38 EF BF BD EF BF BD 18 EF BF BD EF BF BD 38 EF BF BD
В основном при перемещении пера я получал 1-2 байта (изредка до 5-7) и затем EF BF BD, но зато блоков было много. При перемещении мыши я получал мало блоков, но они были длинные.
В коде драйвера можно найти, что планшеты точно так же, как и мышки, возвращают ускорение перемещения, но делают это как-то по странному:
Плюс есть отдельное событие на передачу абсолютных координат. По идее, добавление вот такой хрени позволит работать в Колибри практически со всеми планшетами.
28 0A 20 20 20 20 20 20 20 20 EF BF BD
От планшета таких данных нет:
6A 02 38 EF BF BD EF BF BD 18 EF BF BD EF BF BD 38 EF BF BD
В основном при перемещении пера я получал 1-2 байта (изредка до 5-7) и затем EF BF BD, но зато блоков было много. При перемещении мыши я получал мало блоков, но они были длинные.
В коде драйвера можно найти, что планшеты точно так же, как и мышки, возвращают ускорение перемещения, но делают это как-то по странному:
Code: Select all
switch (event->code) {
case REL_X:
xaccel = 1;
if(priv->mouseAccel) {
if(abs(event->value) > 2) {
xaccel = 2;
} else if(abs(event->value) > 4) {
xaccel = 3;
} else if(abs(event->value) > 6) {
xaccel = 4;
}
}
x = x + (xaccel * priv->mouseSpeed * event->value);
Ага, похоже, планшет возвращает координаты в режиме Intellimouse Extension.
http://www.computer-engineering.org/ps2mouse/
Возможно, с ним пытаются общаться как с обычной мышкой, и в итоге данные от него будут восприниматься совершенно неправильно. Более того, это определенно приведет к тому, что в 3м бите каждого третьего байта, который по стандарту PS/2 всегда должен быть 1, время от времени будет не 1 - это может быть воспринято как поломанная мышка.
http://www.computer-engineering.org/ps2mouse/
Возможно, с ним пытаются общаться как с обычной мышкой, и в итоге данные от него будут восприниматься совершенно неправильно. Более того, это определенно приведет к тому, что в 3м бите каждого третьего байта, который по стандарту PS/2 всегда должен быть 1, время от времени будет не 1 - это может быть воспринято как поломанная мышка.
Повесил вывод отладочных данных с планшета. При обычном перемещении мышь дает
08 01 01 - сдвиг на 1 пиксель по обоим осям
Планшет при небольшом перемещении генерирует
08 7F 7F
То есть курсор прыгает сразу на 79 пикселов. А планшет передает только 7F и 81 - видимо, сдвиг в меньшую или в большую стороны на 1 пиксель. Причем событий сдвига на 1 пиксель генерируется сразу море.
Можно попробовать добавить в драйвер ps2mouse обработку таких событий, и посмотреть, что из этого выйдет. А выйти может драйвер для планшетов и тач-скринов (у которых такая же фигня с координатами).
08 01 01 - сдвиг на 1 пиксель по обоим осям
Планшет при небольшом перемещении генерирует
08 7F 7F
То есть курсор прыгает сразу на 79 пикселов. А планшет передает только 7F и 81 - видимо, сдвиг в меньшую или в большую стороны на 1 пиксель. Причем событий сдвига на 1 пиксель генерируется сразу море.
Можно попробовать добавить в драйвер ps2mouse обработку таких событий, и посмотреть, что из этого выйдет. А выйти может драйвер для планшетов и тач-скринов (у которых такая же фигня с координатами).
Вы, конечно, не поверите, но банальные заглушки (ломающие работоспособность обычной мышки) сработали. Теперь курсором можно управлять, хотя он движется очень быстро. Но это и понятно - разрешение у планшета 2450 lpi: сдвинул перо на полдюйма - проскакал весь экран. Попробую задать отрицательное ускорение, и потом буду думать, как отличать планшет от обычной мышки. Я так подозреваю, что эта фигня творится на всех планшетах, потому что я щупал Genius и Wacom - они даже драйвера одни и те же используют.
Ды, ты брат - хакер!
докопайся до ID mouse, см.:SoUrcerer wrote:как отличать планшет от обычной мышки
viewtopic.php?f=30&t=55&hilit=mouse
http://www.win.tue.nl/~aeb/linux/kbd/sc ... tml#ss13.3
http://www.win.tue.nl/~aeb/linux/kbd/sc ... html#toc12
О, спасибо! Офигенная мысль. Может быть даже пойму, как работать в absolute mode.
В USB-режиме каждое HID-устройство рассказывает подробности о себе, если попросить. Технически это называется Report Descriptor, линуксовый lsusb -vvv его умеет распечатывать в более-менее читабельном виде, если предварительно сделать финт ушами.
Сделаем мир лучше!
Тут новый драйвер HID появился, с ним как планшет взаимодействует?
Сделаем мир лучше!
Who is online
Users browsing this forum: No registered users and 2 guests