LINUXPORTAL.RU  |   Живое общение LinuxPortal.Ru   |    Ленты событий        |   ФОРУМЫ  |   БИБЛИОТЕКА  |   ССЫЛКИ  |   НОВОСТИ  |   БЛОГИ АДМИНОВ

Участники   Поиск   F.A.Q.    Регистрация    Вход   Начало
Начало » Для администраторов и программистов » Железная разработка » Драйвер для устройства ввода
Показать: Сегодняшние сообщения  :: Показать голосования :: Навигатор по сообщениям
Отправить по e-mail 
Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Драйвер для устройства ввода Птн, 01 Август 2008 12:19 Переход к следующему сообщения
serggt1 в настоящее время не в онлайне serggt1  RUSSIAN FEDERATION
Сообщений: 5
Зарегистрирован: Август 2008
Частый Гость
Здравствуйте.
Подскажите, как решить проблему, я пытаюсь заставить работать тачскрин generaltouch в kubuntu 8.04. Открыл исходники usbtouchscreen.c, там есть поддержка этого устройства, но работает неправильно. Путем простого эксперимента обнаружил следующую странность: если поставить границы координат, отправляемых устройством в [0,100]x[0.100] и поставить курсор в (50,50):

input_set_abs_params(usbtouch->input, ABS_X, 0, 100, 0, 0);
input_set_abs_params(usbtouch->input, ABS_Y, 0, 100, 0, 0);
input_sync(usbtouch->input);

// первое событие будет игнорироваться
input_report_abs(usbtouch->input, ABS_X, 10);
input_report_abs(usbtouch->input, ABS_Y, 10);
input_sync(usbtouch->input);

input_report_abs(usbtouch->input, ABS_X, 50);
input_report_abs(usbtouch->input, ABS_Y, 50);
input_sync(usbtouch->input);

То курсор скорее всего будет совсем не в (50%,50%), а там, где ему захочется.

Может, кто-нибудь знает, как решить эту проблему?
Re: Драйвер для устройства ввода Птн, 01 Август 2008 12:43 Переход к предыдущему сообщенияПереход к следующему сообщения
serggt1 в настоящее время не в онлайне serggt1  RUSSIAN FEDERATION
Сообщений: 5
Зарегистрирован: Август 2008
Частый Гость
Это все я делал в linux-2.6.24/drivers/input/touchscreen/usbtouchscreen.c. Фрагменты оригинала:

========================================
.....

static int usbtouch_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
.....
input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
input_set_abs_params(input_dev, ABS_X, type->min_xc, type->max_xc, 0, 0);
input_set_abs_params(input_dev, ABS_Y, type->min_yc, type->max_yc, 0, 0);
if (type->max_press)
input_set_abs_params(input_dev, ABS_PRESSURE, type->min_press,
type->max_press, 0, 0);
.....
}

.....

static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
unsigned char *pkt, int len)
{
struct usbtouch_device_info *type = usbtouch->type;

if (!type->read_data(usbtouch, pkt))
return;

input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch);

if (swap_xy) {
input_report_abs(usbtouch->input, ABS_X, usbtouch->y);
input_report_abs(usbtouch->input, ABS_Y, usbtouch->x);
} else {
input_report_abs(usbtouch->input, ABS_X, usbtouch->x);
input_report_abs(usbtouch->input, ABS_Y, usbtouch->y);
}
if (type->max_press)
input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press);
input_sync(usbtouch->input);
}

.....
========================================
Re: Драйвер для устройства ввода Сбт, 02 Август 2008 01:49 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

откалибровать?...
Linux GeneralTouch driver Пнд, 15 Сентябрь 2008 00:42 Переход к предыдущему сообщенияПереход к следующему сообщения
serggt1 в настоящее время не в онлайне serggt1  RUSSIAN FEDERATION
Сообщений: 5
Зарегистрирован: Август 2008
Частый Гость
It was a big problem for me to make GeneralTouch touchscreen device working on Linux. I made it and share result of my work here so other people could google and use it.

I fixed a bit usbtouchscreen driver and wrote a calibrate program.
This was made in hurry just for it will work. And it worked fine for me on Kubuntu 8.04, kernel 2.6.24-16, Xorg 1.4.0.90.

Hope this will helps somebody.

  • Вложение: touchscreen.zip
    (Размер: 575.82KB, Загружено 225 раз)
Re: Linux GeneralTouch driver Пнд, 15 Сентябрь 2008 08:31 Переход к предыдущему сообщенияПереход к следующему сообщения
Sveolon в настоящее время не в онлайне Sveolon  RUSSIAN FEDERATION
Сообщений: 134
Зарегистрирован: Октябрь 2005
А вы не пытались протолкнуть ваш патч в основную ветку ядра? Там он бы помог максимальному количеству людей.
Re: Драйвер для устройства ввода Пнд, 15 Сентябрь 2008 21:59 Переход к предыдущему сообщенияПереход к следующему сообщения
serggt1 в настоящее время не в онлайне serggt1  RUSSIAN FEDERATION
Сообщений: 5
Зарегистрирован: Август 2008
Частый Гость
Пытался, сразу не получилось - просто не нашел, где и как это сделать. Времени свободного было немного, поэтому бросил эту затею. Может, Вы подскажете, с чего начать?

К тому же, там в драйвере просто стоят неправильные координаты. Остальная часть - это простенькие скрипты и программа калибровки. Их к главной ветке не прилепишь, наверное. Вот и раздаю по форумам. Ваш я нашел в гугле. Надеюсь, другие люди тоже смогут это сделать по ключевым словам.

Сейчас проверил, гугл на запрос "Linux GeneralTouch driver" выдает первой эту страницу :)

[Обновления: Пнд, 15 Сентябрь 2008 22:08]

Re: Драйвер для устройства ввода Срд, 17 Сентябрь 2008 15:11 Переход к предыдущему сообщенияПереход к следующему сообщения
Sveolon в настоящее время не в онлайне Sveolon  RUSSIAN FEDERATION
Сообщений: 134
Зарегистрирован: Октябрь 2005
Я бы начал отсюда http://linuxkernel.ru/ или отсюда http://kernel.org/pub/linux/docs/lkml/
Re: Драйвер для устройства ввода Чтв, 18 Сентябрь 2008 20:40 Переход к предыдущему сообщения
kaboom в настоящее время не в онлайне kaboom  UNITED STATES
Сообщений: 997
Зарегистрирован: Июль 2002
Географическое положение: NY

guru · partner
ya bi ne nachinal...
cheloverk ze popitalsya vam ob'yasnit' situaziyu, a vi vse
daete emu nenuznie soveti.

esli ya pravil'no ponyal, to usbtouch.c --eto edinstvennii file, kotorii otnositsya s yadru.
ya sdelal diff predstavlennogo s vcherashnim usbtouch.c i
ne zametil nikakih serioznih otlichii za isklyucheniem
2 constant v general_touch_read_data i eze dvux: max_xc i max_yc v opredelenii DEVTYPE_GENERAL_TOUCH.

takim obrazom, na yadernii patch ne pohoze nikak.

prikladnuyu programmu, ochevidno mozno predstavit' miru, no ne na kernel.org.

  Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Предыдущая тема:HDD маркировка и реальность жизни
Следующая тема:PCI-драйвер
Переход к форуму:
  

-=] Вернуться вверх [=-
[ Сформировать XML ] [ RSS ]

Текущее время: Сбт Июл 31 17:54:49 MSD 2010
.:: Обратная связь :: Начало ::.

При поддержке: FUDforum 3.0.0.
Copyright © 2001-2009 FUDforum Bulletin Board Software

©"Linuxportal.Ru". Материалы сайта можно использовать свободно при условии сохранения этой свободы при дальнейшем распространении, если явно не указано иное.

Дизайн и программирование: ,
Поставьте нашу кнопку: Linux Portal.ru ::: Линукс Портал.ру