rcmdnk's blog

icon200_200_200

macOS SierraになってからKarabinerに取って代わったKarabiner-Elementsですが 色々と進化していてKarabinerで出来ていた様な事は大体出来るようになっているみたいです。

むしろ色々と出来ることが多くなってる様子。

Sponsored Links

マニュアル

最初使い始めた頃はマニュアル的なものも無かったので Exampleを見たりソースコードを直接見たりして調べてましたが 現在は結構充実したマニュアルが存在します。

karabiner.json Reference Manual - Karabiner - Software for macOS

どの様なキーが使えるか一通り載っています。

また、いくつか例も載っているので大体のことは ここを見れば出来る様になると思います。

to_if_held_down

12月30日リリースの11.5.0で入った様ですが、 通常のtoの代わりに to_if_held_downという キーを使うとキーを一定時間押していた場合に 別のキーを送れる様になります。 to_if_aloneの値を指定するとすぐに離した場合はこちらが送られます。

これを使って以下の様な設定をしています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    {
      "description": "For HHKB ((Shift-)Esc to grave accent (tilde))",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "escape",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "parameters": {
            "basic.to_if_alone_timeout_milliseconds": 250,
            "basic.to_if_held_down_threshold_milliseconds": 250
          },
          "to_if_alone": [
            {
              "key_code": "grave_accent_and_tilde"
            }
          ],
          "to_if_held_down": [
            {
              "key_code": "escape"
            }
          ],
          "conditions": [
            {
              "type": "device_if",
              "identifiers": [
                {
                  "vendor_id": 2131
                }
              ]
            }
          ]
        }
      ]
    },

HHKBではTABの上にESCがあります。 通常のキーボードではここに`があるので ちょっと癖が強いです。

そこで、この設定によりHHKBの場合はESCを押してすぐ話す場合には `、長押しした場合にはESCが送られる様にしてあります。

途中にあるparametersによって250ms以上押せばESCが送られる設定になっています。

この設定をしていますが、ESC-[でも送れる様に 設定してあって通常はこっちを使います(Vim like)。

mouse_key

mouse_keyというものがもうちょっと前に実装されていて、 これによってマウスカーソルを動かしたり スクロールをキーに割り当てたりすることが可能になります。

これまで、同じことをAppleScriptを使って動作させ、 これをshell_commandで呼ぶようにしていましたが、 これだとキーを押し続けた時にリピートして動いてくれませんでした。

今回、mouse_keyを試してみた所押しっぱなしにすると カーソルが動き続ける様になったので嬉しいところ。

以下の様な感じで--H/J/K/L で左下上右にカーソルを動かせる様にしています。

ついでに--N/M/Pで 左クリック/中クリック/右クリックが出来る様になっています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
    {
      "description": "Mouse cursor move using Karabiner's functions",
      "extra_descriptions": [
        "Mouse move using Karabiner's functions"
      ],
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "h",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "mouse_key": {
                "x": -1536
              }
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "j",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "mouse_key": {
                "y": 1536
              }
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "k",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "mouse_key": {
                "y": -1536
              }
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "l",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "mouse_key": {
                "x": 1536
              }
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "n",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "pointing_button": "button1"
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "m",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "pointing_button": "button3"
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "p",
            "modifiers": {
              "mandatory": [
                "control",
                "shift"
              ]
            }
          },
          "to": [
            {
              "pointing_button": "button2"
            }
          ]
        }
      ]
    },

まとめ

上の設定とかは下のページのPersonal Settingsから取ってこれます。

Karabiner-Elements complex_modifications rules by rcmdnk

実際には KE-complex_modifications をForkしてerb形式で書いて作っています。

Karabinerでも作ってたVim emulationも同じページにあります。

Sponsored Links
Sponsored Links

« VimのプラグインUnite.vimからdenite.nvimへの移行 No More Secrets: 映画スニーカーズで有名なハッキングシーンを再現するコマンド »