Инициализация мыши
3.3.1. Инициализация мыши
На входе: AX = 0000h. На выходе: AX = состояние мыши: 0000h - драйвер мыши или мышь не установлены; FFFFh - драйвер и мышь установлены; BX = количество клавиш у мыши: 2 - две клавиши; 0 - больше или меньше, чем две; 3 - мышь системы Mouse Systems (имеет три клавиши).
Эта функция выполняет аппаратный сброс оборудования мыши и программную установку драйвера мыши в начальное состояние. С помощью функции 21h можно выполнить установку драйвера в исходное состояние, не выполняя аппаратного сброса мыши.
При установке в исходное состояние для программ, работающих в текстовом режиме, выполняются следующие действия:
- курсор перемещается в центр экрана и гасится;
- разрешается перемещение курсора по всей поверхности экрана, причем на экране отсутствуют зоны, в которых курсор является невидимым;
- устанавливается режим отображения курсора - инвертирование атрибута символа, на который указывает курсор;
- для изображения курсора выбирается нулевая страница видеопамяти;
- разрешается эмуляция светового пера (хотя это вам едва ли понадобится);
- устанавливается начальная скорость перемещения курсора.
Мы подготовили функцию для инициализации мыши из программы, составленной на языке Си: /** *.Name ms_init *.Title Инициализация мыши * *.Descr Эта функция выполняет аппаратный сброс мыши, * устанавливает в начальные значения внутренние * переменные ее драйвера. Дополнительно определяется * количество клавиш мыши. * *.Proto int ms_init(int *nbottoms) * *.Params int *nbottoms - указатель на переменную * типа int, в которую будет записано количество * клавиш, имеющихся в мыши. * *.Return 0 - плата или драйвер не установлены; * -1 - плата установлена, инициализация * выполнена успешно; * * В переменную nbottoms записывается количество * клавиш мыши: * * 2 - две клавиши; * 0 - больше или меньше, чем две; * 3 - мышь системы Mouse Systems, три клавиши. * *.Sample ms_sampl1.c **/ #include <dos.h> #include <conio.h> union REGS reg; int ms_init(int *nbottoms) { reg.x.ax = 0; int86(0x33,®,®); *nbottoms = reg.x.bx; return reg.x.ax; }