web-dev-qa-db-ja.com

Mac OSXのコマンドラインからキーを再マップする

OSXのセットアップを複製するスクリプトを作成しようとしています。特に、矢印キーをに再マップしたい CMDHJKL

テクニックはこれに似ているようです Linuxソリューション 変更するキーファイルが/usr/X11/share/X11/xkb/symbols/usにあることを除いて。ただし、実際には期待どおりに機能しておらず、オプションキーをマッピングしているようです。

OS Xのコマンドラインからキーを再マップするにはどうすればよいですか?

7
Maros

システム環境設定のようなアプリケーション固有のキーボードショートカットは、対応するアプリケーションの設定ファイルの/Users/username/Library/Preferences/の最上位のNSUserKeyEquivalentsキーに保存されます。

これらのファイルは、コマンドラインの/usr/libexec/PlistBuddyおよびdefaultsプログラムを使用して読み書きできます。

$ defaults read com.Apple.Automator NSUserKeyEquivalents
{
    "Hide Library" = "@$l";
    "Show Library" = "@$l";
}
$ defaults write com.Apple.Terminal NSUserKeyEquivalents -dict-add "About Terminal" '^@$a'

記号とその意味:

  • @は Command
  • $は Shift
  • ^は Control
  • ~は Option

さらに、これらのファイルを他のマシンにコピーするだけで、ユーザーの好みを持ち運ぶことができます。

3
Daniel Beck

KeyRemap4MacBook を使用すると、これを private.xml として保存できます。

<?xml version="1.0"?>
<root>
<item>
<name>test</name>
<identifier>private.test</identifier>
<autogen>--KeyToKey-- KeyCode::H, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_LEFT</autogen>
<autogen>--KeyToKey-- KeyCode::H, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::J, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_DOWN</autogen>
<autogen>--KeyToKey-- KeyCode::J, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_DOWN, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::K, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_UP</autogen>
<autogen>--KeyToKey-- KeyCode::K, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L</autogen>
<autogen>--KeyToKey-- KeyCode::L, VK_COMMAND | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT</autogen>
<autogen>--KeyToKey-- KeyCode::L, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
</root>

| ModifierFlag::NONEを省略すると、たとえば⌥⌘Hが←に変わります。

キーコード定数 および 事前定義された設定 のソースを参照してください。

構成を完全に自動化したい場合は、/Library/org.pqrs/KeyRemap4MacBook/app/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli enable private.testで設定を有効にできます。

0
Lri