Инициализация мыши



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,&reg,&reg); *nbottoms = reg.x.bx; return reg.x.ax; }



Содержание раздела