Help us understand the problem. What is going on with this article?

macOS Sierra の日本語入力 JapaneseIM 環境

More than 1 year has passed since last update.

もうそろそろ High Sierra だという中、今更ながらに、Sierra 版に改訂しておこうと思いましたので。

やることにしました。

きっかけと目的

OSX Yosemite になって日本語入力環境が変わったこと切っ掛けでエントリしたのが前回。

以来、OSX El Capitan にて SIP の導入により対象の plist ファイルへのアクセス方法が変わり、さらに macOS Sierra になって plist の格納場所が変わりました。
まず、この変化を吸収しておこうかと思いました。

正直、「意味あるかな」とも思ったのですが、以下の切り口から、あまり目にしない内容かも?、と思ったので残して更新することにしました。

"スペース" だけでなく、他のキャラクタも

ひとつは、同様のテーマで、"スペース" に関するレポートは良く目にするのですが、それ以外のキャラクタについて言及したものはどうも少ないかもな、と思ったこと。

設定は、シェルスクリプトを使って

そしてもうひとつは、その手続きとしてシェルスクリプトを使っている、と言うのも余り見掛けないな、と思ったこと。

「ファイルを開いて、○行目を探して~」という方法より、より楽に作業を行う事が出来るのではないかな、と考えています。1

結果

これを走らせるには、リカバリモードで csrutil disable で rootless モードを無効にしておく必要があります。
具体的な手続きについてはこちらにて触れられておりますのでご参照ください。

こんなかんじ.2;

japaneseim.sh
#!/bin/bash -eu


# PlistBuddy
pb=/usr/libexec/PlistBuddy

#  KeySetting_Default.plist
plistis=/System/Library/Input\ Methods/JapaneseIM.app/Contents/PlugIns/JapaneseIM.appex/Contents/Resources/KeySetting_Default.plist

function keyCheck {

  val=$("${pb}" -c "Print :keys:${1}:${2}:character" "${plistis}" 2>/dev/null || true)

  if [ "${val}" = "" ]; then
    sudo "${pb}" -c "Add :keys:${1}:${2}:character string ${3}" "${plistis}"
  else
    sudo "${pb}" -c "Set :keys:${1}:${2}:character ${3}" "${plistis}"
  fi
}

# 確認します
while true; do
  printf "スペース,記号を常時,半角入力に設定します.よろしいですか? [y/n]: "
  read res

  case ${res} in
    [Yy]*)
      break ;;
    [Nn]*)
      echo "中止しました."
      exit 1;;
    *)
      echo "正しいキーを入力してください." ;;
  esac
done


# plist バックアップ
[ ! -e ${HOME}/temp ] && mkdir ${HOME}/temp
sudo cp -f "${plistis}" "${HOME}/temp/KeySetting_Default.plist~$(date '+%Y%m%d%H%M')"

echo "以下のキャラクタを,常時,半角入力に設定しました.;"
echo "  スペース '␣'"
sudo "${pb}" -c "Set :keys:before_typing:\'' \'':character ' '" "${plistis}"  #     space
# echo "  音引き 'ー'"
#sudo "${pb}" -c "Set :keys:*:\''-\'':character '-'" "${plistis}"             # -   minus
# echo "  鉤括弧 '「」'"
#sudo "${pb}" -c "Set :keys:*:\''[\'':character '['" "${plistis}"             # 「」 bracket
#sudo "${pb}" -c "Set :keys:*:\'']\'':character ']'" "${plistis}"
echo "  縦線(パイプ) '|'"
sudo "${pb}" -c "Set :keys:*:\''|\'':character '|'" "${plistis}"              # |   vertical bar
echo "  感嘆符 '!'"
sudo "${pb}" -c "Set :keys:*:\''\!\'':character '\!'" "${plistis}"            # !   exclamation
echo "  ダブルクォーテーション '\"'"
sudo "${pb}" -c "Set :keys:*:\''"'\"'"\'':character '"'\"'"'" "${plistis}"    # ”   double quotation
echo "  シャープ '#'"
sudo "${pb}" -c "Set :keys:*:\''#\'':character '#'" "${plistis}"              # #   sharp
echo "  ドル記号 '$'"
sudo "${pb}" -c "Set :keys:*:\''$\'':character '$'" "${plistis}"              # $   dollar
echo "  パーセント '%'"
sudo "${pb}" -c "Set :keys:*:\''%\'':character '%'" "${plistis}"              # %   percent
echo "  アンパサンド '&'"
sudo "${pb}" -c "Set :keys:*:\''&\'':character '&'" "${plistis}"              # &   ampersand
echo "  シングルクォーテーション '''"
sudo "${pb}" -c "Set :keys:*:\''\'\'':character '\''" "${plistis}"            # ’   apostrophe(single quotation)
echo "  丸括弧 '()'"
sudo "${pb}" -c "Set :keys:*:\''(\'':character '('" "${plistis}"              # () parentheses
sudo "${pb}" -c "Set :keys:*:\'')\'':character ')'" "${plistis}"
echo "  アスタリスク '*'"
sudo "${pb}" -c "Set :keys:*:\''*\'':character '*'" "${plistis}"              # *   asterisk
echo "  プラス '+'"
sudo "${pb}" -c "Set :keys:*:\''+\'':character '+'" "${plistis}"              # +   plus
echo "  コロン ':'"
sudo "${pb}" -c "Set :keys:*:\''\:\'':character ':'" "${plistis}"             # :   colon
echo "  セミコロン ';'"
sudo "${pb}" -c "Set :keys:*:\'';\'':character ';'" "${plistis}"              # ;   semicolon
echo "  山括弧(大なり,小なり) '<>'"
sudo "${pb}" -c "Set :keys:*:\''<\'':character '<'" "${plistis}"              # <> angle bracket
sudo "${pb}" -c "Set :keys:*:\''>\'':character '>'" "${plistis}"
echo "  イコール '='"
sudo "${pb}" -c "Set :keys:*:\''=\'':character '='" "${plistis}"              # =   equals
echo "  クエスチョン '?'"
sudo "${pb}" -c "Set :keys:*:\''?\'':character '?'" "${plistis}"              # ?   question
echo "  アットマーク '@'"
sudo "${pb}" -c "Set :keys:*:\''@\'':character '@'" "${plistis}"              # @   at
echo "  サーカムフレックス '^'"
sudo "${pb}" -c "Set :keys:*:\''^\'':character '^'" "${plistis}"              # ^   caret
echo "  アンダースコア '_'"
sudo "${pb}" -c "Set :keys:*:\''_\'':character '_'" "${plistis}"              # _   underscore
echo "  バッククォート '`'"
sudo "${pb}" -c "Set :keys:*:\''\`\'':character '\`'" "${plistis}"            # ‘   back quote
echo "  スラッシュ '/'"
keyCheck "before_typing" "\''/\''" "'/'"                                      # / slash (solidus)
keyCheck "typing" "\''/\''" "'/'"
echo "  バックスラッシュ '\'"
keyCheck "before_typing" "\''\\\\\''" "'\\\'"                                 # \ backslash (reverse solidus)
keyCheck "typing" "\''\\\\\''" "'\\\'"


sudo killall -HUP JapaneseIM

echo "*** おわり ***"

ハイフン - は、"音引き" として、そしてブラケット [] も "鍵括弧" 「」 の方が都合よいので、そのままにしてます。
個人的な好みです。

おしまいです。


  1. 編集した plist を gist に置いておく、と言うのもありますがw 

  2. もしコード的におかしい,作法的にイカレてる,とかありましたら,是非とも御指南をば. 

woowee
プログラマーではありません。が、お邪魔します。
http://baqamore.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした