在Xcode 4中更改鼠标的i-beam光标

时间:2011-07-18 19:23:53

标签: xcode macos colors mouse-cursor

在Xcode 4中采用深色配色方案,i光束光标(又名文本选择光标)几乎不可见。有没有办法改变这个光标的颜色,特别是对于Xcode,还是在系统范围内失败?

如果它会自动变成与其背景形成对比的颜色,那就太好了。

5 个答案:

答案 0 :(得分:47)

从Xcode 8开始,Apple已将i-beam光标隐藏在没有人找到它的地方。相反,许多人选择使用Mousecape来改变所有程序中的工字梁。我更喜欢这种方法,因为它将i-beam固定在支持黑暗主题的其他程序中,例如Komodo编辑器。 Mousecape应该适用于所有Xcode版本,并且更新Xcode不会破坏光标。我目前在macOS 10.13.2,Xcode 9.1中使用Mousecape。以下是步骤:

  1. here
  2. 下载鼠标
  3. 下载" cape"使用修改的工字梁光标,例如Bright whiteGrey shadow
  4. 运行Mousecape.app
  5. 来自Mousecape的菜单栏:File > Import Cape > "cape" file downloaded above
  6. 右键单击导入" cape"并选择Apply
  7. 检查新光标是否在Xcode中工作。如果满意,您可以通过从Mousecape的菜单栏运行命令来在每次重新启动时应用光标:Mousecape > Install Helper Tool
  8. 安装macOS更新(例如10.13.1至10.13.2)可能需要重复步骤5和步骤6。
  9. 原始答案:

    Xcode不会使用系统范围的i-beam光标,因为我发现每个人都在谈论它,就好像这是一个众所周知的事实。如果我不相信这些人,我就不会花两天的时间来弄清楚如何通过editing CoreGraphics改变系统工字梁光标,却发现Xcode的ibeam没有#&# 39;改变。 顺便说一句,我也偶然发现how to edit other system cursors

    我花了大部分时间来解决这个问题,但可以编辑Xcode中的i-beam光标。它只是Xcode 3.2.6的以下位置的TIFF文件(以前,我假设,但尚未测试):

      

    /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/TIbeam.tiff

    Xcode 4.1具有相同的文件,但它不会影响主编辑器中的工字梁(我假设它在某处使用过,但可能没有)。相反,Xcode 4.1中的主编辑器使用此文件:

      

    /Developer/Library/PrivateFrameworks/DVTKit.framework/Versions/A/Resources/DVTIbeamCursor.tiff

    ibeam文件在Xcode 4.4中再次移动:

      

    /Applications/Xcode.app/Contents/OtherFrameworks/XcodeEdit.framework/Versions/A/Resources/TIbeam.tiff

         

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/DVTIbeamCursor.png

         

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/DVTIbeamCursor@2x.png

    编辑DVTIbeamCursor.png足以在我的系统主编辑器中更改工字梁。在另一个网站上,有人报道DVTIbeamCursor@2x.png将用于视网膜显示器或Apple的其他新型高分辨率显示器,如Thunderbolt和Cinema。谁知道TIbeam.tiff是否已被使用,因为他们没有将其更新为png。

    根据下面的评论,在Xcode 5.0.2中,所有3个光标文件都被替换为一个文件:

      

    /Applications/Xcode.app/Contents/OtherFrameworks/XcodeEdit.framework/Versions/A/Resources/DVTIbeamCursor.tiff

    在5.1.1中(男孩,他们肯定喜欢在几乎每个版本中改变一些东西,不是吗?):

      

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Re源/ DVTIbeamCursor.tiff

    我猜测该文件是一个双分辨率(又称视网膜显示)光标,按比例缩小非视网膜屏幕。

    如果您无法在Xcode中找到ibeam文件,请尝试在终端中运行此命令:

      

    sudo find / -name' Ibeam ' -print

    在Xcode 7.3中,光标移动到以下包文件中,因此上面的搜索命令无法找到它:

      

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/Assets.car

    我建议使用找到here的进程将新游标修补到捆绑文件中。如果您不喜欢它安装的光标(我觉得它仍然太暗,灰色轮廓与灰色注释文本融为一体),请按照以下步骤操作:

    1. 下载Theme Engine的最新版本(我成功使用版本1.0.0(111)和Xcode 7.3.1)
    2. 备份/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/Assets.car
    3. Assets.car复制到可以编辑的位置,例如~/Documents/Assets.car
    4. 运行Theme Engine.app,点击Open Document,然后打开~/Documents/Assets.car
    5. 向下滚动左侧的项目列表,然后选择DVTIbeamCursor
    6. 您应该在中心面板中看到正常分辨率和双分辨率ibeam光标图像。将您自己的ibeam图像拖动到任一光标的顶部,它应该更改为显示您的图像。我使用了PNG图像。
    7. 保存,然后关闭主题引擎。
    8. 将修改后的Assets.car移回/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources/Assets.car并在某处保留修改后的版本的备份副本,这样您就不必再次执行此操作,直到新的Xcode版本更改内容为止。在Assets.car
    9. 您可能还希望向Apple发送一封愤怒的信,抱怨他们在过去7年多来没有解决这个问题,而是让用户越来越难以修补Apple的光标。< / p>

      不要忘记保留已编辑游标的备份。较新的Xcode版本会在进行软件更新时使用默认游标覆盖自定义游标。

      这是我使用的ibeam游标:In png format右键单击ibeam并选择保存图像以获取png版本,或单击here下载tiff版本。

      如果您正在制作自己的光标,请注意原始光标中黑线相交的位置是光标中白线相交的位置。这是因为原始光标是用于白色背景,所以它的黑色部分是光标热点所在的位置。

答案 1 :(得分:8)

我为ibeam光标创建了一个public repo,它应该适用于浅色和深色背景,因为它是黑色的,带有白色轮廓。它包括简洁的指令和准备插入Xcode包的TIFF文件。

更新:git repo包含一个shell脚本,使安装变得非常简单。

答案 2 :(得分:2)

不幸的是,这是Carbon和Cocoa游标之间的区别 - 可可游标不会反转;至少,雪豹。在Lion中,即使是Carbon游标也表现得像你不想要的那样。

如果你有一台运行Snow Leopard或更早版本的机器,比较BBEdit或TextWrangler(使用Carbon游标)中的工字梁行为,例如;它会在黑色背景上变成完全白色。即使这有点脆弱 - 当我改变屏幕放大倍率时,BBEdit以前的白色光标变黑。

您仍然可以在Cocoa应用中设置Carbon光标。在NSTextView子类中尝试这个:

#import <Carbon/Carbon.h>
[...]

- (void)resetCursorRects;
{
    // disable existing cursor setting behavior
}

- (void)cursorUpdate:(NSEvent *)event;
{
    SetThemeCursor(kThemeIBeamCursor);
}

- (void)updateTrackingAreas;
{
    for (NSTrackingArea *trackingArea in [self trackingAreas])
        [self removeTrackingArea:trackingArea];

    NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect options:NSTrackingCursorUpdate | NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect owner:self userInfo:nil];
    [self addTrackingArea:trackingArea];
}

(在64位中,你会看到这个函数被排除在标题之外,但符号就在那里并起作用。)如果你有足够的动力,你可能会修补Xcode来做一些以上的变体,也许来自Xcode plugin

如果你在Lion上,这就是它应该是什么样子:

Inverting cursor

因此我建议向Apple提交一个错误,以使系统范围的工字光标(或一般的NSCursor)正确处理黑暗背景;它不是Xcode特定的问题,它应该在几年前就已经修复了。

答案 3 :(得分:2)

对于Xcode 5预览,我为暗色模板创建了更好的I-Beam。你可以自由使用它。 http://www.scigems.org/wordpress/?p=92

答案 4 :(得分:1)

根据Apple论坛上的这个主题:

https://discussions.apple.com/thread/2811447?start=0&tstart=0

XCode 4字体和颜色首选项中提到的“光标颜色”实际上是您在窗口中单击以输入文本时看到的光标。

在代码编辑窗口中移动鼠标时看到的工字形光标是Mac-OS广泛的功能,您无法在XCode中更改。

上面的论坛帖子建议寻找第三方软件来改变系统范围的工字轴光标的属性。

另一篇文章指出,您至少可以编辑光标大小以使其更加明显:

系统偏好设置 - &gt;通用访问 - &gt;鼠标&amp;触控板 - &gt;光标大小