勝手に独り読書会 - その08 (さいご)

mathiasbynens さんの .osx を一周.
やっとここまで来ました.

ちなみに,7 度に分けて読みながらつけてきたメモ,ひとつにマトメておいた,っと.

で,さて.
ここからが最もやりたかったこと.

この mathiasbynens さん著の .osx をベースに
自分にとって必要なアイテム設定は何なのか,というものを考え,整理をしていこー.かな.と.思います.

随分前のエントリーになりますが,こんなエントリーを書きました. ;

mac (os) を新調した時に,最初にやっていること - ばかもりだし

マシン,あるいは os を新しくした状況下でやる,設定作業をメモしたものなのですが,
ここからそう大きく変わってはいなかったりします.

mathiasbynens さんの .osx の内容に一通り目を通したうえで,
さらに自分的に押さえておきたいなと思った設定は大きく 2 つ.

ひとつは,キーボード操作まわり.
そしてもうひとつは,文字の入力に関するもの.
この 2 つかと.

あとは "その他" という感じで,3 つの点について検討していってみたいと思います.

キー操作系

キーの入れ替え,設定,そしてショートカットに関するものです.
箇条書きにすると以下のアイテムになりました.

  1. [Caps Lock] キーを [Control] にする.
  2. ファンクションキーから,特殊機能の制御を切り離す.
  3. 各コントロールへのすべてのアクセスを,キーボードで制御できるようにする.
  4. ショートカット(0) Dashboard のショートカットを剥がす.
  5. ショートカット(1) Mission Control に [F12] を割り当てる.
  6. ショートカット(2) アプリケーションウィンドウ に [F11] を割り当てる.
  7. ショートカット(3) デスクトップ に [F10] を割り当てる.
  8. ショートカット(4) メニューへのアクセス に [F2] を割り当てる.
  9. ショートカット(5) ツールバーへのアクセス に [F3] を割り当てる.
  10. ショートカット(6) サイドバーの表示/非表示 に [Control]+[Command]+2 を割り当てる.
  11. ショートカット(7) マウスのショートカットをすべて無効にする.

こうしてみました.

# keyboards id
keyboardid=$(ioreg -n IOHIDKeyboard -r | grep -E 'VendorID"|ProductID' | awk '{ print $4 }' | paste -s -d'-\n' -)'-0'

# 1. [システム環境設定],[キーボード] の cmd[修飾キー] - dmn[Caps Lock キー] = [^ Control]
defaults -currentHost delete -g com.apple.keyboard.modifiermapping.${keyboardid}
defaults -currentHost add -g com.apple.keyboard.modifiermapping.${keyboardid} -array '<dict><key>HIDKeyboardModifierMappingDst</key></dict><integer>2</integer> <key>HIDKeyboardModifierMappingSrc</key><key>0</key>'

# 2. [システム環境設定],[キーボード] の pnl[キーボード] > chb[F1、F2 などのすべてのキーを標準ファンクションキーとして使用] = "オン"
defaults write -g com.apple.keyboard.fnState -bool false

# 3. [システム環境設定],[キーボード] の pnl[キーボードショートカット] > [フルキーボードアクセス : Tab キーを押してウィンドウやダイアログ内の操作対象を移動する機能の適用範囲] = rbt[すべてのコントロール]
defaults write -g AppleKeyboardUIMode -int 3

# 4. [システム環境設定],[キーボード] の list[Mission Control] > chb[Dashboard を表示] = "オフ"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 62 "<dict><key>enabled</key><false/></dict>"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 63 "<dict><key>enabled</key><false/></dict>"

# 5. [システム環境設定],[キーボード] の list[Mission Control] > chb[Mission Control] = "オン",[F12]
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 32 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>111</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 34 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>111</integer><integer>131072</integer></array><key>type</key><string>standard</string></dict></dict>"

# 6. [システム環境設定],[キーボード] の list[Mission Control] > chb[アプリケーションウィンドウ] = "オン",[F11]
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 33 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>103</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 35 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>103</integer><integer>131072</integer></array><key>type</key><string>standard</string></dict></dict>"

# 7. [システム環境設定],[キーボード] の list[Mission Control] > chb[デスクトップを表示] = "オン",[F10]
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 36 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>109</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 37 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>109</integer><integer>131072</integer></array><key>type</key><string>standard</string></dict></dict>"

# 8. [システム環境設定],[キーボード] の list[キーボードと文字入力] > chb[メニューバーを操作対象にする] = "オン",[F2]
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 7 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>120</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"

# 9. [システム環境設定],[キーボード] の list[キーボードと文字入力] > chb[ウィンドウのツールバーを操作対象にする] = "オン",[F3]
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 10 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>65535</integer><integer>99</integer><integer>0</integer></array><key>type</key><string>standard</string></dict></dict>"

# 11. [システム環境設定],[Mission Control] の [キーボードとマウスのショートカット] = "すべて無効"
defaults write com.apple.dock wvous-tl-corner -int 0
defaults write com.apple.dock wvous-tl-modifier -int 0
defaults write com.apple.dock wvous-tr-corner -int 0
defaults write com.apple.dock wvous-tr-modifier -int 0
defaults write com.apple.dock wvous-bl-corner -int 0
defaults write com.apple.dock wvous-bl-modifier -int 0
defaults write com.apple.dock wvous-br-corner -int 0
defaults write com.apple.dock wvous-br-modifier -int 0

と,いったところになるのでしょうが.
どーなんでしょう...

実は,これ,ひとつひとつそれぞれに色々と結構はまったんですよ(笑 その分,色んなことが勉強になった.

躓いたとこ,知ったこと,等の詳細については,備忘録としても残しておきたいので,もうちょっと整理した上で別エントリーで改めて.と考えてます. ここでは,とりあえずポイントだけ.

文字入力系

こちらの作業アイテムは以下です.;

  1. 数字は常に半角での入力とする.
  2. 記号への自動置換機能を切る.
  3. 自動スペルチェック機能を切る.
  4. 入力ソースの切り替えは,"英-ひらがな" のみにする.
  5. スクロールパッドのスクロール方向を "ナチュラル" ではなくする.

そして.

# 1. [ことえり環境設定],[文字入力] シート > [数字を全角で入力]
/usr/libexec/Plistbuddy -c "set :zhnm 0"  ~/Library/Preferences/com.apple.inputmethod.Kotoeri.plist

# 2. [システム環境設定],[言語とテキスト] の sht[テキスト] > chb[記号とテキストの置換を使用] -> "オフ"
/usr/libexec/Plistbuddy -c "set :NSUserReplacementItemsEnabled bool false" ~/Library/Preferences/.GlobalPreferences.plist
/usr/libexec/Plistbuddy -c "set :WebAutomaticTextReplacementEnabled bool false" ~/Library/Preferences/.GlobalPreferences.plist

# 3. [システム環境設定],[言語とテキスト] の sht[テキスト] > chb[記号とテキストの置換を使用] -> "オフ"
/usr/libexec/Plistbuddy -c "set :NSAutomaticSpellingCorrectionEnabled bool false" ~/Library/Preferences/.GlobalPreferences.plist
/usr/libexec/Plistbuddy -c "set :WebAutomaticSpellingCorrectionEnabled bool false" ~/Library/Preferences/.GlobalPreferences.plist

# 4. [システム環境設定],[言語とテキスト] の sht[入力ソース] > テーブルビュー内のアイテム,[ことえり] > chb[ひらがな] -> "オン"
defaults -currentHost write 'com.apple.HIToolbox' 'AppleCurrentKeyboardLayoutInputSourceID' -string "com.apple.keylayout.US"

defaults -currentHost write 'com.apple.HIToolbox' 'AppleEnabledInputSources' -array \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Japanese"; InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Japanese.placename";InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Roman";InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Japanese.firstname";InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Japanese.lastname";InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";InputSourceKind = "Keyboard Input Method";}'

defaults -currentHost write 'com.apple.HIToolbox' 'AppleInputSourceHistory' -array \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Roman";InputSourceKind = "Input Mode";}' \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Japanese";InputSourceKind = "Input Mode";}'

defaults -currentHost write 'com.apple.HIToolbox' 'AppleSelectedInputSources' -array \
        '{"Bundle ID" = "com.apple.inputmethod.Kotoeri";"Input Mode" = "com.apple.inputmethod.Roman";InputSourceKind = "Input Mode";}'

# 5. [システム環境設定],[トラックパッド] の [スクロールとズーム] > chb[スクロールの方向 : ナチュラル] = "オフ"
defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false

こんなところ?

以下同様に,メモ.

  • 1 のような,ことえり系のアイテムの plist は ~/Library/Preferences/com.apple.inputmethod.Kotoeri.plist に.
    • ドメインは 'com.apple.inputmethod.Kotoeri'.なので...
    • 確認は,defaults read com.apple.inputmethod.Kotoeri
    • .GlobalPreferences.plist ではなく,ことえり Kotoeri の設定なので,オプション "NSGlobalDomain (-g)" は不要.
  • 2,3 で対象となる plist は ~/Library/Preferences/.GlobalPreferences.plist.
    • ドメインは "Apple Global Domain".つまりそれは "NSGlobalDomain".なので...
    • 確認は,defaults read -g*3
    • plist ファイルは,.GlobalPreferences.plist ということで,オプション "NSGlobalDomain (-g)" 必要.
    • 型は boolean.
  • 4 のターゲット plist は ~/Library/Preferences/ByHost/com.apple.HIToolbox.$COMPUTER_UUID.plist .
    • ドメインは "com.apple.HIToolbox".
    • 確認は,defaults -currentHost com.apple.HIToolbox
    • ByHost 内で UUID とか必要になる系なんで,オプション "-currentHost" が必要.ところがこのアイテム(key) がある plist は ".GlobalPreferences.plist" ではなく,"com.apple.HIToolbox.$COMPUTER_UUID.plist" なので,"NSGlobalDomain (-g)" は要らない.
    • value の型はみんな string だった.なので,xml スタイルを使う必要ないと考えこうした.
    • 設定アイテムはすべて必要かどうか分からないが,念のため,設定後あったすべてのアイテムを記載しておいた.
      • デフォルトの状態だと,設定アイテムは,'AppleCurrentKeyboardLayoutInputSourceID' と 'AppleInputSourceHistory',そして 'AppleSelectedInputSources' の 3 つ.
      • 設定変更,と言ってもカタナカのチェックボックスを外すだけなのだけど,した後に,項目の多い 'AppleEnabledInputSources' がスバっと入ってくる.
  • 1-4 の作業で参考にしたサイト.案の定,あんまりなかったのですが... ;
  • UUID やキーボードなどのデバイスIDを取得するには,ioreg コマンド.
  • やっぱり,array や dict を扱う場合は,plistbuddy より defaults の方が楽かも?

misc

そしてその他枠.

  1. メニューバーのクロックのフォーマットを "d hh:mm AM/FM" にする.
defaults write -g AppleLocale -string "en_US_POSIX@currency=JPY"

defaults write -g AppleICUTimeFormatStrings -dict-add 1 "hh:mm a" 2 "hh:mm:ss a" 3 "hh:mm:ss a z" 4 "hh:mm:ss a zzzz"
defaults write -g AppleICUDateFormatStrings -dict-add 1 "MM/dd/yy" 2 "MM dd, y" 3 "MM dd, y" 4 "EEE, MM dd, y"

defaults write "com.apple.menuextra.clock" '<dict><key>DateFormat</key><string>d EEE h:mm a</string><key>FlashDateSeparators</key><false/><key>IsAnalog</key><false/></dict>'

メニューバーのクロックのフォーマット.

ってこれ,こん時もダメで,あらためてチャレンジしてみたのですが...何なのでしょうね.
前の lion では,システム環境設定からできていたらしいのですが,出来なくなった,と言うのは仕様なん?

なぜ?

やっぱり分からない...
結構イラっとしますね.

誰か知っている人いないなかな...

はい,とゆことで.何か最後の最後に後味悪いけど.
おしまいっ.

*1:"$COMPUTER_UUID" はマシンによりそれぞれ.

*2:"$VendorID-$ProductID-0" は,キーボードデバイスの id でマシンによりそれぞれ.

*3:どばっとくるのに,うんざりな人は grep なり,key を追記するなりで絞り込むと.