如何使用swift或objective-c以编程方式更改macosx可可应用程序中系统光标的大小



我尝试使用以下代码设置它的全局大小:

-(void)setOption {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   NSDictionary *olddict = [defaults persistentDomainForName:@"com.apple.universalaccess"];
   NSMutableDictionary *newdict = [olddict mutableCopy];
   [newdict setObject:@4.0 forKey:@"mouseDriverCursorSize"];
   [defaults setPersistentDomain:newdict forName:@"com.apple.universalaccess"];
   [defaults synchronize];
   NSLog(@"Cursor size set to %@", newdict);
}

我可以在NSLog中看到它更改了它,但我不知道如何重新启动/重置系统光标,以便将光标更改为指定的大小。

有人知道以编程方式更改其大小的更好方法吗?或者知道如何在默认值更改后重新启动系统光标吗?

EDIT(关于重复):我的问题很独特,因为我不能像其他主题中提供的答案那样使用appdescription来解决这个问题。此外,该主题创建于2013年,似乎已经过时。也许从那以后情况发生了一些变化。此外,Swift可能是解决这一问题的可行解决方案。谁知道呢?所有这些论点都表明,这不是一个重复的问题。

CGError state = CGSShowCursor(CGSDefaultConnection) ;
    if (state != kCGErrorSuccess) NSLOG(@"error : %d",state);

也许用CGSShowCursor(CGSMainConnectionID()) 试试

这也可能有助于:https://github.com/alexzielenski/Mousecape/blob/1d534b1e076b07a01b80364be23c88c8439028bc/Mousecape/mousecloak/NSCursor_Private.h

警告。此代码不是基于保存在首选项中的内容,因此请将其合并:

  float cursorScale = 2;
  cursorScale = MAX(1, MIN(cursorScale,4));
  int connectionID = CGSMainConnectionID();
  CGSSetCursorScale(connectionID, cursorScale);

以获得的大小

  CGSGetCursorScale(connectionID, &cursorScale);

   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   NSDictionary *olddict = [defaults persistentDomainForName:@"com.apple.universalaccess"];
   NSMutableDictionary *newdict = [olddict mutableCopy];
   [newdict setObject:@4.0 forKey:@"mouseDriverCursorSize"];
   [defaults setPersistentDomain:newdict forName:@"com.apple.universalaccess"];
   [defaults synchronize];
   NSLog(@"Cursor size set to %@", newdict);

学分:Alex Zielenski

最新更新