トップ画像
余ったテンキーを左手デバイスにしてみた【Karabiner-Elements】

執筆者: 米

最終更新: 2025/02/07

注意

この記事で取り扱ってるKarabiner-ElementsはMac用のアプリなので、それ以外のOSを使ってる方は別のアプリを使ってくださいね

はじめに

 みなさん、左手デバイスを使ったことはありますか? 左手デバイスを使うことによって、日々の作業の効率を大幅に上げることができます。私はCLIP STUDIO PAINT(クリスタ)でイラストを描くとき、TABMATEという左手デバイスを愛用しています。TABMATEのボタンに手のひら、虫めがね、回転などの操作を割り当てることで、左手をキーボードから離した状態で作業することができます。とても便利です。
 しかし、このTABMATEにも欠点があります。複数台のデバイスへ同時接続ができません。私は家で作業するときにデスクトップPC、外で作業するときにMacbookを使っています。同時接続ができないので片方のペアリングを解除したりしないといけないのですが、面倒です。TABMATEをもう1台買うのも手ですが、優待価格でも5000円くらいするので躊躇します。
 そういえば、むかしSurface Pro 6用に買ったけど使ってないテンキーがあったような…これを左手デバイスにできないだろうか。そう思っていろいろ調べたところ、Karabiner-Elementsというアプリでキーボード操作を変えることができることが分かりました。クリスタ側でショートカット設定を変えるのもありですが、こちらの方が他のソフトを使う際にも応用が効きそうなので、これを使ってみよう!

Karabiner-Elementsを使ってみよう

最初の準備

まず、【 導入編 】Karabiner-Elementsとは? インストールから基本的な使い方までという記事に沿ってインストールし、初期設定を済ませました。
早速テンキーの7を手のひら(spacebar)に割り当ててみよう!

これで手のひらを使えるようになりました。でも、これだけだと一対一の単純な変更しかできないですね。1つのキーで複数のキーを押したことにできないだろうか?もちろんできるらしい。だけど、その設定は自分で書かないといけないらしい……Karabiner-Elementsの設定項目をまとめましたという記事に沿って自分で書いてみよう!
早速書いてみます。まず以下のようなファイルを作ります。一から書くのはかなり面倒くさいので、じゃんじゃんコピペしてください。JSONを書いたことがないのでちゃんと整形できてるか分かりませんが…

{
  "title": "test",
  "rules": [

    {
      "description": "test1",
      "manipulators": [{}]
    },

    {
      "description": "test2",
      "manipulators": [{}]
    }

  ]
}

アプリ上で確認すると、以下のように表示されます。

manipulatorsの中に自分がやりたい動作を書いてく感じになります。

1つのキーで複数キーを同時押ししたことにする設定

詳しい解説は前述した記事に任せることにして、テンキーの / をcommand + Z(アンドゥ)を割り当ててみます。descriptionはできるだけ詳しく書くようにしましょう。基本的に、fromに変換したいキーのkey_codeを、toに変換先のキーのkey_codeを設定するでだいたいなんとかなります。modifiersの中で設定できるキーは決まってるので注意してください。key_codeはKarabiner-EventViewerで確認しましょう。 ついでにtitleも変えておきます。

{
  "title": "クリスタ用設定",
  "rules": [

    {
      "description": "undo : keypad_slash -> command + z",
      "manipulators":[
        {
          "type": "basic",
          "from": {"key_code": "keypad_slash"},
          "to": [
            {
              "key_code": "z",
              "modifiers": ["left_command"]
            }
          ]
        }
      ]
    }

  ]
}

アプリ上ではこんな感じ。

特定のアプリでのみ実行されるようにする設定

これだけでも十分なのですが、この設定だと全てのアプリでこのルールが適用されてしまいます。今回はあくまでクリスタ用にルールを作りたいので、先ほどのファイルにconditionsを追加しました。bundle_identifiersもKarabiner-EventViewerで確認できます。

{
  "title": "クリスタ用設定",
  "rules": [

    {
      "description": "undo : keypad_slash -> command + z in CLIP STUDIO PAINT",
      "manipulators":[
        {
          "type": "basic",
          "from": {"key_code": "keypad_slash"},
          "to": [
            {
              "key_code": "z",
              "modifiers": ["left_command"]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [ "^jp\\.co\\.celsys\\.CLIPSTUDIOPAINT" ]
            }
          ]
        }
      ]
    }

  ]
}

キーを押してる間だけポップアップする設定

次に、特定のキーを押してる間だけポップアップウィンドウが表示される設定を示します。クリスタにはクイックアクセスというものがあり、好きな機能を登録してクイックアクセスから使うことができます。TABMATEではボタンを押してる間だけクイックアクセスウィンドウが表示されるというのを設定できるのですが、それ以外だとクリスタでは設定できません…ショートカットキーを登録して、ウィンドウの表示・非表示を切り替えることはできます。とりあえず登録しておきましょう。

キーを押してる間だけウィンドウ表示を実現するには、以下のことを満たせばいいはずです。

  • キーを押した時にウィンドウ表示に切り替えて、キーを離した瞬間に「キーをもう一度押した」ことにしてウィンドウ非表示に切り替える
  • キーを押しっぱなしにすると連続入力することになりウィンドウ表示・非表示が切り替わり続けてしまう。それを無効化する

こんなことが設定できるんでしょうか? できちゃいます! 先にコードを載せておきます。

{
  "title": "クリスタ用設定",
  "rules": [

    {
      "description": "クイックアクセス : keypad_5 -> control + q in CLIP STUDIO PAINT",
      "manipulators":[
        {
          "type": "basic",
          "from": { "key_code": "keypad_5"},
          "parameters": {"basic.to_if_held_down_threshold_milliseconds": 10},
          "to_if_held_down": [
            {
              "key_code": "q",
              "modifiers": [ "left_control"],
              "repeat": false
            }
          ],
          "to_after_key_up": [
            {
              "key_code": "q",
              "modifiers": [ "left_control"]
            }
          ],

          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [ "^jp\\.co\\.celsys\\.CLIPSTUDIOPAINT" ]
            }
          ]
        }
      ]
    }

  ]
}

 まず、一つ目の条件はto_after_key_upで満たすことができます。名前の通り、キーから指を離したときの動作を設定することができます。
 二つ目の条件はto_if_held_downとparametersで擬似的に満たすことができます。to_if_held_downで特定の時間長押ししたときの動作を、parametersで長押しと判断される秒数を設定することができます。to_if_held_downで大事なのは、repeatをfalseにすることです。これにより押しっぱなしによる連続入力を封じることができます! 加えてparametersに非常に小さい数字を設定することで、事実上キーを押した瞬間にto_if_held_downが実行されます。
 以上の設定により、キーを押してる間だけウィンドウ表示を実現することができました!

その他

コード折りたたみで見やすくしておこう

みなさん、コードエディターは使っていますか? メモ帳などでこのファイルを書こうとするのは大変です。なんでもいいので使ってみましょう。おそらく、主要なコードエディターにはコード折りたたみ機能があるかと思います。私が使ってるVSCodeにはもちろんあります。設定ファイルを編集するとき、descriptionだけ見えるようにしてmanipulatorsを折りたたんでやると、ルール追加しやすく、かつ見やすくなると思います。参考画像を貼っておきます。

テンキーにシールを貼ってみる

キーの設定を変えるのはいいですが、どこをどう変えたのか完全に全部覚えるのは大変です。そこで、テンキーに100均のシールを貼ってどの機能か分かるようにするのも一つの手だと思います。欠点としては、一つのアプリの情報しか貼り付けられないことですかね…これも参考画像を貼っておきます。

おわりに

私がKarabiner-Elementsを使い始めたのはこの記事を完成させた数日前とかなので、全ての機能を使いこなせているわけではありません。しかし、今回紹介した設定だけでも余ったキーボードを左手デバイスに転用するには十分だと思います。Karabiner-Elementsには様々な機能があり、それを網羅することができればもっと悪さ…応用できそうなので、Macbookユーザーの方々はぜひ使ってみてください。ここまで読んでいただきありがとうございました!

取得に失敗しました

2019年度 入部