自作キーボード温泉街の歩き方

自作キーボードの世界は温泉に例えられます。自作キーボードの温泉街の楽しい歩き方を紹介します。

(初心者編)VIAを使ってキーマップを書き換えよう

こんにちは。自キ温泉ガイドのサリチル酸です。

f:id:Salicylic_acid3:20181119233252p:plain

また一ヶ月ぶりの更新になってしまいました。

もう少しフランクな記事も書きたいのですが、書いていくと膨らんでいってしまい、また今度ちゃんとまとめようとなってしまうんですよね。

さて、今回は初心者向けのキー設定記事第三段、VIAという新しいソフトを使ったキーマップの超簡単な変更方法を紹介したいと思います。

はじめに

皆さんは2020年7月21日放送のマツコの知らない世界、見ましたか?

だんだん世の中から自作キーボードへの注目(好機の目線とも言う)を感じるようになってきています。

その中でキーマップの書き換えに関連するアレコレが、はんだ付けの次に高いハードルとなっているようだと考えています。

それは以前書いたQMK Toolboxの記事について「このキーボードでこういうエラーが出るんですけど」という問合せの量からも感じています。*1

先の記事のQMK Toolboxは便利なのですが、エラーが出た時の対処は黒い画面とのにらめっこが必要です。

でも黒い画面でズラズラエラーが出てもよく分からないですし不安ですよね。

ということで今回は、QMK Toolboxを使用しなくてもダイレクトにキーマップを自由に書き換えられるVIAというソフトについてお話ししたいと思います。

VIAとは

QMKファームウェア(自作キーボードによく使われるオープンソースファームウェア)を書き込まれたキーボードのキーマップを、パソコン上の画面から直接操作・即反映できるソフトウェアです。

この直接操作・即反映というところがポイントです。

ConfiguratorでHexファイル(キーマップのファイル)を生成して、Toolboxで書き込むという方法ではタイムラグがどうしても発生してしまいます。

それをVIAでは即反映できるので、キーマップの試行錯誤という自作キーボードの醍醐味をよりダイレクトに楽しめるのです。

f:id:Salicylic_acid3:20200724000803p:plain

VIAの待機画面です。かわいい。

VIAのダウンロード方法

以下のリンクから最新のツールをダウンロードします。

github.com

この時、使用するOSによってダウンロードするファイルが異なりますので注意が必要です。

f:id:Salicylic_acid3:20200724001535p:plain

VIAのインストール方法

※私はWindows党なのでmaclinuxでの手順は検証できていません。ごめんなさい。

ダウンロードしたexeファイルをダブルクリックする

f:id:Salicylic_acid3:20200724002302p:plain

かわいいコイツをダブルクリック

セキュリティ警告が出たら詳細情報を押して実行を押す

f:id:Salicylic_acid3:20200724002751p:plain
f:id:Salicylic_acid3:20200724002942p:plain
このセキュリティ画面、青くてビビりますよね(私だけ?)

インストールされるまで待ちます

f:id:Salicylic_acid3:20200724003136p:plain

いきなりインストールバーが動くので少しビビります

インストールされました

f:id:Salicylic_acid3:20200724000803p:plain

うん、かわいい

キーボードを接続する

viaにキーマップがマージされている場合

そのままキーマップ編集画面が表示されます。

この時、画面にはキーボードに書き込まれているキーマップが自動反映されています。

f:id:Salicylic_acid3:20200724003756p:plain

これは最近エクストラ販売していたEquinoxです。まだ何もいじってない。。

viaにキーマップがマージされていない場合

左上の「File」から「Import Keymap」をクリックしてキーマップを読み込みます。

f:id:Salicylic_acid3:20200724004507p:plain
キーマップファイルは作者が別途提供しているものもあるので、VIA対応しているかどうかは作者にお問い合わせください。

私のNaked60BMPとAJisai74はキーマップファイルがまだマージされていないので、以下からダウンロードしてください。

キーボード名 DL
7sKB DL不要
7sPlus こちら
AJisai74 こちら
JISplit89 こちら
Naked60BMP こちら

おまけ:Mint60

※非公式で勝手に作ったものです。

こちら

f:id:Salicylic_acid3:20200724004658p:plain

ファイルの末尾にjsonと付いているものがキーマップファイルです。

※このキーマップの読み込みは毎回、ソフトの起動毎に読み込みをする必要があります。

f:id:Salicylic_acid3:20200724000110p:plain

キーマップが正常に読み込まれると設定画面が表示されます

キーマップ編集画面が表示されない場合

VIA用のファームウェアが書き込まれていない可能性があります。

VIA用のファームウェアをQMK Toolboxで書き込んでください。

salicylic-acid3.hatenablog.com

※VIA用のファームウェアは通常のファームウェアと違います。専用に用意する必要があります。

すでにVIAにマージされているVIA対応ファームウェアこちらからダウンロードできます。

※7sKB/7sProはマージされたのでダウンロード可能です。

それ以外のキーボードは以下のファイルを使用してください。

キーボード名 DL
7sKB DL不要
7sPlus こちら
AJisai74 こちら
JISplit89 こちら
Naked60BMP こちら

おまけ:Mint60

※非公式で勝手に作ったものです。

こちら

 

キーボードを設定する

VIAで出来ることは以下の通りです。

  1. 「KEYMAP」キーマップを変更する
  2. 「LAYOUT」キーボードに用意されているレイアウトを変更する
  3. 「MACROS」キー入力マクロを編集・管理する
  4. 「LIGHTING」LEDライティングを変更する
  5. 「SAVE+LOAD」キーマップをセーブ&ロードする
  6. 「KEY TESTER」キー入力のテストをする

多分他にも色々あるとは思いますが、基本的に使用するのはこの6つです。

f:id:Salicylic_acid3:20200724000110p:plain

VIAのスタート画面です。

レイアウトを変更する

最初に使うレイアウトに変更しておきましょう。

左側の「LAYOUT」をクリックし、自分が使うレイアウトに変更します。

下図のEquinoxは様々なキーレイアウトに対応していますので、自分が使うものに変更しておきます。

f:id:Salicylic_acid3:20200724013122p:plain

Equinoxではエンターキーの形、左シフトキーの分割、右シフトキーの位置、スペースの分割に対応しています

7sKBもレイアウト変更に対応しています、が、あんまり変わらないのでどちらでもいいです。。

f:id:Salicylic_acid3:20200724013554p:plain
f:id:Salicylic_acid3:20200724013623p:plain
違い、分かります?真ん中下辺りのキー幅がやや変わっています。。

キーマップを変更する

アルファキー(文字キー)とモデファイアキー(シフトとかの修飾キー)を変更する

f:id:Salicylic_acid3:20200724011536p:plain

上半分のキーボードのキーをクリックし、変更したいキーを下から選んでクリックします。

これだけでキーが変わっていますので試してみましょう。

f:id:Salicylic_acid3:20200724011817p:plain

全てがEscになっていく。何かから逃げたいときにやってみましょう。

メディアキーを追加する

左下の「MEDIA」ボタンを押すと主に音楽再生用のキー(音量操作、曲選択等)が並んでいます。

上の手順と同じ要領で、置き換えたいキーをクリックし、メディアキーをクリックして置き換えます。

f:id:Salicylic_acid3:20200724013913p:plain

マクロキーを追加する

別の項目で設定したマクロをキーに設定します。

マクロの設定は後述します。

f:id:Salicylic_acid3:20200724014345p:plain

マクロは1キーで挨拶などの定型文の自動入力等に使用します。

レイヤーキーを追加する

レイヤーを変更するキーを設定します。

自作キーボードの醍醐味のひとつなので、是非試行錯誤してみてください。

レイヤーについての説明は本記事下部のTipsを参照してください。

f:id:Salicylic_acid3:20200724014718p:plain

レイヤーの移動方法はいくつかのパターンがあり、使用方法に応じて設定します。

レイヤーキー 説明
Fn1、Fn2 Fn1やFn2キー単体で押すとレイヤー1に、同時に押すとレイヤー3に移動します。
Space Fn1~3 短く単押しでスペースキー、長押しで対応するレイヤーに移動します。
MO(1~7) 押している間対応するレイヤーに移動します。
TG(0~7)

対応するレイヤーに移動します。

※自動で元にレイヤーには戻らないので、戻る用のTGキーが別途必要

TT(0~7)

単体で押すとMOと同じように押している間レイヤーに移動します。

5回押すとTGキーと同じように移動したままになります。

OSL(0~7)

次のキーが入力されるまで指定したレイヤーに移動します。

キーが入力されると元のレイヤーに戻ります。

TO(0~7)

このキーを押すと指定するレイヤーでデフォルトレイヤーを置き換えるように動作します。

※あまり使った例を見ません。

LT(1~7,キーコード)

デフォルトでは用意されていませんが、後述するSPECIALのAnyキーを使用して設定することができます。

単押しでキーコードを、長押ししている間レイヤーに移動します。

キーコードはこちらを参照してください。

私はエンターキーでよく設定します。例:LT(1,KC_ENT)

私の設定の煮詰め方ノウハウについてはこちらを参照してください。

レイヤー関連のキーを設定する

各レイヤーに共通するキーを全レイヤーで書くのは大変なので、他レイヤーに関連するキーを設定します。

BASICの左上にある2キーが該当します。

空白のキーは押しても何の効果も無いキーです。そのレイヤーでは押さないor押すと誤爆する場合に使用します。

▽のキーはレイヤー番号の一つ数の小さいレイヤーのキーを踏襲するキーです。

f:id:Salicylic_acid3:20200724023547p:plain

特殊キーを追加する

記号単体や様々な効果を発揮するキーを設定します。

f:id:Salicylic_acid3:20200724030216p:plain

種類が多く普通は使わなさそうなキーが多いので、ここではよく使用するマウスキーを抜粋して紹介します。

キーコード 説明
Mouse↑↓←→ マウスカーソルを動かします。
Mouse Btn Btn1は左クリック、Btn2は右クリック、Btn3は中央クリック、後の2つはよくわからない。。
Mouse Wh↑↓←→ マウスホイールを動かします。
Mouse Acc0~2 マウスカーソルを加速します。

Anyキーを投入する

実はQMKという自作キーボードに使用しているファームウェアはもっと高機能なのです。

でもVIAは簡単に設定できるようにするために、それらの機能の設定はこのAnyキーを用いて設定するようになっています。

Anyキーは「SPECIAL」の一番下に色違いのボタンがあるのでそれで設定します。

f:id:Salicylic_acid3:20200724030317p:plain

設定画面は下のように単純にテキストを入力するようになっております。

f:id:Salicylic_acid3:20200724030423p:plain

このテキストボックスに以下のように入力します。

キーコード 説明
LT(0~7,キーコード)

単押しでキーコードを、

長押ししている間レイヤーに移動します。

MT(MOD_LCTRL, キーコード)

単押しではキーコードを、

長押ししている間Ctrlキーに変化します。

MT(MOD_LSFT, キーコード)

単押しではキーコードを、

長押ししている間Shiftキーに変化します。

MT(MOD_LALT, キーコード)

単押しではキーコードを、

長押ししている間Altキー/OPTキーに変化します。

MT(MOD_LGUI, キーコード)

単押しではキーコードを、

長押ししている間Winキー/CMDキーに変化します。

LSFT(キーコード)

Shiftキーを押しながらキーコードのキーを押します。

※日本語環境で記号を直接入力する場合にも使用します。

LCTL(キーコード) Ctrlキーを押しながらキーコードのキーを押します。
LALT(キーコード) Altキー/Optキーを押しながらキーコードのキーを押します。
LGUI(キーコード) Winキー/CMDキーを押しながらキーコードのキーを押します。
MEH(キーコード) ShiftキーとCtrlキーを押しながらキーコードのキーを押します。
HYPR(キーコード) ShiftキーとCtrlキーとWinキー/Optキーを押しながらキーコードのキーを押します。

キーコードについてはこちらを参照してください。

例:MT(MOD_LGUI,KC_MHEN)

f:id:Salicylic_acid3:20200724035659p:plain

設定が完了するとADVというキーになります。

f:id:Salicylic_acid3:20200724035803p:plain

入力でエラーとなると文字が赤くなります。(何がだめなのか分かりづらい!)

ライティングキーを入力する

キーボードのLEDライトを制御するキーを設定します。

国内の自作キーボードでよく採用されているRGB(フルカラー)バックライトは様々なパターンで発光させることができます。

f:id:Salicylic_acid3:20200724040720p:plain

使うのはだいたいこの辺です
キーコード 説明
RGB Toggle LEDのオンオフをします。
RGB Mode -+ RGBのアニメーションモードを切り替える。
Hue -+ LEDの色相を増減させます。
Sat -+ LEDの彩度を増減させます。
Bright -+ LEDの輝度を増減させます。
Effect Speed -+ LEDアニメーションのスピードを増減させます。
RGB Mode P~G LEDアニメーションモードを変更します。

キー入力マクロを編集・管理する

予め設定した文字列を自動送信するマクロを作成します。

f:id:Salicylic_acid3:20200724042103p:plain

登録するマクロの番号を選択し、文字列を入力します。

※日本語での入力はできません。

その際に文字列ではなくキーコードを入力する場合は{ }で囲んでキーコードを入力します。

キーコードはこちら

f:id:Salicylic_acid3:20200724050458p:plain

入力例。よく使う定型文を登録してみましょう。

実行例:お前を温泉に沈めてやろうか。

「Save」を押して保存し、キーにキーコードを設定します。

f:id:Salicylic_acid3:20200724042446p:plain

LEDライティングを変更する

LEDライティングを変更します。

LED対応のキーボードは面白いので色々いじってみてください。(説明省略の構え)

f:id:Salicylic_acid3:20200724042553p:plain

キーマップをセーブ&ロードする

キーマップは基本的にキーボードに保存され、VIAに自動で読み込まれるので保存は不要です。

ですがキーマップが固まったらなにかあったときのためにバックアップを取っておきましょう。

何かあった時:マイコン(Pro Micro)を交換した、他のキーボードに反映する、リセットした等

f:id:Salicylic_acid3:20200724043012p:plain

キー入力のテストをする

キーボードを組み立てたばかりのキー入力のテストは、VIAのKey Tester機能を使用すると分かりやすいです。

Key Testerは画面上の「KEY TESTER」をクリックするとテストモードに入ります。

f:id:Salicylic_acid3:20200724012432p:plain

押した部分の色が変わるので分かりやすいです。

使い心地は実際に試してみないと分かりませんが。。

Tips:基本知識とか、設定方法とか

レイヤーとは

レイヤーとは市販のコンパクトキーボードにあるファンクションキーに該当するもので、使用する状況に応じて複数設定する事ができます。

レイヤーの異動はキーマップ編集画面の上のLAYERから変更します。

f:id:Salicylic_acid3:20200724015226p:plain

f:id:Salicylic_acid3:20200724015316p:plain
f:id:Salicylic_acid3:20200724015226p:plain

このキーマップの例の場合、レイヤー0のMO(3)キーを押している間、レイヤー3のキーマップに移動します。この動作はHHKBを想像すると分かりやすいと思います。

日本語キーボードの記号について

日本語キーボードの記号と英語キーボードの記号ですが、同一のキーコードでも出力されるものが異なります。

以下に違いがあるものについてまとめてみましたので参考にしてみてください。

記号 対応するキーコード
半角/全角 KC_GRV
, | KC_INT3
^, ~ KC_EQL
@, ` KC_LBRC
[, { KC_RBRC
:, * KC_QUOT
], } KC_NUHS
, _ KC_INT1
" LSFT(KC_2)
& LSFT(KC_6)
LSFT(KC_7) 
( LSFT(KC_8)
) LSFT(KC_9) 
= LSFT(KC_MINS) 
~ LSFT(KC_EQL) 
| LSFT(KC_INT3)
` LSFT(KC_LBRC)
{ LSFT(KC_RBRC)
+ LSFT(KC_SCLN) 
* LSFT(KC_QUOT)
} LSFT(KC_NUHS)
_ LSFT(KC_INT1)

ハードリセットについて

キーマップの書き換え時に不具合が発生して、最初の状態に戻したいときはハードリセット(EEPROMリセット)を試してみてください。

方法はキーボードの一番左上のキー(概ねエスケープキー)を押しながらUSBを接続すると初期状態に戻ります。

個人的経験に基づく設定の煮詰め方

以下の記事はQMK Configuratorの記事ですが、煮詰める手法については共通です。

salicylic-acid3.hatenablog.com

おわりに

VIAについて出来る限り詳しく解説してみましたが、いかがでしたでしょうか。

なるべく分かりやすい様に書いたつもりですが、なにかわからないことが有れば遠慮なくコメント欄か私のTwitterへどうぞ。

次は開発者向けにVIA対応の方法を書きたいと思います。

本記事はNaked64SF v2で書きました。

*1:私のキーボードならなんとなく答えが分かりますが、それ以外のもののお問い合わせに関しては自作キーボードのコミュニティで聞いてみることをおすすめしています。

私以上に沼人詳しい住民たちが教えてくれます。

聞くときは#clinic-readmeチャネルをよく読んで聞いてください。

f:id:Salicylic_acid3:20200724000638p:plain