#objective-c #macos #cocoa #mouse-cursor
#цель-c #macos #cocoa #мышь-курсор
Вопрос:
Мне нужно иметь возможность установить местоположение мыши в середине экрана / окна. Как я могу это сделать?
Комментарии:
1. Я думаю, что это одна из тех вещей, где нет простого способа сделать это, потому что это не очень удобно для пользователя.
2. Я не думаю, что установка местоположения мыши в определенную точку была бы очень полезной… но опять же, я не слишком уверен, чего вы хотите от своей программы…
3. Элегантного способа сделать это не существует, потому что это крайне недружелюбно к пользователю.
4. Можете ли вы объяснить свою конечную цель? Возможно, есть другой способ достичь этого.
5. В этом случае вы также захотите использовать CGAssociateMouseAndMouseCursorPosition, чтобы вам не нужно было вызывать CGWarpMouseCursorPosition в каждом кадре.
Ответ №1:
Кажется, в документации указано, что CGDisplayMoveCursorToPoint или CGWarpMouseCursorPosition будут делать то, что вам нужно.
РЕДАКТИРОВАТЬ: Чтобы соответствовать вашему последнему комментарию, я бы дополнительно рекомендовал CGWarpMouseCursorPosition
, о котором говорится в документах:
Например, эта функция часто используется для перемещения курсора обратно в центр экрана в играх, которые не хотят, чтобы курсор был закреплен по краям экрана.
Комментарии:
1. Только что попробовал это. Спасибо за вашу помощь, но эта функция, похоже, переопределяет мой обработчик мыши в моей игре.
2. @ChaseWalden, под «переопределением» ты имеешь в виду, что именно? Они больше не вызываются?
3. да. Он отвечает, возможно, в течение 2-3 кадров, а затем блокируется.
Ответ №2:
Я работал над чем-то подобным на прошлой неделе.
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef mouse = CGEventCreateMouseEvent (NULL, kCGEventMouseMoved, CGPointMake( X, Y), 0);
CGEventPost(kCGHIDEventTap, mouse);
CFRelease(mouse);
CFRelease(source);
Просто установите X и Y.
Редактировать:
#include <ApplicationServices/ApplicationServices.h>
Комментарии:
1. Это (пока) отлично работает для меня. Я использую это вместе с [NSCursor скрыть] в приложении для запуска полноэкранных видеороликов в случайном порядке (для компьютеров, настроенных как установки, на которых нет взаимодействия с пользователем). Это позволяет мне предотвратить отображение мыши или наведение курсора мыши на строку меню.