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

Karabiner-Elementsだけで"全角/半角"でのIME切り替えを実現する方法など

More than 1 year has passed since last update.

概要

Windowsでは"全角/半角"キーでIMEのON・OFFの切り替えができますが、Karabiner-Elementsを使ってMacでも同じ動作を簡単に実現できます。本記事では、その方法を紹介します。
また、IME関連ということで、左右のコマンドキーを「かな/英数」に割り当てたり、JISキーボードの「変換/無変換」を「かな/英数」に割り当てる方法もあわせて紹介します。

従来の設定方法

  1. Karabiner-Elementsで全角/半角キーをF13とかに変換する
  2. Macの「環境設定 -> キーボード -> ショートカット -> 入力ソース」で、「前の入力ソースを選択」のショートカットキーを1.で変換したキーに設定する

一見して分かりますが、Karabiner-Elementsでの設定に加えて、Macの環境設定も変更する必要がありますので、面倒な作業となります。

Ver.11.1.9以降のKarabiner-Elementsを使う新しい設定方法

Ver.11.1.8で、IMEのON・OFFに応じた処理の切り替えを実現するinput_source_ifという設定項目が追加されています。また、Ver.11.1.9で、IMEの切り替えを指定するselect_input_sourceinput_source_idという設定項目も追加されています。
これを使うと、IMEがOFF(ON)のときに"全角/半角"キーを押したらIMEをON(OFF)にする、という動作がKarabiner-Elementsだけで実現できます。

実際のコード

これらの設定項目を利用して"全角/半角"キーをIME切り替えキーにするコードは以下のとおりです。

{
  "description": "JISキーボードの全角/半角キーをIMEのON/OFF切り替えキーに変換。",
  "manipulators": [
    {
      "type": "basic",
      "from": { "key_code": "grave_accent_and_tilde" },
      "to": [
        {
          "select_input_source": {
            "input_source_id": "^com\\.apple\\.inputmethod\\.Kotoeri\\.Japanese$"
          }
        }
      ],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            { "language": "en" }
          ]
        }
      ]
    },
    {
      "type": "basic",
      "from": { "key_code": "grave_accent_and_tilde" },
      "to": [
        {
          "select_input_source": {
            "input_source_id": "^com\\.apple\\.inputmethod\\.Kotoeri\\.Roman$"
          }
        }
      ],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            { "language": "ja" }
          ]
        }
      ]
    }
  ]
}

これらの設定を使うことで、従来のようなKarabiner-ElementsとMacの環境設定の2本立ての設定を行うことなく、"全角/半角"キーをIME切り替えのキーとして使うことが可能となります。

IMEのON・OFFの判定や切り替えに使う値の確認について

上記のコードで使用している"ja", "en", "^com\\.apple\\.inputmethod\\.Kotoeri\\.Roman$"の値については、「Karabiner-EventViewew -> Variables」の画面で確認できます。実際に指定する際は、正規表現で指定するのが正しいようです。あと、私はGoogleIMEなどのサードパーティー製のIMEはインストールしておらず、Mac標準のIMEを利用しています。その状態で撮影した以下のスクリーンショットで"input_source_id"Kotoeriの文字がありますので、GoogleIMEとかを使っている場合は値が違うかもしれません。そこは各自で確認して頂ければと思います。

IME_ON.png

IME_OFF.png

蛇足

IME関連のキー設定として、以下の2つの設定を"Complex Modifications"で行うためのキーも掲載します。("Simple Modifications"で設定するのであれば、GUIで設定可能な内容です)

  1. JISキーボードの"ひらがなキー"と"変換キー"を"かなキー"に、"無変換キー"を"英数キー"に変換する。
  2. 左右のコマンドキー(JISキーボードのWindowsキー)を"かなキー"と"英数キー"に変換する。
{
  "description": "'左コマンドキー'は'英数キー'に、'右コマンドキー'は'かなキー'に変換。",
  "manipulators": [
    {
      "type": "basic",
      "from": {
        "key_code": "left_command",
        "modifiers": {
          "optional": [ "any" ]
        }
      },
      "to": [
        { "key_code": "left_command" }
      ],
      "to_if_alone": [
        { "key_code": "japanese_eisuu" }
      ]
    },
    {
      "type": "basic",
      "from": {
        "key_code": "right_command",
        "modifiers": {
          "optional": [ "any" ]
        }
      },
      "to": [
        { "key_code": "right_command" }
      ],
      "to_if_alone": [
        { "key_code": "japanese_kana" }
      ]
    }
  ]
}
{
  "description": "JISキーボードの'変換キー'と'ひらがなキー'を'かなキー'に、'無変換キー'を'英数キー'に変換。",
  "manipulators": [
    {
      "type": "basic",
      "from": {
        "key_code": "international2",
        "modifiers": {
          "optional": [ "any" ]
        }
      },
      "to": [
        { "key_code": "international2" }
      ],
      "to_if_alone": [
        { "key_code": "japanese_kana" }
      ]
    },
    {
      "type": "basic",
      "from": {
        "key_code": "international4",
        "modifiers": {
          "optional": [ "any" ]
        }
      },
      "to": [
        { "key_code": "international4" }
      ],
      "to_if_alone": [
        { "key_code": "japanese_kana" }
      ]
    },
    {
      "type": "basic",
      "from": {
        "key_code": "international5",
        "modifiers": {
          "optional": [ "any" ]
        }
      },
      "to": [
        { "key_code": "international5" }
      ],
      "to_if_alone": [
        { "key_code": "japanese_eisuu" }
      ]
    }
  ]
}
s-show
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
ユーザーは見つかりませんでした