Руководство программиста для Linux


Программирование мыши


TCSBRK, TCSBRKP, TCGETA (get attributes - получить атрибуты)Мышь подключается как к последовательному порту, так и напрямую к шине. Разные типы мышек посылают разные типы данных, что немного усложняет программирование. Однако, Эндрю Хэйлет (Andrew Haylett) был так добр, что поставил общий копирайт на свою программу selection, то есть вы можете использовать его функции работы с мышью. В этом руководстве вы найдете пре-релиз selection-1.8 с пометкой COPYRIGHT. Правда, X11 уже предложили удобный мышечный API, поэтому программы Эндрю следует использовать только для не-X11 приложений. Из пакета selection вам потребуются только модули mouse.h и mouse.c.

Для получения событий от мыши вам необходимы ms_init() и get_ms_event(). ms_init() требует следующих 10 аргументов.

1) int acceleration TCSBRK, TCSBRKP, TCGETA (get attributes - получить атрибуты)Ускоряющий множитель. Если вы передвигаете курсор более, чем на delta пикселов, то движение ускоряется в зависимости от этого коэффициента.

2) int baud

bps - оценка скорости мыши (обычно 1200 bps)

3) int delta

Число пикселов, на которые сдвинется курсор, для активизации ускорения (см. 1).

4) char *device

Имя устройства (например, /dev/mouse).

5) int toggle

Выключатель DTR, RTS или и DTR и RTS каналов мыши и модема при инициализации (нормально - 0).

6) int sample

Разрешение мыши в dpi (обычно 100).

7) mouse_type mouse

Идентификатор присоединенной мыши, вроде P_MSC (Mouse Systems Corp.).

8) int slack

Если равно -1, то курсор застопоривается на границах экрана; при slack >=0 курсор выезжает с противоположной стороны, если он зашел за пределы на slack пикселов.

9) int maxx

Разрешение текущего терминала по x. Символы шрифта по умолчанию имеют ширину 10 пикселов, поэтому полный режим по x равен 10*80-1.

10) int maxy

Шрифт по умолчанию имеет символы высотой 12 пикселов, поэтому полное разрешение экрана по y 12*25-1 пиксел.

get_ms_event() нуждается только в указателе на структуру ms_event. Если get_ms_event() возвращает -1, то произошла ошибка. В случае успеха возвращается 0, а ms_event содержит текущее состояние мыши.




Начало  Назад  Вперед