Какао: получение текущей позиции мыши на экране - PullRequest
27 голосов
/ 13 июля 2009

Мне нужно получить положение мыши на экране на Mac с помощью Xcode. У меня есть код, который якобы делает это, но я всегда возвращаю x и y как 0:

void queryPointer()
{

    NSPoint mouseLoc; 
    mouseLoc = [NSEvent mouseLocation]; //get current mouse position

    NSLog(@"Mouse location:");
    NSLog(@"x = %d",  mouseLoc.x);
    NSLog(@"y = %d",  mouseLoc.y);    

}

Что я делаю не так? Как вы получаете текущую позицию на экране? Кроме того, в конечном итоге эту позицию (сохраненную в NSPoint) необходимо скопировать в CGPoint для использования с другой функцией, поэтому мне нужно получить ее либо в виде координат x, y, либо перевести.

Ответы [ 5 ]

57 голосов
/ 09 декабря 2009

Оригинальный код автора не работает, потому что он / она пытается напечатать всплывает как% d. Правильный код будет:

NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);

Вам не нужно идти в Карбон, чтобы сделать это.

24 голосов
/ 13 июля 2009
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
12 голосов
/ 28 апреля 2014

Остерегайтесь смешивания среды NS со средой CG. Если вы получили местоположение мыши с помощью метода NS mouseLocation, тогда используйте CGWarpMouseCursorPosition (cgPoint), и вы не будете отправлены в ожидаемую точку на экране. Проблема возникает из-за того, что CG использует верхний левый угол как (0,0), а NS использует нижний левый как (0,0).

6 голосов
/ 28 мая 2016

Ответ на этот вопрос в Swift

let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
0 голосов
/ 12 февраля 2016
NSLog(@"%@", NSStringFromPoint(point));

NSLog верно;

...