禁用 macOS Sonoma 文本插入点(光标)/大写锁定指示器
回答 3
浏览 4188
2023-10-07
有没有办法禁用 macOS Sonoma 中的新文本光标?大写锁定指示灯有点让人分心。
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
重新启动以使更改生效。
#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 ? '😃' : '🫤';
}
太棒了,这已经解决了。之后重新启动。不知道为什么一半的互联网决定如此看好它作为一个设计功能!如果你想通过终端/命令行运行它,你可以将文件保存为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
如果文件夹不存在,将创建该文件夹。
您仍然需要重新启动。