Cocoa прослушивает события перемещения мыши, когда движется мышь, а не курсор

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


person SpilledMango    schedule 02.05.2017    source источник


Ответы (1)


Когда вы скроете курсор, вызовите CGAssociateMouseAndMouseCursorPosition(FALSE). Это сделает так, чтобы движение мыши не перемещало курсор.

Вы будете продолжать получать события NSEventTypeMouseMoved, NSEventTypeLeftMouseDragged, NSEventTypeRightMouseDragged и NSEventTypeOtherMouseDragged при перемещении мыши (в зависимости от того, были ли нажаты кнопки во время перемещения). Поскольку курсор не движется, locationInWindow не будет иметь смысла. Он будет продолжать сообщать о последнем местоположении, когда вы отсоединили курсор от мыши. Однако свойства deltaX и deltaY будут указывать, как далеко и в каком направлении переместилась мышь.

person Ken Thomases    schedule 03.05.2017