提问人:bibble triple 提问时间:9/26/2023 最后编辑:Alexanderbibble triple 更新时间:9/27/2023 访问量:64
有没有办法在系统设置中按键时以编程方式更改表情符号面板?
Is there a way to programmatically change the Emoji Panel on key press in System Settings?
答:
2赞
Alexander
9/27/2023
#1
我过去常常检测文件夹中哪些文件发生了变化,而我来回更改了设置。果不其然,(“人机界面工具箱”)出现了。fswatch
~/Library/Preferences
~/Library/Preferences/com.apple.HIToolbox.plist
接下来,我看了看它的结构,看到了钥匙,看起来很有前途。我再次在“系统偏好设置”中来回更改设置,同时使用以下命令监视该键的特定更改:AppleFnUsageType
watch -n 1 -d defaults read com.apple.HIToolbox AppleFnUsageType
我看到了以下结果:
0
映射到“不执行任何操作”1
映射到“更改输入源”2
映射到“显示表情符号和符号”3
映射到“开始听写(按 🌐︎ 两次)”
因此,您可以通过终端设置此设置:
defaults write com.apple.HIToolbox AppleFnUsageType -int 0
你可以生成一个进程来从你的 Swift 程序运行,但这很笨拙,需要关闭 App 沙盒。理想情况下,我们只调用 API,但这不允许我们更改域中的值(它只允许你更改自己应用的域或全局域的值)。defaults
UserDefaults
com.apple.HIToolbox
我们可以降低到较低的级别,并使用 CoreFoundation 的 CFPreferencesSetValue
,它可以让您做到这一点。它仍然相当简单:
import Foundation
enum FnKeyUsageType: Int {
case doNothing = 0
case changeInputSource = 1
case showEmojiAndSymbols = 2
case startDictation = 3
}
CFPreferencesSetValue(
"AppleFnUsageType" as CFString,
FnKeyUsageType.doNothing.rawValue as CFNumber,
"com.apple.HIToolbox" as CFString,
kCFPreferencesCurrentUser,
kCFPreferencesAnyHost
)
评论
0赞
bibble triple
9/27/2023
在解决这个问题方面做得很好,谢谢你的帮助
0赞
Alexander
9/27/2023
很高兴听到!如果此答案解决了您的问题,则应单击右侧的复选标记将其标记为已接受。
0赞
bibble triple
9/27/2023
我遇到的问题是,即使它改变了它,它也不会反映在系统中,例如,如果我把它放在表情符号上,我让它切换到什么都不做,它会说什么也不做,但当我按下表情符号(地球)键时,它仍然会在表情符号上
0赞
Alexander
9/27/2023
“系统偏好设置”不会侦听对底层 UserDefaults 的更改,因此其 UI 可能会像这样过时。我不认为他们希望其他事情能改变他们,或者如果他们这样做了,他们可能会认为这是一个足够小众的用例,不值得担心。如果这对您来说确实是个问题,那么您可以通过编写系统偏好设置 UI 脚本来更改设置,尽管这显然要笨拙得多。
0赞
bibble triple
9/27/2023
这是有道理的,谢谢那个新南威尔士州
评论