Аппаратное обеспечение IBM PC



         

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


На входе: 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;

    }




    Содержание  Назад  Вперед