0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KE-complex_modificationsをsimultaneous対応にした

Last updated at Posted at 2018-03-14

Macのキーバインドをいろいろ設定できるKarabiner-Elementsが、Version 11.6でついに修飾キー以外の同時押しにも対応してくれました。これでついにEl Capitanからおさらばできる!と思ってKarabinerの設定をKarabiner-Elementsに移植しようと思ったのですが、同時押しパターンの多さから定義ファイルを一から書くのにくじけました。それでKE-complex_modificationsを使って.erbファイルを使って楽をしようと思ったのですが、KE-complex_modificationsはキー同時押しの記述を実装していなかったので、実装してみた次第です。

リポジトリ

https://github.com/Shinichi-Ohki/KE-complex_modifications にあります。使い方は本家のKE-complex_modificationsと同じく、src/json/内に.json.erbファイルを置いてmakeするとdocs/json/内に.jsonが生成されます。

やったこと

KE-complex_modificationsのerb2json.rbにはeach_keyというメソッドが用意されています。(参考:each_key)
これはsource_keys_listとdest_keys_listというArrayに入力と出力を羅列することでcomplex_modificationsの設定を一度に書けるメソッドです。ここにarrayの要素としてarrayを書いたらいいのでは、と思うのですが、例えば
source_keys_list: [["f","j"]],
と書いても

"from": {
  "key_code": [
    "f",
    "j"
  ],

と展開されてしまいます。
これを

"from": {
  "simultaneous": [
    {
      "key_code": "f"
    },
    {
      "key_code": "j"
    }
  ],

と展開されるようにしました。
また、出力側も
dest_keys_list: [["g","h"]],
と書いたら

"to": [
  {
    "key_code": [
      "g",
      "h"
    ]
  }
]

となってしまうのを

"to": [
  {
    "key_code": "g"
  },
  {
    "key_code": "h"
  }
]

と展開されるようにしました。これでキーを複数続けて出力するのも記述できます。ただし修飾キー付きで複数キーの連続出力することはなさそうだったのでそっちは実装してません。

具体的にどう書いたかはリポジトリのdiffを見てもらうのがわかりやすくてよいかと思います。
https://github.com/Shinichi-Ohki/KE-complex_modifications/commit/dca19ed8e783f71490f39000b4f05b39d325384c#diff-ec216709002c75751c08467fb890337a
(もっとエレガントな書き方があったらこっそり教えてください)

参考

KE-complex_modificationsを使ってKarabiner-Elementsの設定を楽にする方法
Karabiner-Elementsの設定項目をまとめました

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?