Skip to content

Instantly share code, notes, and snippets.

@unak
Last active February 3, 2021 14:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unak/b2defbcb830c579c28276318e0e616cf to your computer and use it in GitHub Desktop.
Save unak/b2defbcb830c579c28276318e0e616cf to your computer and use it in GitHub Desktop.
Helixで左右どっちのボードにUSBケーブルを繋いでも使えるようにする

Helixのファームウェアは左手側のボードにUSBケーブルを繋ぐことを前提に作られている。 が、右手側に繋ぎたいことだってあるじゃん? というわけで、どっちに繋いでも使えるようにしてみた。

まず、自分の使ってるファームウェアのディレクトリ内(例えばkeyboards/helix/rev2/keymaps/default)のkeymap.cの冒頭付近、

extern keymap_config_t keymap_config;

の直前くらいに、

#ifdef REVERSE_KEYMAP_COLUMNS
# define _LAYOUT( \
        L00, L01, L02, L03, L04, L05,           R00, R01, R02, R03, R04, R05, \
        L10, L11, L12, L13, L14, L15,           R10, R11, R12, R13, R14, R15, \
        L20, L21, L22, L23, L24, L25,           R20, R21, R22, R23, R24, R25, \
        L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \
        L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \
      ) \
      LAYOUT( \
        R05, R04, R03, R02, R01, R00,           L05, L04, L03, L02, L01, L00, \
        R15, R14, R13, R12, R11, R10,           L15, L14, L13, L12, L11, L10, \
        R25, R24, R23, R22, R21, R20,           L25, L24, L23, L22, L21, L20, \
        R35, R34, R33, R32, R31, R30, R36, L36, L35, L34, L33, L32, L31, L30, \
        R45, R44, R43, R42, R41, R40, R46, L46, L45, L44, L43, L42, L41, L40 \
      )
#else
# define _LAYOUT LAYOUT
#endif

を挿入する。 その上で、以降に出現する

  [_QWERTY] = LAYOUT( \

等のLAYOUTマクロを使っている部分を、

  [_QWERTY] = _LAYOUT( \

のように全て_LAYOUTに置き換える。

あとは、rules.mkの末尾に、

REVERSE_KEYMAP_COLUMNS = no
ifeq ($(strip $(REVERSE_KEYMAP_COLUMNS)), yes)
  OPT_DEFS +=  -DREVERSE_KEYMAP_COLUMNS
endif

を挿入し、左手側にはそのままmake helix:default等で生成したファームウェアを書き込む。

右手側については、今rules.mkに挿入した数行中の1行目を

REVERSE_KEYMAP_COLUMNS = yes

と書き換えた上で生成したファームウェアを書き込む。

これで、USBケーブルを左手側、右手側のどちらに繋いだ場合も、期待通りの配列で入力できるようになる。

@unak
Copy link
Author

unak commented Jul 5, 2018

なんかもっといい方法があったら教えてください。
どっかのピンを使って、今USBケーブルが繋がれてるのが左右どっちか物理的に認識出るようにすればいいのかなあ。

@unak
Copy link
Author

unak commented Jul 6, 2018

LEDがこれだと左右で逆になるですね。ううん……

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment