Ответ 1
NSEvent не предоставляет способ сделать это, но вы можете создать CGEvent и создать вокруг него обертку NSEvent. Событие автоматически будет использовать текущее местоположение курсора. См. CGEventCreateScrollWheelEvent. Однако размещение этого события с использованием NSApplication postEvent:atStart:
не работает (возможно, потому, что оно не имеет определенного окна). Вы можете либо отправить CGEvent прямо в поток событий, либо отправить NSEvent непосредственно в метод вида scrollWheel:
.
CGWheelCount wheelCount = 2; // 1 for Y-only, 2 for Y-X, 3 for Y-X-Z
int32_t xScroll = −1; // Negative for right
int32_t yScroll = −2; // Negative for down
CGEventRef cgEvent = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, wheelCount, yScroll, xScroll);
// You can post the CGEvent to the event stream to have it automatically sent to the window under the cursor
CGEventPost(kCGHIDEventTap, cgEvent);
NSEvent *theEvent = [NSEvent eventWithCGEvent:cgEvent];
CFRelease(cgEvent);
// Or you can send the NSEvent directly to a view
[theView scrollWheel:theEvent];