- •3.1. Как устроена мышь? Оптико-механические мыши
- •Оптические мыши
- •3.2. Драйверы мыши в ms-dos
- •3.3. Прерывание для обслуживания мыши
- •3.3.1. Инициализация мыши
- •3.3.2. Включить курсор мыши
- •3.3.3. Выключить курсор мыши
- •3.3.4. Определить положение курсора
- •3.3.5. Установить курсор
- •3.3.6. Определить положение курсора при нажатии клавиши
- •3.3.7. Определить положение курсора при отпускании клавиши
- •3.3.8. Задать диапазон движения курсора по горизонтали
- •3.3.9. Задать диапазон движения курсора по вертикали
- •3.3.10. Задать форму курсора в графическом режиме
- •3.3.11. Задать форму курсора в текстовом режиме
- •3.3.12. Определить содержимое счетчиков перемещения
- •3.3.13. Установить драйвер событий
- •3.3.14. Включить эмуляцию светового пера
- •3.3.15. Выключить эмуляцию светового пера
- •3.3.16. Задать скорость перемещения курсора мыши
- •3.3.17. Установить область исключения для курсора
- •3.3.18. Задать увеличенный графический курсор (pc mouse)
- •3.3.19. Определить порог удвоения скорости
- •3.3.20. Заменить драйвер событий
- •3.3.21. Определить размер буфера состояния драйвера
- •3.3.22. Сохранить состояние драйвера
- •3.3.23. Восстановить состояние драйвера
- •3.3.24. Установить альтернативный драйвер событий
- •3.3.25. Получить адрес альтернативного драйвера событий
- •3.3.26. Установить чувствительность мыши
- •3.3.27. Определить чувствительность мыши
- •3.3.28. Установить частоту прерываний для Inport Mouse
- •3.3.29. Установить номер видеостраницы
- •3.3.30. Определить номер видеостраницы
- •3.3.31. Отключить драйвер мыши
- •3.3.32. Восстановить драйвер мыши
- •3.3.33. Сбросить драйвер мыши
- •3.3.34. Определить тип мыши
3.3.20. Заменить драйвер событий
На входе: AX = 0014h;
CX = маска вызова:
бит 0 - вызов при перемещении мыши;
бит 1 - вызов при нажатии левой клавиши;
бит 2 - вызов при отпускании левой
клавиши;
бит 3 - вызов при нажатии правой клавиши;
бит 4 - вызов при отпускании правой
клавиши;
бит 5 - вызов при нажатии средней клавиши;
бит 6 - вызов при отпускании
средней клавиши;
7Fh - вызов при любом событии;
00h - отключение драйвера событий;
ES:DX = адрес (дальний) подключаемого
драйвера событий.
На выходе: CX = маска предыдущего драйвера событий;
ES:DX = адрес предыдущего драйвера событий
(т.е. адрес заменяемого драйвера
событий).
Функция аналогична функции 0Ch, однако ее основное назначение - временная замена драйвера событий. Например, подпрограмма в начале своей работы может установить свой драйвер событий, а перед завершением - активизировать драйвер, использовавшийся ранее.
3.3.21. Определить размер буфера состояния драйвера
На входе: AX = 0015h.
На выходе: BX = размер буфера, требующийся для хранения
состояния драйвера мыши.
Если вам требуется временно сохранить состояние драйвера мыши, а затем восстановить его, вы можете воспользоваться специально предназначенными для этого функциями 16h и 17h. Для этих функций требуется буфер, в котором будет храниться состояние драйвера. Размер буфера можно определить с помощью функции 15h.
Когда может потребоваться запоминание и восстановление состояния драйвера? Например, при использовании мыши резидентными (TSR) программами желательно сохранить состояние драйвера перед началом работы TSR-программы и восстановить его перед завершением работы TSR-программы.
3.3.22. Сохранить состояние драйвера
На входе: AX = 0016h;
ES:DX = адрес буфера для записи состояния
драйвера.
На выходе: Не используются.
Функция позволяет записать состояние драйвера в буфер, размер которого должен быть определен с помощью функции 15h.
3.3.23. Восстановить состояние драйвера
На входе: AX = 0017h;
ES:DX = адрес буфера, содержащего состояние
драйвера.
На выходе: Не используются.
Функция позволяет восстановить состояние драйвера из буфера, в который оно было записано при помощи функции 16h.
3.3.24. Установить альтернативный драйвер событий
На входе: AX = 0018h;
CX = маска вызова:
бит 0 - вызов при перемещении мыши;
бит 1 - вызов при нажатии левой клавиши;
бит 2 - вызов при отпускании левой
клавиши;
бит 3 - вызов при нажатии правой клавиши;
бит 4 - вызов при отпускании правой
клавиши;
бит 5 - вызов при одновременном нажатии
клавиши мыши и клавиши SHIFT
на клавиатуре;
бит 6 - вызов при одновременном нажатии
клавиши мыши и клавиши CTRL
на клавиатуре;
бит 7 - вызов при одновременном нажатии
клавиши мыши и клавиши ALT
на клавиатуре;
7Fh - вызов при любом событии;
00h - отключение драйвера событий;
ES:DX = адрес (дальний) подключаемого
драйвера событий.
На выходе: AX = результат установки:
0018h - драйвер успешно установлен;
FFFFh - ошибка при установке драйвера.
По сравнению с функцией 0Ch эта функция обеспечивает дополнительные возможности:
проверка состояния клавиш SHIFT, CTRL, ALT во время нажатия на клавиши мыши.
возможность одновременной установки до трех драйверов событий, каждый из которых использует свою маску событий, задаваемых в регистре CX.
При попытке установить два драйвера с одной и той же маской событий функция возвращает в регистре AX код ошибки FFFFh. В этом случае вы можете использовать функцию 19h для получения адреса предыдущего установленного драйвера событий, отключить его и повторить попытку подключения своего драйвера.
Вы можете использовать функцию 18h для отключения драйвера событий, если укажете в регистрах ES:DX его адрес и зададите в регистре CX значение маски, равное 0.