Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Bios INT 33h

Листинг 2.5. Программа Timer. | Листинг 2.7. Ассемблерная часть примера. | Листинг 2.9. Си-функция, тестирующая видеорежим (SETMOPEC.C). | Листинг 2.11, Программа на Си для тестирования программы 2.10 (FILLC.C). | ОСНОВЫ РАБОТЫ С УСТРОЙСТВАМИ ВВОДА | Листинг 3.1. Чтение кнопок джойстика. | Листинг 3.2. Чтение позиции джойстика. | Листинг 3.3. Программа работы с джойстиком (JOY.C). | Bios INT 16h | Листинг 3.5. Получение скан-кодов с клавиатуры. |


Функция 00h -инициализировать драйвер мыши

Вход: AX: 0000h

Выход: AX: FFFFh в случае успеха,

0000h при неудаче

ВХ - количество кнопок мыши

Функция 01h - включить курсор мыши

Вход: AX: 0001h

Выход: Ничего

Функция 02h -выключить курсор мыши

Вход: AX: 0002h

Выход: Ничего

Функция 03h -возвратить позицию курсора и статус клавиш

Вход: АХ:000Зh

Выход: ВХ - статус кнопок

Бит 0 - левая кнопка: 1 - нажата, 0 - не нажата

Бит 1 - правая кнопка: 1 - нажата, 0 - не нажата

Бит 2 - центральная кнопка: 1 - нажата, 0 - не нажата

СХ - Х-координата курсора

DX - Y-координата курсора

Функция 0Bh -возвратить относительную позицию мыши

Вход: AX: 000Bh

Выход: СХ - относительное горизонтальное движение в mickey

DX - относительное вертикальное движение в mickey

Функция 1Ah -установить чувствительность

Вход: AX: 00lAh

Выход: ВХ - чувствительность по оси Х (0-100)

СХ - чувствительность по оси Y (0-100)

DX - значение скорости, при которой чувствительность возрастает в 2 раза (0-100)

Как видите, функции драйвера вызываются через прерывание 33h. Мы записываем параметр в регистр АХ.и получаем результат в регистрах АХ, ВХ, СХ и DX. Я написал простую функцию для работы с мышью, она называется Squeeze_Mouse(). Эта функция может выполнять много действий — все зависит от передаваемых параметров. Прототип функции:

 

int Squeeze_Mouse(int command, int *x, int *y, int *buttons);

 

Кроме этого, я сделал несколько описаний, чтобы упростить работу с ней:

#define MOUSE_INT 0х33 // номер прерывания

#define MOUSE_RESET 0х00 // сброс мыши

#define MOUSE_SHOW 0х01 // показать мышь

#define MOUSE_HIDE 0х02 // погасить мышь

#define MOUSE BUTT_POS 0х03 // возвратить координаты

//и количество кнопок

#define MOUSE_SET_SENSITIVITY 0x1A // установить

//чувствительность

//в пределах 0-100

#define MOUSE_MOTION_REL 0x0B // установить

// относительную

// чувствительность

Таким образом, если мы хотим получить координаты мыши, то должны написать следующее:

 

Squeeze Mouse(MOUSE_BUTT_POS, &mouse_x, &mouse_y, &mouse_buttons);

 

где mouse_x, mouse_y и mouse_buttons - локальные переменные для сохранения результатов.

 

Теперь обратим внимание на два способа, используемые для передачи координат мыши:

§ Драйвер мыши может возвращать абсолютные координаты. В этом случае значения Х и Y являются координатами мыши на экране. К примеру, если мышь находится в левом верхнем углу экрана, функция возвращает (0,0);

§ Драйвер мыши может возвращать относительные координаты. При этом возвращается разница координат от предыдущей посылки. Например, если мышь подвинулась на 20 микки по оси Х и на 10 по оси Y, то эти значения и будут возвращены. Для чтения в относительном режиме используйте константу MOUSE_MOTION_REL.

Еще несколько слов о мыши. Вы можете менять ее чувствительность к передвижению, используя константу MOUSE_SET_SENSITIVITY. Для этого подберите для переменных Х и Y значение от 1 до 100 и вызовите Squeeze_Mouse. Чувствительность мыши определяется как отношение пиксельного перемещения курсора мыши к одному микки.

Листинг 3.8 содержит демонстрационную программу, которая показывает использование мыши. Эта программа позволяет рисовать на экране, нажимая на левую кнопку мыши и менять цвет, используя правую кнопку.


Дата добавления: 2015-07-12; просмотров: 88 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 3.7. Демонстрационная программа работы с клавиатурой (KEY.C).| Листинг 3.8. Работа с мышью (MOUSE.C).

mybiblioteka.su - 2015-2024 год. (0.008 сек.)