以下のような更新および追加を行った。
- MacOSへの対応
- 基本レイアウト(USレイアウト)の変更
- いくつかの設定オプションの追加
- 依存ライブラリ、コアパッケージの確認
- その他
1.7.5版のソース一式については、 https://github.com/okiraku-camera/hoboNicolaLibrary/ を参照のこと。hoboNicolaLibrary 1.7.5の一式のアーカイブは このリンクで開くページ内からダウンロードできます。
MacOSへの対応
MacOS (Sonoma 14.3 ) が動作している Mac mini (Apple M2) に hoboNicolaアダプター ( + キーボード) や hoboNicolaキーボードを接続したとき、いずれもおおむねNICOLA配列のキーボードとして利用できるようにした。Macのその他の機種については未確認だが、おそらく同じように利用できるだろう。
1.7.4版までのhoboNicolaLibraryを用いたアダプターおよびキーボードをMac (Mac Mini, Mac Book他)に接続すると、JISまたはANSI配列のキーボードとして認識はされるが、日本語入力に重要な英数キーおよびかなキーが無効になっていた。また、JISキーボードとして認識させた場合でも、右Shiftの隣の _ (アンダーバー)キーと、バックスペースの隣の¥キーも入力できなかった。
MacOSでキーボードの種類を変更するときには上記のキーボード設定アシスタントを使ってキーボードを追加する必要があるが、1.7.4版まではこのダイアログで _ (アンダーバー) キーが入力できず、結果しとて日本語キーボード用に拡張された4つのキーが入力できなかった。
1.7.5版では、キーボード用のレポートディスクリプタを若干変更して設定アシスタントでも _ を入力できるようにし、JISキーボードとしてもUSレイアウトのANSIキーボードとしても利用できるようにした。
MacOSでhoboNicolaアダプターやhoboNicolaキーボードを利用する際の詳細については、別の投稿でまとめる予定です。
NK60基本レイアウト(USレイアウト 1.7.5版)
USレイアウトのときの基本レイアウトを変更した。基本レイアウトとは、nk60キーボードを素のままで(設定オプション無しで)使ったときのレイアウトのこと。
右Shiftキーの配置
英文を入力するにあたって右Shiftキーがないと困るという声があったので、上矢印キーの左隣を右Shiftキーとした。1.7.4版までは、この位置は ` ~ (バッククォート、ティルダ) キーだった。これらの記号は稀にしか入力しないだろう、ということで、Fn + Esc に移動した。ティルダ記号を入力する際には、Fn + Shift + Escキーを押すことになる。
自作のNK60 PCBでは、上図の右Shiftの位置には1Uサイズのキーを配置する必要がある。個人的には右Shiftキーはほとんど使わないので、USレイアウトのときも何か役に立つようにと思って、バッククォート(Shift時はティルダ)キーを配置していた。
MacOS対応
MacOSでのキーボード識別用に、( USレイアウトを有効にしている場合にも ) Fn + 右Shiftで HID International 1 ( 0x87) を出力するようにした。これは、日本語キーボードでの _ (アンダーバー) キーのコードである。
このキーを用意しておけば、MacOSで キーボードの種類を変更するときUSレイアウトであっても日本語入力用のキーを備えたキーボードと認識させることができる。
つまり、キーボード識別時に Fn + 右Shift を押して日本語キーボードとして認識させれば、キーボード設定アシスタントの最後にでてくる上の画面で ANSI (米国) キーボードを選択しても、かなキー(0x90, ImeOn) や 英数キー(0x91, ImeOff) を使ったIMEの開閉が可能になる。
Windowsの場合、ハードウェアキーボードレイアウトを日本語⇔英語で変更するときシステムの再起動が必須でとても面倒なのだが、MacOSではそんなことに時間を使わずに切り替えられる。また、ANSI(米国)レイアウトであっても、Windowsのようにいくつかのキーが無効になることもないので日本語入力時の操作も変わらず快適。
hoboNicola使用時の設定方法などについては別の投稿で。
設定オプションの追加
設定J : 変換(F15)キーでNICOLAモードをオンにする
有効にしたとき、変換(または F15)キーの単独打鍵でNICOLAモードをオンにする。
このオプションは、変換(または F15)キーを右親指キー、空白キーを左親指キーとして利用しているときに、右親指キーの単独打鍵でIMEを開きつつNICOLAモードもオンにしたい、という声を反映したもの。
無変換キーを使わない入力方法に慣れていて、空白キーを左親指で叩いて違和感がないのならばこれでよし。キーボードの無変換キーをImeOffに割り当てておけばいいだろう。
設定R : コード出力時の遅延を短くする
有効にしたとき、USBのホストに対する連続出力時の送信間隔(遅延時間)を短くする。
Windows Explorerの検索フィールドで入力するとき、hoboNicolaが送信するローマ字文字列の取りこぼしが生じることが多かった。そのため、ローマ字シーケンスを連続出力するようなときには長めの遅延をおいていたが、PCの性能があがったためなのか、Windows Explorerが改善があったのか、理由はよく分からないがあまり気にならなくなったので遅延を小さくするようなオプションを用意した。検索フィールド以外では、よりスムーズに入力できるようになった気がする。
ただ、古めのノートPCを内蔵電池で駆動しているようなときには相変わらず取りこぼしが発生するので、送信間隔遅延の廃止はしなかった。なお、MS-IMEの方がGoogle日本語入力よりも取りこぼしは少ないようである。
それにしても、この時代になっても数ミリ秒程度の間隔で発生するキー入力を取りこぼすってどういうことなんだろうか。
設定I : CapsLock —> ImeOff を日本語キーボードでも有効に
有効にしたとき、CapsLockキーはImeOffキーとして機能する。
従来は US Layout を有効にしているときに使えるオプションだったが、今回からはUS Layout を有効にしていなくても機能するようにした。
これはMacOS用の対応の一つで、Windowsで使っているときのクセで、IMEをオフにするとき (Macの) 英数キーではなくCapsLockキーを押してしまうことが多かった。このオプションにより、CapsLockキーは (Macの) 英数キーと同じImeOff (LANG2)を送信するようになるので、IMEは閉じる。
CapsLockを行いたいときは、Windows (英語キーボードレイアウト) およびMacOSでは、Fn + CapsLock 、Windows (日本語キーボードレイアウト) ならば、Shift + Fn + 英数 とする。
設定Z : F14/F15を常に使う
有効にしたとき、基本レイアウトまたは接続キーボードの無変換キーはF14キーとして、変換キーはF15キーとしてUSBホストに送信する。
これもMacOS用の対応の一つ。MacOSにおいてもキーボードに配列されていないファンクションキーの一部 (F13~F19) を利用するできるようなので、従来のhoboNicolaに合わせて、F14を無変換キー相当、F15を変換キー相当として利用できるようにした。
Macには無変換キーや変換キーは存在しないため、キーボードからWindowsと同じコードを送信しても、当然ながらMacOS付属のIMEは何もしてくれない。どうしようかと思って調べてみると、MacOS用のGoogle 日本語入力をIMEとして利用する場合、Windowsのときと同じようにF14キーに無変換キー相当の機能を割り当てられることが分かった。
左親指キーを無変換(F14)キーしておけば、左親指キー単独打鍵での半確定(ひらがな変換)や、かな文字種切替え(ひらがな→カタカナ変換)操作が可能になるし、右親指キーを変換(F15)キーとしておけば、IMEの変換操作に利用できる。
このオプションにより、hoboNicolaアダプターに日本語キーボードを接続しているとき、無変換キーはF14キーとして、変換キーはF15キーとして機能するようになる。これらを親指キーとして利用することで、Windowsと同様のIME操作が可能になることを意図した。
依存ライブラリ、コアパッケージの確認
2024/2/29現在で確認しているのは、以下の組み合わせになる。
1 2 3 4 5 6 7 8 |
Used library Version hoboNicola Library 1.7.5 SPI 1.0 Adafruit TinyUSB Library 2.3.3 EEPROM 1.0 Used platform Version rp2040:rp2040 3.7.2 |
- Adafruit TinyUSB Library のこの時点での最新版は3.1.0なのだが、2.4.0版以降を使ってビルドするとhoboNicolaが動作しなかったため、2.3.3版を利用している。
- Arduino-pico についてはこの時点での最新版の3.7.2を使ったビルドと動作を確認した (rp-hobo-nicola, nk60, nk80)。
- 気になる点は、Arduino-picoにバンドルされている Adafruit_TinyUSB_Arduino のバージョンが2.3.0 なのだが、このバージョンが上がるとパッケージ更新時やビルドのときに面倒なことになるかもしれない。
そのため、Adafruit_TinyUSB_Arduino の 2.4.0以降が使えれば更新していく予定。gitの更新履歴を見てもさほど大きな違いはなさそうなのだが…。
きょうのまとめ
-
- nk60のレイアウトの変更は、hoboNicolaLibraryへの変更ではなく、nk60.cppなどハードウェア依存モジュールの中の話である。
- ATMega32U4を搭載した XD64 PCBを使ったほぼNICOLAキーボードについても、1.7.5版を組み込むことでMacOSで遜色なく利用できている。
- また、ATMega32U4とMAX3421Eを使った usb_hobo_nicolaについてもまだフラッシュメモリを使いつくしておらず、Macにつないでも使えた。遅いが。
1 2 3 |
"...\usb_hobo_nicola\\build/usb_hobo_nicola.ino.elf" 最大28672バイトのフラッシュメモリのうち、スケッチが27380バイト(95%)を使っています。 最大2560バイトのRAMのうち、グローバル変数が1020バイト(39%)を使っていて、ローカル変数で1540バイト使うことができます。 |
- 設定オプションの種類がいい加減増えてしまって、自分で使っていても「どうするんだっけ」みたいになりつつある。ある日そっくり変更するかもしれません。
- MacOSにつないでみて、hoboNicolaキーボードとの相性の良さというか、使い勝手の良さを感じた。また、MS-IMEにおけるImeOn/ImeOffキーの解説からすると、そろそろMacOSと同じにしたいんだろうな、と思えてくる。