gpt4 book ai didi

objective-c - OS X 鼠标位置问题

转载 作者:行者123 更新时间:2023-12-03 17:05:57 25 4
gpt4 key购买 nike

我试图通过在每次鼠标移动事件时将鼠标增量乘以 1 到 0 之间的数字来以编程方式减慢鼠标光标的速度。 X 轴工作正常,但 Y 位置总是移回屏幕中心,这很奇怪。

我似乎无法弄清楚为什么无论您向上还是向下移动鼠标,光标的 Y 位置都会向屏幕中心移动...

我为鼠标移动事件设置了一个CGEventTap,这是回调的代码:

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 点 = CGEventGetLocation(event);是一个点,其中 (0,0) 是屏幕的左上角

NSPoint old_point = [NSEvent mouseLocation];是屏幕左下角 (0,1) 的点。

如果我得到屏幕高度,然后执行以下操作:

'oY = abs(oY - screen_height+1);`,oY 现在基于屏幕的左上角,并且我的应用程序可以正常工作。

关于objective-c - OS X 鼠标位置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com