SKK日本語入力を使いはじめた(Mac, JIS配列)

周囲の人が皆SKKを使っているので、私も2週間くらい前から使うようになりました。

はじめに私の環境を述べておきましょう:

Macならbrewで簡単にインストールできます。

brew cask install aquaskk
brew cask install karabiner-elements

Karabiner-ElementsはSandS(シフトキーをスペースバーで代用するやつ)のために使います。SandSなしでSKK入力に手を出そうものなら、程なくして小指が粉砕され再起不能になってしまうでしょう……

さて、インストールのあとSandSの設定をすれば一応SKKを使うことができるようになるんですが、そのままだといくつか問題点があるのでAquaSKKとKarabiner-Elementsの設定をいじって直していきます。

問題点と解決方針

  • ¥キーで「\」を入力したいのに「¥」が入力されてしまう。「\」を入力するためにはoption + ¥を押さないといけない

Karabiner-Elementsで¥とoption + ¥を入れ替えます。

  • ターミナルでC-jを押すと改行されてしまう
  • VSCodeでC-jを押すと行が結合されてしまう

AquaSKKの設定をいじってかなキーで日本語モードに移行できるようにします。さらにKarabiner-ElementsでC-jをかなキーに変換してしまうことで、C-jによる副作用がなくなります。

  • VSCode上のターミナルで英数モードに移行するためLを押すとモード移行と同時に「l」が入力されてしまう
  • 半角英数を入力する方法がSKKのASCIIモードとMacの英字モードで2通りあって混乱する。後者からはC-jでSKKに戻れない

私は前者の問題の根本的な解決策を知りません……
その場しのぎですが、英数キーでSKKのASCIIモードに移行できるようにすることで、余計な文字が入力されることなくモードを移行できるようになります。ついでにMacの英字モードに移行しなくなるので後者の問題を解決できます。

AquaSKKの設定で適当なキー(私はshift + C-jにしました)をASCIIモードへの移行に割り当てて、Karabiner-Elementsで英数キーを先ほど設定したキーに変換するようにします。

  • SandSの影響でスペースバーの押下判定がスペースバーを離すタイミングになるので、一部のゲームで遊べなくなる

IMESKKの場合のみSandSが有効になるように設定すると良いです。さらに英数キー長押しでMacの英字モードに移行するように設定すれば、SandSを無効にしたい場面で簡単にモードを移行できます。

AquaSKKの設定

はじめに/Library/Input\ Methods/AquaSKK.app/Contents/Resources/keymap.conf~/Library/Application\ Support/AquaSKK/にコピーする必要があります。

コピーしたらSKK_JMODESwitchToAsciiに対応する行をそれぞれ次のように書き換えます。

SKK_JMODE   ctrl::j||keycode::0x68
SwitchToAscii   l||ctrl::shift::j

Karabiner-Elementsの設定

¥キーの問題に関しては次のURLから設定をインポートすると良いです↓
karabiner-elements-complex_modifications

それ以外は自分で設定ファイルを書いた方が早そうだったので書きました。

{
  "title": "円滑にskkを使うためのやつ",
  "rules": [
    {
      "description": "SandS (ja限定)",
      "manipulators": [
        {
          "from": {
            "key_code": "spacebar",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift"
            }
          ],
          "to_if_alone": [
            {
              "key_code": "spacebar"
            }
          ],
          "type": "basic",
          "conditions": [
            {
              "type": "input_source_if",
              "input_sources": [
                { "language": "ja" }
              ]
            }
          ]
        }
      ]
    },
    {
      "description": "C-jをかなキーに変換",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "j",
            "modifiers": {
              "mandatory": [
                "control"
              ]
            }
          },
          "to": [
            {
              "key_code": "japanese_kana"
            }
          ]
        }
      ]
    },
    {
      "description": "英数キーをCtrl+Shift+Jに変換 長押しで英数 (ja限定)",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "japanese_eisuu",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            {
              "key_code": "j",
              "modifiers": [
                "control", "shift"
              ],
              "repeat": false
            }
          ],
          "to_if_held_down": [
            {
              "key_code": "japanese_eisuu",
              "repeat": false
            }
          ],
          "conditions": [
            {
              "type": "input_source_if",
              "input_sources": [
                { "language": "ja" }
              ]
            }
          ]
        }
      ]
    }
  ]
}

上のJSON~/.config/karabiner/assets/complex_modifications/に適当な名前で保存することで、Karabiner-ElementsのComplex modificationsから参照することができます。

雑記

SKKを使いはじめてから最初の3日間くらいは苦しみましたが、ひたすらTwitterとかやってると慣れますね。もはや入力に不自由を感じることはなくなりました。すでに元の入力方法を忘れつつあります。

ただ、SKKを初める前より入力速度が向上したかというとそうでもないような気がします。鍛錬が足りないということでしょうか。まあなんにせよ以前の入力方法を忘れかけているので、当分SKKを使い続けることになると思います……