Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Python | USB-мышь
Показать сообщение отдельно

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Честно говоря мне с gpm разбираться лень (я с ним даже как простой пользователь не общался никогда).

Так что рекомендую поизучать /usr/src/linux/drivers/input/mousedev.c. В частности функцию mousedev_packet. Пакет данных на самом деле очень простой, кажется. Особенно если нас интересуют только нажатые клавиши. Единственная мелочь - протоколы бывают 3-х и 4-х байтовые (обычный PS2 - 3хбайтовый, у меня именно так). Информация о трёх первых нажатых кнопках содержится в трёх младших битах первого байта. Всё.

Добавлено чуть позже

Вот, написал относительно правдоподобный обработчик клика:
Код: Выделить весь код
#!/usr/bin/python
f = file("/dev/input/mice")
l, r = 0, 0
while 1:
	buttons = ord(f.read(3)[0])
	nl, nr = buttons&1, buttons&2
	if l and not nl:
		print "left release"
	if r and not nr:
		print "right release"
	l, r = nl, nr
Добаволено ещё чуть позже
Пораскинул мозгами и понял, что /dev/input/mice по умолчанию всегда выдаёт в PS2 всё. И чтобы перевести её в расширенный режим надо что-то сделать. Вывод на сделан на основе того, что мышь у меня со скролом (т.е. привтворяется пятикнопочной), а PS2 несёт информацию только о 3-х кнопках. При этом иксы питаясь от того же /dev/input/mice на скролл реагируют -> каким-то образом переводят его в расширенный режим (т.е. один из двух 4-х юайтовых протоколов). Как это делается - ни малейшего представления.

-------
http://ivank.ru


Последний раз редактировалось ivank, 18-01-2007 в 18:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:28, 18-01-2007 | #4

Название темы: Python | USB-мышь