禁用 macOS Sonoma 文本插入点(光标)/大写锁定指示器

回答 3 浏览 4188 2023-10-07

有没有办法禁用 macOS Sonoma 中的新文本光标?大写锁定指示灯有点让人分心。

stephancasas 提问于2023-10-07
3 个回答
#1楼
得票数 31

感谢 Stephancasas 的解释和解决方案。 另一种实现方式是从终端:

sudo mkdir -p /Library/Preferences/FeatureFlags/Domain
sudo /usr/libexec/PlistBuddy -c "Add 'redesigned_text_cursor:Enabled' bool false" /Library/Preferences/FeatureFlags/Domain/UIKit.plist

重新启动以使更改生效。

bogdanw 提问于2023-10-09
bogdanw 修改于2023-10-12
#2楼
得票数 16

可以通过为 UIKit/redesigned_text_cursor/Enabled 设置操作系统功能标志来禁用 macOS Sonoma 中重新设计的插入点。您可以使用下面的 JXA 脚本来创建具有所需值的 PLIST。只需将所有内容复制到脚本编辑器中,将语言更改为JavaScript,然后按播放即可:

#!/usr/bin/env osascript -l JavaScript

const App = Application.currentApplication();
App.includeStandardAdditions = true;

const kCFPrefsFeatureFlagsDir = '/Library/Preferences/FeatureFlags/Domain';
const kCFPrefsFeatureEnabledKey = 'Enabled';

const kUIKitDomainPrefsTemporaryPath = '/tmp/UIKit.plist';
const kUIKitRedesignedTextCursorKey = 'redesigned_text_cursor';

function run(_) {
  const dict = $.NSMutableDictionary.new;

  const enabled = $.NSMutableDictionary.new;
  enabled.setValueForKey(false, kCFPrefsFeatureEnabledKey);

  dict.setValueForKey(enabled, kUIKitRedesignedTextCursorKey);

  const error = $();
  dict.writeToURLError(
    $.NSURL.fileURLWithPath(kUIKitDomainPrefsTemporaryPath),
    error,
  );

  if (typeof error.js != 'undefined') {
    return `🫤: ${error.localizedDescription}`;
  }

  return App.doShellScript(
    [
      `mkdir -p '${kCFPrefsFeatureFlagsDir}'`,
      `mv '${kUIKitDomainPrefsTemporaryPath}' '${kCFPrefsFeatureFlagsDir}'`,
    ].join(' && '),
    {
      administratorPrivileges: true,
    },
  ).length == 0 ? '😃' : '🫤';
}
stephancasas 提问于2023-10-07
stephancasas 修改于2023-10-07
太棒了,这已经解决了。之后重新启动。不知道为什么一半的互联网决定如此看好它作为一个设计功能!如果你想通过终端/命令行运行它,你可以将文件保存为js文件,然后使用:osascript whatever.js 会出现一个密码弹出窗口,如果一切顺利的话会显示笑脸。如前所述,重新启动(也许重新登录,重新启动以获得良好的措施:))。Josh 2023-10-08
是的!谢谢你,@stephancasas。几周前我在 Think Different 上问过这个问题。如果您在那里发布答案,即使只是在这里指出,我也很乐意将其标记为已接受。 apple.stackexchange.com/questions/464717/...Lasse 2023-10-10
额外问题:光标在 Safari 中仍然保留其基于重音的颜色。碰巧知道在那里禁用它的技巧吗?Lasse 2023-10-10
我很好奇你是如何发现如此晦涩且特定的文件路径和首选项键的。benwiggy 2023-10-16
@benwiggy,我将 lldb 附加到 CursorUIViewService 进程并开始寻找与大写锁定相关的指令。 Apple对其符号使用非常一致的命名模式,因此如果您知道想要实现什么,您可以在很短的时间内缩小到可能的过程。至于我知道要调试的进程,我在此处详细介绍。stephancasas 2023-10-16
#3楼
得票数 14

进一步简化代码,你可以这样做:

sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist redesigned_text_cursor -dict-add Enabled -bool NO

如果文件夹不存在,将创建该文件夹。

您仍然需要重新启动。

benwiggy 提问于2023-10-15