将自定义键盘布局设置为系统默认设置,即使是登录屏幕也是如此


37

我是否可以将自定义键盘布局(默认情况下不包含在OS X中)设置为系统默认设置(即使是登录屏幕也是如此)?


(同时,您可能无法接受答案,可能会使读者感到困惑)
o0'。

1
@Lohoris:完成!
Mathias Bynens

请更新问题b删除更新说明,最佳答案现在也适用于最新的osx版本
Bert Goethals 2014年

Answers:


13

这在OSX 10.9 Mavericks上有效,并且使用我用Ukulele创建的键盘布局。假设您已经在系统中安装了布局,请登录到您的帐户并激活您的自定义键盘布局。

打开一个终端并运行以下命令:

cp /Library/Preferences/com.apple.HIToolbox.plist /tmp/

如果您打算使用文本编辑器(例如TextWrangler)代替XCode(具有专门的图形化plist编辑器)进行此更改,请运行

plutil -convert xml1 /tmp/com.apple.HIToolbox.plist

现在,/tmp/com.apple.HIToolbox.plist在文本编辑器或XCode中打开。

在整个文件中,您会发现多次提到一个KeyboardLayout ID键,后跟一个整数,KeyboardLayout Name然后是一个字符串。将这些字符串更改为自定义键盘布局的名称,并将id整数更改为布局的ID(查找正确值的最简单方法是与文件中的用户设置进行比较~/Library/Preferences/com.apple.HIToolbox.plist

此外,还AppleCurrentKeyboardLayoutInputSourceID必须相应地更改键的值(可能更改为org.unknown.keylayout.NameOfYourLayout)。同样,您可以在本地首选项文件中找到该值。

完成这些更改后,保存文件并返回到终端。为了安全起见,您可以创建原始com.apple.HIToolbox.plist文件的副本,以防万一您出错并需要回滚。例如,要将副本保存在“ 文档”文件夹中:

sudo cp /Library/Preferences/com.apple.HIToolbox.plist ~/Documents

然后使用以下安装您的更改:

sudo sh -c 'cat /tmp/com.apple.HIToolbox.plist > /Library/Preferences/com.apple.HIToolbox.plist'

plutil如果您早先这样做,则无需将文件转换为文本格式。)

退出终端,然后重新启动计算机(注销还不够:不会重新读取该文件)。重新启动后,您应该在登录屏幕中拥有键盘布局。

注:这是可能的,它本来是足以将文件复制com.apple.HIToolbox.plist~/Library/Preferences//Library/Preferences/,但在我的情况下,它有更多的项目,所以我决定发挥它的安全,只是修改现有的文件。


立即尝试此操作,因为其他答案不起作用。FWIW,这是com.apple.HIToolbox.plist更改后我的文件的样子:gist.github.com/anonymous/d18bae208b5cf12e48be
Mathias Bynens

完美地工作,谢谢!很抱歉,我不能再给您赏金,所以我将设置一个新的赏金以奖励您这个答案。
Mathias Bynens

很高兴它有所帮助。感谢您的额外奖励!:-)
Eric J. Francois

像魅力一样工作。大提示!
ƘɌỈSƬƠƑ

这是太棒了。我的比利时键盘默认值太长了,真让我感到困惑!我希望我能给你多张票!
Bert Goethals 2014年

12

我发现了这个古老的MacWorld技巧,它建议再次运行设置助手:

sudo /System/Library/CoreServices/Setup Assistant.app\
/Contents/MacOS/Setup Assistant

刚开始,我认为Lion不支持此功能,因为运行此命令似乎没有任何效果。仅在发布此问题后,我才注意到命令中有错别字。需要正确地转义空格字符,或者需要引用二进制文件的位置。因此,我链接的提示不起作用。

这是正确的命令:

sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

另外,这也可以工作:

sudo /System/Library/CoreServices/Setup\ Assistant.app/Contents/MacOS/Setup\ Assistant

我链接到的页面上没有提到的另一个陷阱:自定义键盘布局需要安装在/Library/Keyboard Layouts/(即cd /Library/Keyboard\ Layouts)中,而不是要安装~/Library/Keyboard Layouts在“安装助手”的键盘布局选择屏幕中。


更新: 从OS X 10.8开始,您需要运行一个额外的命令(即,首先删除文件):

sudo rm /var/db/.AppleSetupDone; sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

另外,您必须创建一个新的用户帐户才能完成设置助手-但请放心,您可以在以后删除该新帐户。

在最新的OS X 10.8版本中,此技巧不再起作用。


更新: 这是我了解的有关OS X上自定义键盘布局的所有信息


我遵循了Mountain Lion 10.8的步骤,并运行了设置助手增益,将我的默认键盘布局设置为Dvorak,并尝试登录,但没有成功。在重新启动时,它仍使用qwerty作为登录屏幕。
AMS

是的,自OS X 10.8起,它似乎不再起作用。:(
Mathias Bynens

3

我正在使用在OS X 10.8.5中Ukelele 创建的自定义键盘布局。我通过以下步骤更改了登录屏幕的键盘布局:

  1. 开放Users & GroupsSystem Preferences
  2. Login Options从左侧面板的底部选择
  3. 校验 Show Input menu in login window
  4. 转到登录屏幕
  5. Other input sources从右上方的输入菜单中选择首选布局
  6. 返回并取消选中,Show Input menu in login window以防止进一步更改登录布局

我发现此方法比编辑一些随机.plist文件并在终端上运行命令要容易得多。

此方法可能需要管理访问权限,因为您可能需要通过单击底部的锁定图标来解锁上述步骤3中的右窗格。

更新:可悲的是,这似乎在OS X 10.9上不起作用。


我已授予您赏金,因为这似乎是最好的答案,但实际上似乎并不起作用-它总是回到默认的美国键盘布局。为了测试这一点,我使用了一种键盘布局,该布局允许我通过一次击键输入三个符号,因此我可以看到在密码输入框中出现了多少个被屏蔽的字符。应用了您提到的步骤之后,我一次只能输入一个符号(根据美国键盘)。
Mathias Bynens

您能否描述OS X 10.9无法使用的功能?使用Workman布局(可在此处找到:workman.deekayen.net)时,我能够成功地遵循这些步骤(我没有执行步骤6 )。但是我的问题是,如果选择了该布局并锁定了计算机,则输入菜单将不会显示在登录屏幕上,但是如果我具有Dvorak或OS X本身支持的其他功能,那就很好了(即,我看到了菜单)并且可以根据需要切换回美国)
Timothée鲍彻

@TimothéeBoucher我之前的评论描述了哪里出了问题以及如何测试。
Mathias Bynens 2013年

2

安装macOS Sierra之后,每次登录我的帐户后,我的自定义布局都会重新初始化为默认设置。

苹果添加了新的键盘,并且ID与我使用的键盘冲突。

要验证是否有此问题运行:

sudo touch /库/键盘\布局/

输出:

Keyboard Layouts: duplicate keyboard layout identifier 5000.
Keyboard Layouts: keyboard layout identifier 5000 has been replaced with 16383.

输出声称它已修复某些问题,但实际上并未执行任何操作。我仍然必须自己编辑布局,并且它像以前一样开始工作。


也改变了我的习惯。可悲的是,修复.plist文件中的ID对我没有帮助。
帕维尔·古尔科夫

@PavelGurkov之后是否在文件夹上运行了sudo touch命令?操作系统需要考虑它。
jrobichaud 2016年

是的,做到了,根本没有任何输出。尽我所能检查了一切,但仍然...在El Capitan上完美工作,在Sierra上没有运气。
Pavel Gurkov '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.