QMK版 d48trのファームウェアカスタマイズ方法について
はじめに
d48trのQMK版ファームウェアはこちらにございます。
github.com
QMKの基本的なカスタマイズ方法については他の記事を参考にしていただくとして、ここではd48trに特化したマウス部分を中心に解説します。
keymaps.cについて
マウス用キーとして、左クリック、右クリック、ホイールキーをカスタムキーとして設定しています。
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
MS_L,
MS_R,
MS_WH
};
また、同ディレクトリに存在するtrackball.cをインクルードすることで、トラックボールを制御しています。
#include "trackball.c"
trackball.cについて
2つの「//Parameter of trackball」のコメント配下にある設定がチューニングのポイントになります。
1つめ
//Parameter of trackball sensitivity [ms] #define DELAY_TIME 24
トラックボールの移動量を取得する間隔の設定です。値が大きければ大きい程、検出する移動量が大きくなりますが、その分ポインタの動きが遅延します。
2つめ
//Parameter of trackball sensitivity
currentReport.x = abs(left-right) * (left-right);
currentReport.y = abs(up-down) * (up-down);
検出したトラックボールの移動量を、ポインタの動きに変換している式です。
デフォルトでは上記のように、移動量の2乗としています。こちらについては、ある一定の移動量を超えると〇倍にするなどの設定にするなどもありだと思います。
Arduino IDE版d48trファームウェアのカスタマイズ方法について
ソースコード入手方法
Arduino IDE版d48trファームウェア、及びソースは以下でダウンロードできます
GitHub - delayed-brain/d48tr_arduino
セットアップ方法
Arduino IDEがインストールされていることを前提とします。
d48tr_libディレクトリをArduino IDEのライブラリフォルダに配置します。
(デフォルトでは、ドキュメント/Arduino/libraries)
d48tr_keymapディレクトリ内のd48tr_keymap.inoを編集することでカスタマイズが可能です
次にカスタマイズ方法について説明します。
キーマップの変更
const uint16_t keyMap[][rowNum][colNum] = { /* Qwerty * ,-----------------------------------------------------------------------------------. * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Tab | A | S | D | F | G | H | J | K | L | - | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | GUI |Alt/ |MS_WH |MS_L |Space |Lower/|Raise/| Left | Down | Up |Right | * | | |MS_R | | | |Space |KANJI | | | | | * `-----------------------------------------------------------------------------------' */ [_QWERTY] = { { KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, { KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS, KC_ENT }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT }, { KC_LCTL, KC_LGUI, ALT_MS_R, MS_WH, MS_L, KC_SPC, LT(_LOWER,KC_SPC),LT(_RAISE,KC_KANJI),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT } },
d48tr_keymap.ino内のkeyMap配列を変更することでキーマップをカスタマイズできます。
キーコードはqmkのエイリアスと互換性を持たせていますが、使用できないコードがあります。
使用できるキーコードはこちら
シンプルに''で文字を囲っても入力できます。
こんな感じ。
{ KC_KANJI, 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', KC_BSPC }, { KEY_TAB, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', '-', KEY_RETURN }, { KEY_LEFT_SHIFT, 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', KEY_RIGHT_SHIFT }, { 'a', 'a', MS_R, MS_WH, MS_L, ' ', ' ', MO(_RAISE), 'a' , 'a', 'a', 'a' }
レイヤーの追加方法
enum layer_numberに所望のレイヤー名を追加します。(17レイヤー以上は作成できません)
enum layer_number { _QWERTY = 0, _RAISE, _LOWER _NEW_LAYER };
既存レイヤーをコピペする等してconst uint16_t keyMap[][rowNum][colNum] 配下に新しいレイヤーを作成してください。
const uint16_t keyMap[][rowNum][colNum] = { //省略 [_NEW_LAYER] = { { KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, { KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS, KC_ENT }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT }, { KC_LCTL, KC_LGUI, ALT_MS_R, MS_WH, MS_L, KC_SPC, LT(_LOWER,KC_SPC),LT(_RAISE,KC_KANJI),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT } }, //省略 };
カスタムキーの作り方(タップ、ホールド無)
ユーザで任意のアクションを定義可能なカスタムキーの作成方法です。
enum custom_keycodesに所望のキー名を追加します。
enum custom_keycodes { XXXXXXX = 0x1001, MS_L, MS_R, MS_WH, NEW_KEY };
function_key関数の//custom_keycodes中にキーアクションを追加します。
「case key_press:」でキーを押した時
「case key_release:」でキーを離した時のアクションを定義してください。
/*---------------------------------------------------------------------------------------// * key functions */ void function_key(uint16_t keycode, int state){ //省略 //custom_keycodes else if (function_digit == 1){ //新規追加キー switch(keycode) { case NEW_KEY: //追加したキー名 switch(state) { case key_press: //キーを押した時 Keyboard.press(KC_A); break; case key_release: //キーを離した時 Keyboard.press(KC_A); break; } break; //省略 }
カスタムキーの作り方(タップ、ホールド有)
タップ操作、ホールド操作を判別可能なカスタムキーの作りかたです。
enum tap_custom_keycodesに所望のキー名を追加します。
enum tap_custom_keycodes { ALT_MS_R = 0x8001, NEW_TAPKEY };
function_key関数の//custom_keycodes(Tap enable)中にキーアクションを追加します。
「case TAP:」でキーをタップ(素早くキーを押し、離す)
「case Hold:」でキーをホールド(押し続けた時)
「case Hold_release:」でキーをホールド状態から離した時
のアクションを定義してください。
void function_key(uint16_t keycode, int state){ //省略 //custom_keycodes(Tap enable) else if (function_digit == 8){ //新規追加キー switch(keycode) { case NEW_TAPKEY: //追加したキー名 switch(state) { case key_press: break; case Tap: //タップ時 Mouse.press(MOUSE_RIGHT); Mouse.release(MOUSE_RIGHT); break; case Hold: //ホールド時 Keyboard.press(KC_LALT); break; case Hold_release: //ホールドから離した時 Keyboard.release(KC_LALT); break; } //省略
タップの時間判定について
タップ、ホールドの時間判定は下記のパラメータでチューニングが可能です。
#define TAPPING_TERM 200
Arduino IDE版d48trファーム キーコード一覧
Arduino IDE版d48trファームにて使用可能なキーコード一覧です。
qmkのエイリアスと互換性を持たせてあります。
通常キー
キーコード | キー |
---|---|
KC_EXLM | ! |
KC_HASH | # |
KC_DLR | $ |
KC_AMPR | & |
KC_QUOT | ' |
KC_LPRN | ( |
KC_RPRN | ) |
KC_PAST | * |
KC_PPLS | + |
KC_COMM | , |
KC_PMNS | - |
KC_DOT | . |
KC_SLSH | / |
KC_0 | 0 |
KC_1 | 1 |
KC_2 | 2 |
KC_3 | 3 |
KC_4 | 4 |
KC_5 | 5 |
KC_6 | 6 |
KC_7 | 7 |
KC_8 | 8 |
KC_9 | 9 |
KC_COLN | : |
KC_SCLN | ; |
KC_LABK | < |
KC_EQL | = |
KC_RABK | > |
KC_QUES | ? |
KC_JYEN | \ |
KC_RBRC | ] |
KC_CIRC | ^ |
KC_UNDS | _ |
KC_GRV | ` |
KC_A | a |
KC_B | b |
KC_C | c |
KC_D | d |
KC_E | e |
KC_F | f |
KC_G | g |
KC_H | h |
KC_I | i |
KC_J | j |
KC_K | k |
KC_L | l |
KC_M | m |
KC_N | n |
KC_O | o |
KC_P | p |
KC_Q | q |
KC_R | r |
KC_S | s |
KC_T | t |
KC_U | u |
KC_V | v |
KC_W | w |
KC_X | x |
KC_Y | y |
KC_Z | z |
KC_LCBR | { |
KC_PIPE | | |
KC_RCBR | } |
KC_TILD | ~ |
KC_ENT | Return (Enter) |
KC_ESC | Escape |
KC_BSPC | Delete (Backspace) |
KC_TAB | Tab |
KC_SPC | Space |
KC_MINS | - |
KC_CIRC | ^ |
KC_AT | @ |
KC_LBRC | [ |
KC_RBRC | ] |
KANJI | 半角/全角 |
KC_CAPS | Caps Lock |
KC_F1 | F1 |
KC_F2 | F2 |
KC_F3 | F3 |
KC_F4 | F4 |
KC_F5 | F5 |
KC_F6 | F6 |
KC_F7 | F7 |
KC_F8 | F8 |
KC_F9 | F9 |
KC_F10 | F10 |
KC_F11 | F11 |
KC_F12 | F12 |
KC_PSCR | Print Screen |
KC_SLCK | Scroll Lock |
KC_PAUS | Pause |
KC_INS | Insert |
KC_HOME | Home |
KC_PGUP | PageUp |
KC_DEL | Delete |
KC_END | End |
KC_PGDN | PageDown |
KC_RGHT | → |
KC_LEFT | ← |
KC_DOWN | ↓ |
KC_UP | ↑ |
KANA | カナ |
HENKAN | 変換 |
MUHENKAN | 無変換 |
KC_LCTL | Ctrl |
KC_LSFT | Shift |
KC_LALT | Alt |
KC_LGUI | 0xe3 |
KC_RCTL | GUI |
KC_RSFT | Shift |
KC_RALT | Alt |
KC_RGUI | GUI |
レイヤーキー
キーコード | キー |
---|---|
MO(layer) | 押している間だけ指定したレイヤー |
LT(layer, kc) | 押している間だけ指定したレイヤー、タップでkc |
自作キーボードキットd48trビルドガイド
d48trのご紹介
d48trは、小型トラックボールを搭載した軽量メカニカルキーボードキットです。
BOOTHにて販売しております
delayedbrain.booth.pm
実装版は半田付けの箇所も比較的少ないので、自作キーボード初心者の方も是非!
同梱物
物品 | 個数 |
---|---|
PCB | 1枚 |
ケース上下 | 1セット |
ミニトラックボール基板(Groveケーブル含む) | 1個 |
タクトスイッチ | 1個 |
スライドスイッチ | 1個 |
M2ネジ 3mm | 7個 |
M2ネジ 5mm | 1個 |
Grove メスコネクタ | 1個 |
ファーム導入済Pro Micro互換 ※初回版のみ同梱 | 1個 |
キット以外に必要なもの
物品 | 個数 |
---|---|
Pro Micro※初回版のみ同梱 | 1個 |
Kailhロープロファイルキースイッチ(choc) | 48個 |
Kailhロープロファイルキーキャップ(choc) | 48個 |
ダイオード ※通常版のみで必要 | 48個 |
バックライト(オプション)実装時に本キット以外に必要なもの ※通常版のみ(上級者向け)
物品 | 個数 |
---|---|
表面実装LED(EIA:0603 JIS:1608) | 48個 |
表面実装抵抗 4.7kΩ(EIA:0805 JIS:2012) | 48個 |
はじめに
PCBは写真の面を表面、反対の面を裏面とします
※通常版のPCBは黒色です
ダイオードの取り付け※通常版のみ
写真のようにダイオードを取り付け、はんだ付けします。
向きに注意してください。四角いフットプリントの方がカソード(オビの入っている方)となるよう取り付けます。
全部で48個あります。すべてはんだ付けします。
抵抗、LEDの取り付け※通常版のみのオプション(上級者向け)
写真の赤色の箇所にLED、緑色の箇所に抵抗を取り付けます。それぞれ48個づつ取り付けます。
表面実装パーツのはんだ付け方法はここでは割愛しますが
細かいパーツのはんだ付けとなりますので、上級者向けとなります。
キースイッチをはんだ付けする
キースイッチをPCBの表面からしっかりとはめ込みます。
PCBを裏返し、接点を2か所はんだ付けします。
上記を繰り返し、キースイッチ48個をPCBに取り付けます。
※一度キー48個を全部はめ込んでから、裏返して全部の接点をはんだ付けした方が効率的かもしれません
Pro Microを取り付ける
同梱のピンヘッダあるいはスプリングピンヘッダ(別売)により取り付けます。
まずはPro Microにピンヘッダを取り付けます。
【注意!】Pro Microは裏返し(平らな方が表になるよう)に取り付けます。
下の写真のようにピンヘッダを取り付け、はんだ付けしてください。
次にPCBにPro Microを取り付けます。
【注意!】Pro Microの位置に上下13個づつの穴がありますがPro Microで使用する穴は12個です。
表面から見て、左に詰めるように取り付けます。
PCB表面からPro Microを差し込みます。
必要であればマスキングテープ等で固定し、PCBの裏面からはんだ付けしてください。
同梱のピンヘッダを使用した場合、ピンへヘッダが長くはみ出るのでニッパ等でカットします。
ピンが飛びちり誤って目などに入らないよう、注意してカットしてください。
スライドスイッチはんだ付け(バックライトを使用しない場合は不要)
表面からスライドスイッチをPCBに取り付けてください。マスキングテープ等で仮固定すると安定します。裏面からはんだ付けします。
スライドスイッチの足が長いので、余っているピンはニッパ等でカットしてください。
実装版もしくはオプションバックライトを取り付けた場合は、スライドスイッチ、Pro Micro取り付け後、Pro MicroにUSBケーブルを接続し電源を入れるとLEDが点灯します。点灯しない場合はスライドスイッチを切り替えてみてください。
リセットスイッチはんだ付け
表面からタクトスイッチをPCBに取り付けてください。マスキングテープ等で仮固定すると安定します。裏面からはんだ付けします。
PCBをケースに取り付ける
PCBをケースに取り付けます。3mmネジ(短いほう)を使用します。
3Dプリンタでのケース出力ではどうしても若干の歪みが発生してしまうため、ネジ穴は多少ずれている場合があります。自然に入らない場合は自分でネジ穴を切るつもりで強く押し当てながらネジを回していくと入っていきます。
下の写真の通り、5か所をネジ止めします。
トラックボール基板をケースに取り付ける
トラックボール基板をケースに取り付けます。3mmネジ(短いほう)2本と5mmネジ(長いほう)1本を使用します。
写真のように配置します。上側のネジ穴は基板と重なるように配置し、5mmネジで固定します。
ケーブル取り付け
PCBに取りつけたコネクタとトラックボール基板のコネクタをGroveケーブルで接続してください。
写真のように、ケーブルをPCBのコネクタの隙間に挟み込むように収納すると収まりが良くなります。
ケース(上部)の取り付け
下部のレールにスライドさせるように取り付けてください。
完成
お好みのキーキャップを取り付けて完成です。
ファームウェアについて
ファームウェアはArduinoIDE版、QMK版の2種類があります。
どちらをお使い戴いても問題ありません。
<QMK版>
https://github.com/delayed-brain/qmk_firmware/tree/master/keyboards/d48tr
チューニング方法:
QMK版 d48trのファームウェアカスタマイズ方法について - DIYの記録
ArduinoIDE版の導入方法については別記事に記載します。
<ArduinoIDE版>
Arduino IDE版d48trファームウェアのカスタマイズ方法について - DIYの記録
dマガジン用のchrome拡張機能を作った
なぜ作ろうと思ったか
dマガジンをPCやwindowsタブレットで見る場合、ブラウザで見ることになると思います。
私はchromeで見ているのですが、通常のまま見ると、なんか少しぼやけて見えるような、、画質が悪くなっているような気がします。これは拡大率を下げると改善し、下図のようにくっきり見えるようになるのですが、引きずられて上下のメニューバーも小さくなってしまいます。
拡大率を下げると、この上下のメニューバーまで小っちゃくなっちゃいます。 また、本を選ぶ画面に戻っても、拡大率が維持されちゃうので、小っちゃくなったままです。
拡張機能を作った
以上の問題点をいい感じにしてくれるchromeの拡張機能を作りました。
・ビューワ画面に移動すると自動的に拡大率を下げて、解像度を上げる
・上下のメニューバーは小さくならない
・ビューワ画面以外は拡大率100%に戻す
ストアに上げているので良かったら試してください。
https://chrome.google.com/webstore/detail/dmagazineviewer/jhgihlihpgbpihdhlpljhhhjkaoaihgd?hl=ja