Xcodeを使用してMacの画面上でマウスの位置を取得する必要があります。私はおそらくそれを行ういくつかのコードを持っていますが、私は常に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座標として取得するか、これを変換する必要があります。
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
作成者がフロートを%dとして出力しようとしているため、作成者の元のコードは機能しません。正しいコードは次のとおりです。
NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);
これを行うためにCarbonに行く必要はありません。
NS環境とCG環境の混合に注意してください。NS mouseLocationメソッドでマウスの位置を取得した場合、CGWarpMouseCursorPosition(cgPoint)を使用しても送信されません。この問題は、CGが左上を(0,0)として使用しているのに対し、NSは左下を(0,0)として使用しているためです。
Swiftのこの質問への答え
let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
NSLog(@"%@", NSStringFromPoint(point));
NSLogはtrueです。