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

ste*_*sas 77 macos macos-sonoma

有什么方法可以禁用 macOS Sonoma 中的新文本光标吗?大写锁定指示器有点分散注意力。

ben*_*ggy 83

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

sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist redesigned_text_cursor -dict-add Enabled -bool NO
Run Code Online (Sandbox Code Playgroud)

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

您仍然需要重新启动。


bog*_*anw 64

感谢 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
Run Code Online (Sandbox Code Playgroud)

重新启动以使更改生效。

  • 这是一个非常愚蠢的重新设计功能,似乎开发人员只使用英文输入源。 (14认同)

ste*_*sas 22

可以通过设置操作系统功能标志来禁用 macOS Sonoma 中重新设计的插入点UIKit/redesigned_text_cursor/Enabled。您可以使用下面的 JXA 脚本来创建具有所需值的 PLIST。只需将所有内容复制到Script Editor中,将语言更改为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 ? '' : '';
}
Run Code Online (Sandbox Code Playgroud)

  • @benwiggy,我将 lldb 附加到 `CursorUIViewService` 进程并开始寻找与大写锁定相关的指令。Apple对其符号使用非常一致的命名模式,因此如果您知道想要实现什么,您可以在很短的时间内缩小到可能的过程。至于我知道要查看调试的进程,我将在[此处](https://twitter.com/stephancasas/status/1668186301558923265)详细介绍。 (3认同)
  • 太棒了,这已经解决了。之后重新启动。不知道为什么一半的互联网决定如此看好它作为一个设计功能!如果你想通过终端/命令行运行它,你可以将文件保存为js文件,然后使用: `osascriptwhatever.js` 将会出现一个密码弹出窗口,如果一切顺利的话会显示笑脸。如前所述,重新启动(也许重新登录,重新启动以获得良好的措施:))。 (2认同)

Hir*_*iro 9

自 2023 年 12 月 6 日起,您可以尝试通过此方法禁用输入源切换弹出窗口:

  1. 打开终端应用程序并输入:

    defaults write kCFPreferencesAnyApplication TSMLanguageIndicatorEnabled 0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后按回车键并重新启动计算机。

  • 无需重新启动,只需重新启动每个应用程序即可。 (3认同)