たねけん氏が公開しているUSBKBD2X68Kの改造版です。改造点は以下のとおり
- ソースの修正なしにツール(※X68000用)でキーマップの変更が可能な種研プロトコルに対応
- キーマップのレイヤーを2面用意(いわゆるFnレイヤー)
- Fnキー機能を追加。2面のレイヤー(通常面, Fn面)をFnキーで切り替え可能
- Fnキーは「押している間だけFnレイヤーを選択」と「押すたびにアクティブなレイヤーをトグルで切り替え」を指定可能
- 押している間だけ有効なFnキーについては「他のキーと一緒に押した場合はFnキーとして機能」「単独で打鍵した場合は通常キーとして機能」という、いわゆる「ワンショットモデファイア」としての設定も可能。
- マウス処理をちょっとだけ改善
- キーを押しっぱなしにした時、実機だと「最初のキー発生の後、数百ミリ秒で最初のリピートが発生 (delay-time)、以降は押し続けている間数十ミリ秒でリピート (repeat-time)」という動きをしますが、この delay-timeとrepeat-timeの両方の機能を実装しました
- delay-time と repeat-time はHuman68kのswitch.xで設定した値が反映されます
メモリの関係で以下の機能は削除しています
- Bluetooth対応は削除しました
- キーマップを自由に変更できるのでUS版は特に作っていません
本家USBKBD2X68KはBTライブラリが大きいためarduino Leonard等のAtmega32U4採用モデルには書き込めませんが、当私家版は書き込み可能です
そして最大の問題点
ハードウェア的な互換性はありません
たねけん氏のUSBKBD2X68Kでは「キーボードの送受信処理にソフトウェアシリアルを使用、マウスの送信処理にマイコン内蔵のUARTを使用」となっていますが、私家版ではこれを逆にして「キーボードの送受信処理にマイコン内蔵のUARTを使用、マウスの送信処理にソフトウェアシリアルを使用」に変更しています。
ご存知のとおりX68000は本体の電源がOFFの間もキーボードに対して給電されます(compact除く)。そのため、キーボードに対しては本体の5Vとは別に、常時給電用の5Vのラインが使用されます。
問題はこの常時給電用の5Vのラインは非常に給電能力が貧弱ということです。X68000の電源に無理をかけない範囲だと数百mA程度で使うのが妥当な気がします。
昨今流行のLEDが沢山ついたゲーミングキーボード等は非常に消費電力が大きいものがあり、出来れば接続を避けて下さい。
また古いPS/2キーボードをUSB-PS/2変換ケーブル経由で繋ぐのも、同じ理由であまりお勧め出来ません。
Fnキー処理に明確な手抜きがあります
例えば「『A』のキーを単独で打鍵したら "A"、Fnキーを押しながら打鍵したら "B" をX68kに通知」となるようにキーマップを定義しているとします
- Fn押下
- A押下 (Fn押下中なのでX68kにはBの押下が通知される)
- A開放 (Fn押下中なのでX68kにはBの開放が通知される)
- Fn開放
このような順番でキーを操作する分には問題ありませんが、
- Fn押下
- A押下 (Fn押下中なのでX68kにはBの押下が通知される)
- Fn開放
- A開放 (Fn押下中ではないのでX68kにはAの開放が通知される)
このようにキー開放の順番によってはキーBのbreakが通知されない事になります。
あるキーが押された際に「Fnキーが押下中か否か」の状態を押されたキー毎に管理すればいいだけなんですが(そしてキーが開放された際は保管していた状態に従って、X68kに通知するスキャンコードを通常面/Fn面のどちらから取得するか決める)まあ実害少なそうなので気が向いたら対応します
キーボード上のLEDの制御
マウス移動速度の変更機能 (現在は1/2固定です)
マウスホイール対応 (マウスホイールが操作されたらカーソルの上下キーを発生させると便利かな、と)
現在どっちのレイヤーがアクティブかを知らせるLEDの追加
マルチメディアキーへの対応