OS X で再ログインせずに (Ukelele) .keylayout に変更を適用する

OS X で再ログインせずに (Ukelele) .keylayout に変更を適用する

ウクレレの開発者(ジョン・ブラウニー)のウェブサイト:

次に、アクティブなキーボード レイアウトがある場合は、それを変更し (Ukelele または他の方法で)、保存してからログアウトして再度ログインすると、システムは新しいバージョンをロードしません。システムに変更を認識させるには、キーボード レイアウトを含むフォルダーを変更する必要があります。最も簡単な方法は、キーボード レイアウト ファイルをデスクトップにドラッグしてから、キーボード レイアウト フォルダーに戻し、ログアウトして再度ログインすることです。再起動すると、常に最新バージョンのキーボード レイアウトがロードされます。

もっとまともな方法はありますか?


したがって、おそらくそうではないようです。ただし、Applescript を使用して部分的に自動化する方法は次のとおりです。


do shell script "touch '/Library/Keyboard Layouts/'"
tell application "System Events"
    try
        tell process "Ukelele"
            click menu bar 1's menu bar item "File"'s menu 1's menu item "Save"
        end tell
    end try
    log out
end tell

答え1

申し訳ありませんが、これよりよい方法はあまりありません。キーボード レイアウトはログイン時にのみスキャンされ、再起動しない場合は、フォルダーの変更日をチェックして、最後のログイン以降に変更されたフォルダーのみをスキャンすることで、システムがプロセスを最適化します。

これを自動化する方法として思いつくのは、関連するフォルダの変更日を変更するスクリプトを作成することくらいです。シェル スクリプトで「touch」を呼び出すとうまくいきます (下記参照)。そうすれば、ファイルをドラッグして入れ替えるよりも簡単な方法で変更することができますが、それでもログアウトしてログインする必要があります。オプション + シフト + コマンド + Q を押す以外に、ログアウトのショートカットは知りません。スクリプト化する方法も見たことがありません。

ライブラリ フォルダー内のキーボード レイアウト フォルダーの変更日を変更するスクリプト:

#!/bin/sh
touch /Library/Keyboard\ Layouts

関連情報