初めまして、初投稿です
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 についてはまだまだ素人同然なので、「こんな風にしたらもっと効率いいよ」とかあれば、じゃんじゃんプルリクや編集リクエスト送ってください