osx yosemite の入力環境が色々とかったるかったので、アゲイン。で、今度は全部やっつけてやるよ。
世間は osx 10.11 el capitan とか言っているのに...ねw
以前のこんなエントリーで、;
分からなかったのが、ハイフン(マイナス)とダブルクォーテーション。
これってどうしたら良いのでしょう。どなたか...
このハイフンとダブルクォーテーション、加えてその時盲点だったスラッシュ、バックスラッシュについても分かったので改めて。
こんな風にしてみました。とりあえず必要箇所のみ。;
pb=/usr/libexec/PlistBuddy plistis=/System/Library/Input\ Methods/JapaneseIM.app/Contents/Resources/KeySetting_Default.plist # - minus sudo "${pb}" -c "Set :keys:*:\''-\'':character '-'" "${plistis}" # ” double quotation sudo "${pb}" -c "Set :keys:*:\''"'\"'"\'':character '"'\"'"'" "${plistis}" # / slash (solidus) val=$("${pb}" -c "Print :keys:before_typing:\''/\'':character" "${plistis}" 2>/dev/null || true) if [ "${val}" = "" ]; then sudo "${pb}" -c "Add :keys:before_typing:\''/\'':character string '/'" "${plistis}" else sudo "${pb}" -c "Set :keys:before_typing:\''/\'':character '/'" "${plistis}" fi val=$("${pb}" -c "Print :keys:typing:\''/\'':character" "${plistis}" 2>/dev/null || true) if [ "${val}" = "" ]; then sudo "${pb}" -c "Add :keys:typing:\''/\'':character string '/'" "${plistis}" else sudo "${pb}" -c "Set :keys:typing:\''/\'':character '/'" "${plistis}" fi # \ backslash (reverse solidus) val=$("${pb}" -c "Print :keys:before_typing:\''\\\\\'':character" "${plistis}" 2>/dev/null || true) if [ "${val}" = "" ]; then sudo "${pb}" -c "Add :keys:before_typing:\''\\\\\'':character string '\\\'" "${plistis}" else sudo "${pb}" -c "Set :keys:before_typing:\''\\\\\'':character '\\\'" "${plistis}" fi val=$("${pb}" -c "Print :keys:typing:\''\\\\\'':character" "${plistis}" 2>/dev/null || true) if [ "${val}" = "" ]; then sudo "${pb}" -c "Add :keys:typing:\''\\\\\'':character string '\\\'" "${plistis}" else sudo "${pb}" -c "Set :keys:typing:\''\\\\\'':character '\\\'" "${plistis}" fi sudo killall -HUP JapaneseIM echo "now, its done!"
にしても、このエスケープさ、どうにかなんないもんかね。めぐせ。
先日「google chrome の動作が嫌がらせを凌駕したレベルで遅くなって..」という話をしましたが、そのいちいち強いられる "待て" に耐え切れず、結局 os を再インストールしたのでした。
そんな中での話。
いつもの通り shellscript を走らせてマシンの前に戻ってきたら、途中でスクリプトが止まってしまっている模様。
: (略) osx.sh==> Input: 記号はシングルバイトでの入力にする. [Y/n] Set: Entry, ":keys:before_typing:'/':character", Does Not Exist
選りによってまたこいつ。しかもスラッシュ /
とかバックスラッシュ \
とかって orz
あー...かったり。
でもな、と。
osx 10.11 el capitan プレビューのレビューがチラホラ見られるような感じにまで時は流れているわけで。いい加減ここら辺りで決着をつけておいた方いいか、と自らに鞭を打つ。...なぜか、そう思った。*1
と言う事でご覧の通り、スラッシュとバックスラッシュは元々値として存在しない様子。
確かにそうだったこと思い出し*2、なので、それぞれ値の有無により 'Add' か 'Set' かを決めれば良い、と。
アイディアはこの辺りを見て、まあイケるかな、と思った。
» bash - plistbuddy - How to intercept errors (Key does not exist) - Stack Overflow
一応、上手く行く模様。
最終的にこうしました
記号類の常時半角入力の部分に関しては、こんな感じ。
前述のスラッシュ辺りでやっている値の存在チェック結果による制御はやはり冗長なので、オリジナルの関数を用意してまかなうことに。内容は上述のまんま。ちなみに 1 行目の ask
ってのはシェルスクリプト内で定義しているオリジナルの関数。;
if ask 'Input: 記号はシングルバイトでの入力にする.' Y; then sudo cp -f "${plistis}" "$HOME/KeySetting_Default.plist.org" sudo "${pb}" -c "Set :keys:before_typing:\'' \'':character ' '" "${plistis}" # space sudo "${pb}" -c "Set :keys:*:\''-\'':character '-'" "${plistis}" # - minus sudo "${pb}" -c "Set :keys:*:\''|\'':character '|'" "${plistis}" # | vertical bar sudo "${pb}" -c "Set :keys:*:\''\!\'':character '\!'" "${plistis}" # ! exclamation sudo "${pb}" -c "Set :keys:*:\''"'\"'"\'':character '"'\"'"'" "${plistis}" # ” double quotation sudo "${pb}" -c "Set :keys:*:\''#\'':character '#'" "${plistis}" # # sharp sudo "${pb}" -c "Set :keys:*:\''$\'':character '$'" "${plistis}" # $ dollar sudo "${pb}" -c "Set :keys:*:\''%\'':character '%'" "${plistis}" # % percent sudo "${pb}" -c "Set :keys:*:\''&\'':character '&'" "${plistis}" # & ampersand sudo "${pb}" -c "Set :keys:*:\''\'\'':character '\''" "${plistis}" # ’ apostrophe(single quotation) sudo "${pb}" -c "Set :keys:*:\''(\'':character '('" "${plistis}" # () parentheses sudo "${pb}" -c "Set :keys:*:\'')\'':character ')'" "${plistis}" sudo "${pb}" -c "Set :keys:*:\''*\'':character '*'" "${plistis}" # * asterisk sudo "${pb}" -c "Set :keys:*:\''+\'':character '+'" "${plistis}" # + plus sudo "${pb}" -c "Set :keys:*:\''\:\'':character ':'" "${plistis}" # : colon sudo "${pb}" -c "Set :keys:*:\'';\'':character ';'" "${plistis}" # ; semicolon sudo "${pb}" -c "Set :keys:*:\''<\'':character '<'" "${plistis}" # <> angle bracket sudo "${pb}" -c "Set :keys:*:\''>\'':character '>'" "${plistis}" sudo "${pb}" -c "Set :keys:*:\''=\'':character '='" "${plistis}" # = equals sudo "${pb}" -c "Set :keys:*:\''?\'':character '?'" "${plistis}" # ? question sudo "${pb}" -c "Set :keys:*:\''@\'':character '@'" "${plistis}" # @ at sudo "${pb}" -c "Set :keys:*:\''^\'':character '^'" "${plistis}" # ^ caret sudo "${pb}" -c "Set :keys:*:\''_\'':character '_'" "${plistis}" # _ underscore sudo "${pb}" -c "Set :keys:*:\''\`\'':character '\`'" "${plistis}" # ‘ back quote keyCharExistence "before_typing" "\''/\''" "'/'" # / slash (solidus) keyCharExistence "typing" "\''/\''" "'/'" keyCharExistence "before_typing" "\''\\\\\''" "'\\\'" # \ backslash (reverse solidus) keyCharExistence "typing" "\''\\\\\''" "'/'" fi
マイナス -
とダブルクォート ”
については、賢い方がいらっしゃって助けられました。
そしてエントリーでコメントを入れてくださった匿名の方。
いずれも感謝です。ありがとうございます。
でもね
何か osx 10.11 el capitan では日本語の入力周りの振る舞いが変わるようで、今後この営みは全く役に立たないものになるかもしれませんwww
増えた語彙と改良された言語エンジンを活用して、あなたがひらがなを入力するのとほぼ同時に、自動的に変換していきます。
《ライブ変換》 とか言うらしいですよ。
本当に使えるのかなぁ。
これまでの振る舞いを見るに、そう期待できるようなものにはならないような気もするんだけどなぁ、と言うのが正直なところ(笑
「どうせ..」に結果「..あぁ、やっぱりな」と言う、"いつもの感じ" でさ。
にしても、アップルって "劇的" とか "飛躍的" とかこの手の表現好きでだよねー。
何かスマートな感じなくって、何だかな..って思うのですが。
はい、おしまいです。