Elite Games - Свобода среди звезд!

Уроки для программистов - Устройства управления, ч.2

УСТРОЙСТВА УПРАВЛЕНИЯ
ЧАСТЬ ВТОРАЯ
УСТРОЙСТВА УПРАВЛЕНИЯ С ТОЧКИ ЗРЕНИЯ DIRECTINPUT

Прочитав прошлую статью, вы вполне могли ужаснутся, сколько существует всяких устройств, и на сколько отличаются устройств даже одного типа. Если каждое из них пришлось бы поддерживать отдельно, то программисты мира, замучались писать код поддержки для каждого отдельного устройства. Но пугаться не стоит, о нас позаботилась Microsoft, включив в состав DirectX модуль с названием DirectInput. А в DirectInput все это многообразие, вместили всего в три вида устройств, это клавиатура, мышь и джойстики. Но каким образом DirectInput’у удается объединить такое многообразие всего в три разных устройства, ведь даже на клавиатуре, может меняться количество кнопок. Что бы это понять, давайте рассмотрим, что представляют собой эти устройства с точки зрения DirectInput.(конкретно для DirectInput8)

Клавиатура -- выглядит для DirectInput как массив из 256 байт, каждый элемент массива это одна из кнопок клавиатуры, если кнопка нажата, то в элементе связанном с этой кнопкой, будет записано значение отличное от нуля. Стоит отметить следующее, DirectInput поддерживает мультимедийные клавиатуры, по крайней мере, константы клавиш там заданы, а вот будет это работать или нет вопрос сложный. Так как я встречал клавиатуры, на которых мультимедийные кнопки были сделаны так, что просто выдавали сочетание кнопок CTRL+кнопка, а фирменный софт их ловил и уже сами выполнял всё, что надо. Ещё одно важное замечание для DirectInput в системе есть только одна клавиатура, а если у вас больше чем одна клавиатура, то DirectInput воспринимает все клавиатуры, как одну и соответственно кнопки на них дублируют друг друга.

Мышь -- с мышью чуть сложней мышь это уже три оси, и до 8 кнопок. Ось для DirectInput это двухбайтовая знаковая переменная, в которой хранится значения показывающее отклонение оси от центра. Спрашивается откуда у мыши три оси, две понятно X и Y, но откуда взяться третей мышь, ведь не может определять изменение высоту, однако у большинства мышей есть колёсико, которое и выполняет работу третей оси. А вот мыши с двумя колёсами как видно не поддерживается, возможно, второе колесу, будет дублировать первое, но я не проверял. Да мышь, как и клавиатура тоже для DirectInput, всегда одна.

Джойстик -- это самое сложное устройство и соответственно в DirectInput, он представлен большим набором параметров. Джойстик может содержать до 6 осей: X, Y, Z, RX, RY, RZ. X и Y перемещение рукоятки влево вправо, что вполне логично, с осью Z трудней как таковой в жизни её быть не может, но так как джойстик может иметь РУД эта ось может быть установлена на нём. Оси RX, RY, RZ буква R вначале обозначает поворот, так ось RX обычно отвечает за состояние «Твиста», то есть поворота ручки вокруг своей оси, остальные могу быть заведены на ручку газа или ещё, что ни будь. Стоит помнить, что не все оси обязаны присутствовать на джойстике, многих из них может и не быть. Также джойстик может содержать до двух слайдеров, для DirectInput слайдеры в принципе не отличаются от осей, но вынесены в отдельный компонент. Оси и слайдеры это аналоговые части джойстика, то есть они не только говорят, что допустим ручку отклонили влево но и сообщают насколько. Идём дальше, у джойстика может быть до четырёх «хаток», несмотря на то, что в данный момент хатки бывают четырёх и восьмипозиционные DirectInput выдаёт значения наклона «хатки», в сотых градуса наклона хатки. Ну и на последок в джойстике до 128 кнопок. И ещё в отличии от клавиатуры и мыши джойстиков в системе может быть до 16 штук и пользователь может захотеть пользоваться несколькими одновременно.

На этом можно и закончить, но вы же спросите, куда делись гейм-пады и рули, а никуда просто для DirectInput это всё джойстики, хотя если драйвер написан правильно, то вы всё же сможете узнать, что это на самом деле джойстик, руль или гейм-пад. Вот только смысла в этом практически нет. На этом уже можно закончить.
В следующем уроке мы узнаем, как получить производится работа с DirectInput, а также научимся получать список устройств, и что эти устройства несут у себя на борту.
VBKesha
К началу раздела | Наверх страницы Сообщить об ошибке
Уроки для программистов - Устройства управления, ч.2
Все документы раздела: Для тех, кто хочет писать игры | Движок на OpenGL | Создание игр в Game Maker | Bump mapping | Использование Direct Input | XNA framework |


Дизайн Elite Games V5 beta.18
EGM Elite Games Manager v5.17 02.05.2010