LoginSignup
20
15

More than 3 years have passed since last update.

US配列ライクなJISキーボードにするカスタムキーコードを作った

Last updated at Posted at 2020-01-22

初めまして、初投稿です

US配列ライクなJISキーボードとは

自作キーボード作ってる人は US配列JIS配列 の違いは当然ご存じかと思います
OSに認識されるキーボードがUS配列かJIS配列かによって同じキーコードでも入力される文字は違いますよね
例えばこんな感じ

  • JIS配列
    • KC_2 -> 2
    • LSFT(KC_2) -> "
  • US配列
    • KC_2 -> 2
    • LSFT(KC_2) -> @

これのせいで「印字されてる文字と入力される文字が違うんだけど!」みたいなこともよくあるそうですね
まあ、OS側の設定でキーボードの言語を正しく設定すれば問題ないですが、使ってるPCで全部その設定するの面倒じゃないですか
それに、US配列で半角/全角切り替えするには Alt + ` 入力しないといけないし(そういうカスタムキーコード作れば解決しますがそれはそれで)

あと、US配列の40%キーボードとかでリモート環境に入ると打てない文字とかあるし、勝手に設定も変えられないし、つらい……

というわけで、 JIS配列キーボードとして認識されるけど、物理的な配列はUS配列 というキーボードにしたいという意欲が高まったわけです

なお、私は Windows 環境しか持っていないため、他の OS で正常に動くかは未検証です

ソースコード

ソースコードは GitHub に公開しています

定義されているキーコード

キー 説明
JU_2 2 / Shift で @
JU_6 6 / Shift で ^
JU_7 7 / Shift で &
JU_8 8 / Shift で *
JU_9 9 / Shift で (
JU_0 0 / Shift で )
JU_MINS - / Shift で _
JU_EQL = / Shift で +
JU_LBRC [ / Shift で {
JU_RBRC ] / Shift で }
JU_BSLS \ / Shift で |
JU_SCLN ; / Shift で :
JU_QUOT ' / Shift で "
JU_GRV ` / Shift で ~
JU_CAPS 英数の大文字/小文字切り替え

使い方

ここでも簡単に説明しますが、詳しくは GitHub の README.md をお読みください

必要なもの

  • rules.mk
  • jtu_custom_keycodes.h
  • jtu_custom_keycodes.c

これらのファイルを好きなディレクトリに配置してください(適用したいキーマップディレクトリの下とか)

keymap.c の編集

まずはヘッダーファイルを include します

#include "jtu_custom_keycodes.h"

カスタムキーコードが定義されている部分を、以下のように書き換えてください

before

...

enum custom_keycodes {
  CUSTOM_KEY_CODE_A = SAFE_RANGE,
  CUSTOM_KEY_CODE_B,
  CUSTOM_KEY_CODE_C
};

...

after

...

enum custom_keycodes {
  CUSTOM_KEY_CODE_A = JTU_SAFE_RANGE, // 変更
  CUSTOM_KEY_CODE_B,
  CUSTOM_KEY_CODE_C
};

...

最後に、 process_record_user(...) を書き換えます

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  // 以下追加
  bool continue_process = process_record_user_jtu(keycode, record);
  if (continue_process == false) {
    return false;
  }
  // 追加ここまで

...

キーマップ変更

あとは好きなようにキーマップをいじってください

BLE Micro Pro について

BLE Micro Pro 標準ファームウェア用のものも用意しています

おわりに

これで、 US配列ライクなJISキーボード の完成です
また、実装面では BLE Micro Pro 用 QMK Firmware の実装をかなり参考にさせていただきました

なお、 QMK Firmware についてはまだまだ素人同然なので、「こんな風にしたらもっと効率いいよ」とかあれば、じゃんじゃんプルリクや編集リクエスト送ってください

20
15
3

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
20
15