NK60/80キーボードのレイアウト
しばらく前に作った60%および80%のNICOLAキーボードのレイアウトについて。
以下に載せた「基本レイアウト」とは、hoboNicolaライブラリおよび各メインスケッチ付属のPCB固有のプログラム(nk60.cpp, nk80_rev2.cpp() がもつレイアウトで、hoboNicolaライブラリの「設定オプション」を一切適用していない場合を表している。
NICOLAモード時に有効となるNICOLA配列については、以下の投稿を参照のこと。
以下、各レイアウト図内の赤字はFnキーオン時の出力を示す。Fnキーオンの出力が書いていないものは、Fnキーオフ時と同じコードを出力する。
日本語レイアウト
日本語版のWindows10では、標準的に日本語キーボード用のハードウェアレイアウトが初期値になっている。
一般的な日本語キーボードでは最下行のおおむね中央部に、左から無変換、空白、変換、ひらがなという順に並んでいるので、NK60/NK80の基本レイアウトもそれに準じている。
NK60基本レイアウト(JPレイアウト)
- Deleteキーは個人的によく使うことと、Ctrl + Alt + Deleteが打ちやすいよう独立させている。
- ファクションキーを使った操作実験を意識していたので、FnキーオンのときにF1~F21まで入力可能とした。
- 比較的よく使う PrintScreenキーについては類推が効くように、Fn+Pで入力できるようにし、フルキーボードと同様に3つのキーを並べた。
- Mute, VolDown, VolUpの3つのメディア操作キーをキーコードテーブルに持つようにした。MをMuteにしたのは類推できるように、<記号(<)でボリュームダウン、>記号(>)でボリュームアップにしたのも同様。
- Appキー(アプリケーションキーまたはメニューキー)はFnキーオンで入力可能としたが、まあ使わない。
NK80基本レイアウト(USレイアウト)
- 60%キーボードよりもキー数が豊富なのでFnキーオンの場合の追加が少ない。
- メディア操作キーはNK60と同じような考えでFnキーオン側に配列。
- 特徴のないオーソドックスなTKLキーボードを目指した?
実装例
nk60 rev3(JP)
nk80 rev2 (JP)
USレイアウト
USレイアウトについては設定オプションにて、U: US Layout を有効にし、Windowsの言語のオプションにて、ハードウェア キーボードレイアウトを 英語キーボード(101/102キー) としている必要がある。
一般的な英語キーボードには、親指キーとして使えるキーがスペースキー以外に物理的に存在しないので親指で操作するキーとして、 F14、空白、F15、ImeOnの各キーを並べた。日本語キーボードでの無変換と変換の代わりにF14とF15を配置。ImeOn (HID 0x90) は日本語入力IMEを有効化するためのキー。
念のために書いておくと、Windowsのハードウェアキーボードレイアウトを英語キーボードとしている場合、変換、無変換、ひらがなキーといったDOS/Vキーボードで拡張されたキーのコードをキーボードから送信しても、Windowsに無視されてしまい入力の役に立たない。そのため、F14やF15といった無視されないキーを配置している。
NK60基本レイアウト(USレイアウト 1.7.4版)
- CapsLockキー単独では ImeOffキーを出力する。ImeOff, ImeOnおよび親指周りの各キーについては後述する。
- CapsLockキーはあまり使わないことと、日本語入力IMEの操作(かな⇒英字)時にいちいちCapsLockがかかるのが煩わしいので、FnキーオンのときにCapsLockキーのコードを出力するようにしている。つまり、USレイアウトの場合には Shift+英数ではなくFn +CapsLockでCapsLockがかかる。
- その他、JPレイアウトの場合と同様。
NK80基本レイアウト(USレイアウト)
- CapsLockキー、メディア制御キーについてはnk60と同様の考え方。
実装例
nk60 rev3(US)
nk80 rev2(US)
USレイアウトでの親指周りのキーについて
NK60およびNK80キーボードでは、同時打鍵入力に用いる左右の親指キーだけではなく、入力文字種を切り替えるためのキー(端的にいうと、IMEをオンオフするためのキー)も親指で操作できるようにする意図で、親指キーの左右に配置した。
また、親指キーは文字数字記号キーとの同時打鍵によるNICOLA配列の実現だけではなく、単独打鍵時に日本語入力IMEを操作したり空白を入力するためにも使う。MS-IMEやGoogle日本語入力では、IMEのカスタマイズ機能によってF14やF15キーを、日本語キーボードにおける無変換キーや変換キーと同じ機能のキーとして割り当てることができるため、WindowsをUSレイアウトとしてあっても、ほぼ日本語キーボードと同様のかな漢字変換入力が可能となる。MS-IMEとGoogle日本語入力でのるカスタマイズ例を以下に示す。
F14,15キーに決める際には、F23,F24といったキーも試してみたのだが、MS-IMEではF17以降のキーに操作のための機能(変換、候補表示など)を割り当てられなかった。
MS-IMEの設定例
キー | 入力/変換済文字無し | 入力文字のみ | 変換済 |
SPACE | 空白 | 全変換 | 拡張候補 |
変換 | IME-オン | 全変換 | 拡張候補 |
F15 | IME-オン | 全変換 | 拡張候補 |
無変換 | IME-オン | ひらがな | かな変換 |
F14 | IME-オン | ひらがな | かな変換 |
ひらがな | ひらがなキー | ひらがなキー | ひらがなキー |
ImeOn | ひらがなキー | ひらがなキー | ひらがなキー |
カタカナ (Shift+ひらがな) |
カタカナキー | カタカナキー | カタカナキー |
英数キー | IME-オフ | 英数キー | 英数キー |
ImeOff | IME-オフ | IME-オフ | IME-オフ |
Google日本語入力の設定例
キー設定において「入力キー」でソートし、各モードにおけるコマンドを表記した。
入力キー | 直接入力 | 入力文字なし | 変換前入力中 | 変換中 |
Space | 空白入力 | 空白入力 | 変換 | 次候補選択 |
Henkan | ひらがなに入力切替 | ひらがなに入力切替 | 変換 | 次候補選択 |
F15 | ひらがなに入力切替 | ひらがなに入力切替 | 変換 | 次候補選択 |
Muhenkan | ひらがなに入力切替 | ひらがなに入力切替 | ひらがなに変換 | ひらがなカタカナ切替 |
F14 | ひらがなに入力切替 | ひらがなに入力切替 | ひらがなに変換 | ひらがなカタカナ切替 |
ひらがな | ひらがなに入力切替 | ひらがなに入力切替 | ひらがなに入力切替 | ひらがなに入力切替 |
ImeOn | (備考1) | — | — | — |
カタカナ (備考2) |
全角カタカナに入力切替 | 全角カタカナに入力切替 | 全角カタカナに入力切替 | 全角カタカナに入力切替 |
Eisu | IME無効化 | IME無効化 | IME無効化 | IME無効化 |
ImeOff | (備考1) | — | — | — |
備考
- 現在のGoogle日本語入力 (GoogleJapaneseInput-2.28.5050.0+24.11.9)では、ImeOn, ImeOffを入力キーとして設定できない。おおむね、ひらがなキー、英数キーと同様に機能する。
- Shift + ImeOnキーはカタカナキーにならない。MS-IMEの場合、Shift + ImeOnをカタカナキーと同様に設定できる。
- MS-IMEの「ひらがなキー」やGoogle日本語入力の「ひらがなに入力切替」は、IMEオンで入力文字種をひらがなとするための操作になる。「カタカナキー」、「全角カタカナに入力切替」も同様。
hoboNicolaライブラリが提供する拡張機能
キーボードの基本レイアウトを若干変更するための設定オプションを用意している。たとえば、変換(F15)キーを空白キーにする、空白キーを無変換(F14)キーにする、無変換(F14)キーをImeOffキーにするなどがある。
また、IMEの有効無効を切り替えるキーについては、キーボード内部のNICOLAモードをオンにしたりオフにしたりすることもできる。
基本レイアウトのほかに、FnキーやCtrlキーをオンにした状態で文字数字キーを押すことで、レイアウトにないキーコードを発生したり、キーボード内部の機能を呼び出したりすることもできる。
キー | 機能 |
Fn + 右Ctrl + S | 設定モードを開始する。 |
Fn + 右Ctrl + Esc | システム制御のスリープ |
Fn + 右Ctrl + Enter | メディア制御用の Play/Pause |
Fn + 右Ctrl + End | メディア制御用の Scan Next |
Fn + 右Ctrl + Home | メディア制御用の Scan Prev |
Fn + 右Ctrl + ↓ | LEDを暗くする |
Fn + 右Ctrl + ↑ | LEDを明るくする |
Fn + 右Ctrl + 左Ctrl + B | RP2040のブートローダーモードを開始 |
- 設定モードに入った場合の操作や設定オプションについては上記と同様に、ほぼNICOLA化プログラム hoboNicolaのページを参照。
- PWM LEDの明るさを変更するときには、ImeOn/ひらがなキーなどでNICOLAモードとし、LEDを点灯させておく必要がある。そうしないと、明るさの変化がわからない。
- ブートローダーモードに入ると、リセットするかUF2ファイルを与えるまで復帰しない。ブートローダーモードはBOOTSELスイッチを押した状態で、RESETスイッチを押すかUSBケーブルを差し込むことでも開始する。これらのスイッチは、NK60/NK80の裏面に用意してある。
自分好みの設定
設定オプションを使うことで、ある程度は好みの配列に変更することができる。自分自身が使っている設定と親指周りの配列は以下のとおり。
- 設定7を有効。英数キーが押されたからNICOLAモードをオフにする。 英数キーオンなのでIMEも無効になる。
- 設定Fを有効。基本レイアウトの無変換キー(F14)をImeOffキーに変更。 このキーが押されたとき、NICOLAモードをオフにする。ImeOffなのでIMEも無効になる。
- 設定Sを有効。基本レイアウトの空白キーを無変換(F14)キーに変更。同時打鍵のための左親指キーとしても使う。
- 設定Bを有効。無変換(F14)に変更されたキーを押したときNICOLAモードをオンとする。無変換キーなのでIMEはオンとなりひらがな入力状態となる。
- 設定Hを有効。基本レイアウトの変換(F15)キーを空白キーに変更。プログラミングするときには頻繁に半角空白を入力するが、右親指で入力したいから。また、同時打鍵のための右親指キーとして使う。IMEに入力候補があれば変換キーと同様に機能する。
- 設定8を有効。ひらがなキーまたはImeOnキーが押されたら、NICOLAモードをオンにする。IMEもひらがな入力となる。
親指キーの割り当てについては、設定2を有効とし、無変換(F14)キーを左親指キー、空白キーを右親指キーとしている。
備考
ソース一式など
最新版のソース一式は、GitHubにおいてあります。NICOLAモード時の配列も書いてあります。ビルドのための一式を取得するときには、Release からzipファイルを取得のこと。
日本語レイアウトでのアンダーバーのキー
nk60_rev3 PCBおよびnk80_rev2 PCBは、日本語レイアウトとUSレイアウトの両方に対応したスイッチ配置ができるように作ってある。ただ、日本語レイアウトを優先しているため、USレイアウトでスイッチを配置するときにも、右Shiftキーの左隣に本来は存在しなくてもよいキー(日本語レイアウトでのアンダーバー)の配置を必須とした。
nk60の場合、アクサングラブ( ` )を出力する(シフト時はティルダ ~ ) 。 そうすることで、1の隣のキーを単独でEscキーにできるし、アクサングラブやティルダもFnキー無しで入力できる。
nk80では、隣の右Shiftキーと同じコードを出力するようにしている。このキーと右Shiftを合わせて2.75U幅とするような配線パターンとしても良かったのだが、スタビライザーが増えるのもナニだなと思って端折ることにした。
きょうのまとめ
- nk60 rev3, nk80 rev2ともにRP2040を使ったPCBとして設計し、JLCPCBにPCBAを依頼したもの。60%キーボードの場合、GH60と同じ寸法、同じネジ穴位置、同じUSBコネクタ位置でPCBを設計すれば、市販のケース(あるいはシェル、シート)を利用できるので便利。
- nk60については、revision1が製作前にボツ、rev2はPCBとスイッチプレート共に完成し実際に利用しているが、左右の親指キーを2U幅としたことで、個人的に空白キーが狭く感じた。このため、右親指を2.25Uとしたrevision3を設計してPCBを製造依頼した。ハードウェアについては、こちらの投稿を参照。レイアウトについての記述が少なかったのでこの投稿を書いておくことにした。
- nk80については、アクリル板を積層した構造で作ってみたかったので、Elecrowにアクリル板レーザーカットサービスを依頼した。PCBとスイッチプレートを合わせると五層構造となっているが、案外と精度よくできあがるもんだと思った。もっとも、使っているとどうしても不満も生じてしまうので、そのうち作り直すかも。
- 日本語入力IMEのカスタマイズについても書いておいたが、このあたりは使い手の好みや慣れに応じて受入れ難いものがあるかも。考え方としては、IMEのオン・オフをトグル操作ではなく、特定のキーで一方通行としておくのが、ストレスの少ない入力につながるだろう、というところ。