Как Mac OS X Games Получает низкоуровневые события ввода клавиатуры?

Игры, нуждаются в низкоуровневом доступе к входу клавиатуры. В окнах есть Directinput. Но какие технологии используют Mac OS X игровые разработчики?

Очевидно, что есть достаточно Mac Games, которые получают ввод клавиатуры справедливо, без недостатков широко известных решений:

Решение № 1: Использовать события Keyup / KeyDown

-(void)keyUp:(NSEvent*)event;
-(void)keyDown:(NSEvent*)event;

Недопустимый недостаток: События повторяются на основе настроек системных предпочтений для «ключевой скорости повторения» и «задержка повторной записи ключа». Это приводит к начальному событию клавиатуре, за которым следует пауза, прежде чем она начнет повторяться со скоростью, определяемой настройкой системы системы. Это решение не может быть использовано для непрерывных ключевых событий.

Интересно, может ли ключевое поведение повторного поведения можно отключить? Я полагаю, что вы можете прочитать первый ключ клавиш клавиши, а затем запомните «ключ с помощью KeyCode X - это вниз» в вашем классе, пока не будет получено событие Keyup, что обязуется, в обход проблем задержки повторения и повторения.

Решение № 2: Используйте кварты мероприятия

см. В Служба сервисов событий кварцевых событий . Кажется, достаточно низкий уровень.

Недопустимый недостаток: требует включения вспомогательных устройств в системных настройках под универсальным доступом - клавиатурой. Хотя это может быть по умолчанию, нет никакой гарантии, что его можно отключить некоторые системы.

Я также прочитал, что кварцевые мероприятия TAPS требуют, чтобы приложение было запущено как root, но не нашел подтверждения для этого.

Решение № 3: Углеродные события / IOKIT HID

Ссылка менеджера отличается как наследие и не должно использоваться для новой разработки.

Недопустимый недостаток: Никто не знает, как долго углеродные события будут продолжать поддерживаться в будущих версиях Mac OS.

Помимо углерода, являющегося устаревшей структурой, это все еще кажется лучшим решением. Но есть ли какие-либо другие недостатки для использования углеродных мероприятий?

Вопросы:

Какие технологии используют Mac OS X Game Developers для получения событий ввода клавиатуры низкого уровня? Если они используют одну из вышеперечисленных технологий, как они работают вокруг недостатков, которые я упомянул?

Обновить:

В конечном итоге я в конечном итоге обратился к использованию обычных NSEVENT сообщений и завернул их в аккуратный API для опроса клавиатуры. штаты .

24
задан Community 23 May 2017 в 11:46
поделиться