滑鼠是消除操作系统强加的默认鼠标加速行为的标准方法。
但有时我们发现有必要将其关闭,因为它会干扰某些应用程序。到目前为止的例子是协同作用. 这是错误:https://github.com/synergy/synergy/issues/4068
Synergy 在尝试 OS X <--> Windows 7 互操作时遇到了几个问题,到目前为止,最不可靠的设置是将 OS X 作为服务器。例如,我的系统存在一些问题,导致 iTerm2(我的所有工作都在这里进行)基本上无法通过 Synergy 客户端进行控制。糟糕。
无论如何,为了使用 Synergy,我们必须关闭 Smoothmouse,以便在按住按钮时不会获得巨大的鼠标加速度增益。
到目前为止,我发现的唯一可行的解决方案是这种方法,本质上就是抓住一个可执行文件来自未知作者通过纯文本互联网协议发送的信息:
curl -O http://ktwit.net/code/killmouseaccel; chmod +x killmouseaccel; ./killmouseaccel mouse
我打开可执行文件并发现它相当小(这意味着......)后,我确实咬紧牙关并运行了它。绝对没有),所以我现在可能没有被黑客入侵。很可能。
所以我的问题基本上是,肯定有一种更好的方法来调整 OSX 上的鼠标加速?也许我们可以尝试找出这个程序的工作原理,并构建一个开源版本,这样我们就不必每次都掷骰子了?
答案1
好吧,我又这么做了。我问了一个问题,我花了一秒钟在谷歌上搜索,自己找到了答案。
https://github.com/docwhat/killmouseaccel
//
// main.c
// killmouseaccel
//
// Created by Christian Höltje on 9/20/11.
// This is public domain. The code was originally taken from
// http://forums3.armagetronad.net/viewtopic.php?t=3364
//
#include <stdio.h>
#include <string.h>
#include <IOKit/hidsystem/IOHIDLib.h>
#include <IOKit/hidsystem/IOHIDParameter.h>
#include <IOKit/hidsystem/event_status_driver.h>
int main(int argc, char **argv)
{
const int32_t accel = -0x10000; // if this ever becomes a scale factor, we set it to one
if(argc < 2) {
fprintf(stderr, "Give me mouse and/or trackpad as arguments\n");
return 1;
}
io_connect_t handle = NXOpenEventStatus();
if(handle) {
int i;
for(i=1; i<argc; i++) {
CFStringRef type = 0;
if(strcmp(argv[i], "mouse") == 0)
type = CFSTR(kIOHIDMouseAccelerationType);
else if(strcmp(argv[i], "trackpad") == 0)
type = CFSTR(kIOHIDTrackpadAccelerationType);
if(type && IOHIDSetParameter(handle, type, &accel, sizeof accel) != KERN_SUCCESS)
fprintf(stderr, "Failed to kill %s accel\n", argv[i]);
}
NXCloseEventStatus(handle);
} else
fprintf(stderr, "No handle\n");
return 0;
}
这段代码看起来是安全的!所以如果有疑问,可以自己编译一下。
仍然想知道是否有一个 CLI 命令可以实现这一点,但 C 程序不会有问题。