Objective c OSX鼠标位置问题
我试图通过编程将鼠标增量乘以每个鼠标移动事件上1到0之间的数字来减慢鼠标光标的速度。它在X轴上运行良好,但Y位置总是移回屏幕中心,这非常奇怪 我似乎不明白为什么不管你是向上还是向下移动鼠标,光标的Y位置都会移向屏幕的中心 我为鼠标移动事件设置了CGEventTap,下面是回调的代码:Objective c OSX鼠标位置问题,objective-c,macos,cocoa,osx-lion,Objective C,Macos,Cocoa,Osx Lion,我试图通过编程将鼠标增量乘以每个鼠标移动事件上1到0之间的数字来减慢鼠标光标的速度。它在X轴上运行良好,但Y位置总是移回屏幕中心,这非常奇怪 我似乎不明白为什么不管你是向上还是向下移动鼠标,光标的Y位置都会移向屏幕的中心 我为鼠标移动事件设置了CGEventTap,下面是回调的代码: CGEventRef mouse_filter(CGEventTapProxy proxy, CGEventType type, CGEventRef event, float *speed_modifier)
CGEventRef
mouse_filter(CGEventTapProxy proxy, CGEventType type, CGEventRef event, float *speed_modifier) {
CGPoint point = CGEventGetLocation(event);
NSPoint old_point = [NSEvent mouseLocation];
CGPoint target;
int tX = point.x;
int tY = point.y;
float oX = old_point.x;
float oY = old_point.y;
float dX = tX-oX;
float dY = tY-oY;
dX*=0.1, dY*=0.1;
tX = round(oX + dX);
tY = round(oY + dY);
target = CGPointMake(tX, tY);
CGWarpMouseCursorPosition(target);
return false;
}
有人能帮我弄清楚怎么做吗
我在应用程序运行期间记录了一些值,发现
oY
似乎不包含预期值。。。它似乎总是接近430,通常在这两个像素之内tY
包含看似正确的目标值,因此一次迭代的oY
应该等于上一次迭代的tY
(它适用于X值),但是,oY
始终接近430,即使鼠标应该移向屏幕顶部。这让我觉得dY
以某种方式被设置为一个将oY
恢复到430左右的值,但我不知道这是如何发生的,因为dY
似乎也输出了正确的值…CGPoint=cgfeventgetlocation(event)代码>
是一个点,其中(0,0)是屏幕左侧的顶部
NSPoint old_point=[NSEvent mouseLocation]代码>
是一个点,其中(0,1)是屏幕左侧的底部
如果我获得屏幕高度,请执行以下操作:
'oY=abs(oY-屏幕高度+1)',oY现在位于屏幕左上角,我的应用程序工作正常