キーボード」カテゴリーアーカイブ

FM TOWNSキーボードのUSB変換(続2

大型の台風接近で折角の祝日に外出もままならないので、FM TOWNS用USBキーボードアダプタのキーマップカスタマイズ対応を行いました。

実際手を動かしてコードを書くまでは「USB HIDプログラミングって何か難しそう」という印象だったのですが、ネットで公開されているサンプルを参考に試行錯誤するうちにあっさり対応出来ました。なんだ、HIDクラス使うのって結構簡単じゃん(笑

見た目がダサいですがWIndows側のアプリです(汗。さすがにキー1つずつ変換定義を入力するのは面倒と思いましたので、全キーの変換定義を記したファイルを一気に流し込めるようにしています。キー変換定義はPIC内蔵のEEPROM に記録しています。

今回、Windows側アプリはVB.NETで作成しました。こうした小物を作成するならVB.NET(や、今回は使ってないけどC#)は優秀だと感じました。VisualStudioのExpress版を無償で公開しているMicrosoftに感謝です。

 

FM TOWNSキーボードのUSB変換(続

ついかっとなって買ってしまった。少し後悔している

FMT-KB205、いわゆる親指シフトキーボードです。もともとアダプタはJISキーボードと親指シフトキーボードを自動で判別してキー配置を個別に対応していたんですが、実機確認のために買ってしまいました。 案の定、キーコード変換のバグが見つかったのでやはり実記動作確認は大切です。

FM TOWNS用のキーボードはALTキーが存在するもの(FMT-KB107、FMT-KB207など)と、ALTキーが存在しないものがあります。今回購入したFMT-KB205はALTキーが存在しないキーボードです。今時のWindowsで使うのにALTキーが無いのはさすがに辛すぎます。JISキーボードは最下段のキーに余裕があるので振り替え可能なんですが、今回のFMT-KB205は最下段に最低限のキーしかないのでALTに振り返られそうなキーがありません。

また、左側の「英字、カタカナ/英小文字」キーや、親指シフトキーボードを最も特徴付けている「親指左、親指右」をUSBキーボードのどのキーにマップするかも悩ましいところです。この辺り、多分使う人によって好みが大いに分かれそうです。

やっぱりキーマップのカスタマイズ機能は必須かなぁ。JISキーボードだとあんまり必要性感じないんですが、親指シフトキーボードだとカスタマイズ機能が無いと辛そう

 

追記
結局キーマップのカスタマイズ機能もつけました

 

IBM 1394099

IBM の 3471/3472 というターミナルマシン専用のキーボードを購入しました。こんなやつです

でかい、でかすぎる

24個のファンクションキー、左端に5×2列のキー、カーソルキーが5キー構成というのはまさに日本IBMの5576 keyboard1を彷彿とさせるキー配置です。そういえば5576 keyboard1もAS/400用の端末に繋がってたりしました。まあ、どちらかが先行するモデルを模した結果、同じ配列になったんだと思いますが。

オークションで中古が開始価格50円で出品されていたので試しに2つ入札してみたら、そのまま50円で落札出来てしまいました・・・。送料安かったからいいんですけど。中古という事でしたが、綺麗な専用の箱&発泡スチロールに収まっていて、キーボード自体にも殆ど汚れが無く新古品か、限りなく使用頻度の低い中古という感じです。

こいつはかのModel Mキーボードと同じ、バックリングスプリング採用のキーボードです。真っ直ぐに立ったバネに対して上から加重をかけていくと、ある時点でバネがヘニャっと折れ曲がるという仕組みをキーに利用しています。日本IBMから出ていたキーボード、5576-A01もバックリングスプリングを用いていますがこいつやModelMとはキータッチが大いに異なります。ちなみにコイツは Made in UKです。

 

専用ターミナルとの通信自体はPS/2と同じ電気特性、プロトコルのようですが、いかんせんコネクタがRJ-45です。また、PS/2キーボードとしては珍しい、codeset3のキーコードを返すらしいです。そこで以下のような変換アダプタを用意しました。

キーボードコネクタは秋葉原の秋月電子で「LANコネクタDIP化キット」を購入、マイコンはストロベリーリナックスさんの「ダ・ヴィンチ32U」というATMEGA32U4マイコンボードです。とりあえず実験なのでブレッドボードで組みましたが、LANコネクタとマイコンボードを4本(5V, GND, CLK, DATA)繋ぐだけで変換アダプタとして動きました。

秋月のLANコネクタDIP化キットを使った場合の配線ですが、コネクタを背面から見て左端を1pin、右端を8pinと数えた場合に次のようになります

1,2pin 未使用
3pin 5V
4pin DATA
5pin CLK
6pin GND
7,8pin 未使用

正直、今となってはバックリングスプリングのキーボードはちょっとキータッチが重すぎますね。あと、タイプ音が大きいです。バネがカシャカシャ鳴る音が結構響きます。昔はメインキーボードとして5576-A01を使っていましたが、最近はずっとALPS軸のX68000キーボードばかり使っているので1394099のキーは私にはちょっと重い感じです。あと大きすぎ

今でも人気があり、オークション等ではそれなりの価格で取引されている Model M と同じキータッチのキーボードが超破格値で入手出来た事で満足です

 

ちなみにカーソルキーの上部にある機能キーの一つですが

一見、棒人間のような謎の記号キー。本来のターミナルにおいてどのような役割のキーだったのか、私、気になります。マルチステーションのキーボードと見比べる限り、コピー/連続コピーでしょうか?

FM TOWNSキーボードのUSB変換

出来ました

と言いたい所なんですが、VUSBに繋ぐ0.22μFのコンデンサがストック切れてた・・・ とりあえず0.1μFを付けておいたけど、推奨は0.22~0.47μFなので後日付けなおす予定。

キーマップのカスタマイズ機能かー。折角のUSB接続なんだし、定義ファイル(キーマップをカスタマイズしたEEPROMのHEXファイルとか)をUSBから流し込めるようにした方がいいのかな。HID BootloaderとWin側の更新プログラムの両方修正が必要になるけど。

EEPROMだけピンポイントに更新出来るようにして、キーマップ情報をEEPROMに流し込むほうが楽かも。

 

追記
親指シフトキーボードで動作確認しました

 

elecrow

出荷したよ 出荷依頼をしたよ メールが来ました(まだTrackingNoは発行されてないですが)

スルーホールの長穴も問題なく処理されてるように見えます。発送はDHLで頼んだので週明けには届くかな。ちなみに今回のステータス遷移は次の通り。InProductionからShippinngまで週末を挟んで7日。

09/19/2014 Confirmed
09/19/2014 Confirmed
09/19/2014 Processing
09/20/2014 PCB Processing
09/20/2014 In production
09/27/2014 Shipped

初めてelecrowに頼んだ時が週末を挟んだにもかかわらず3日(!)だったので、ちょっと時間がかかった感じが。

07/24/2014 Confirmed
07/24/2014 Confirmed
07/24/2014 Processing
07/25/2014 In production
07/28/2014 Shipped
07/29/2014 Traceable

 

USB変換アダプター

私的メモ。簡単に作れそうな目処がたってるのは

  • sun type4/5 keyboard to USB(1200bpsのシリアル。ただし極性反転。これはPICなら余裕)
  • PC-9801 keyboard to USB(19200bpsのシリアル)
  • PS/2 keyboard to USB(IBM 5576-001/002/003への対応に需要あり?)

あとは、X68000キーボードのシリアル変換。xm6系エミュレータのtrue-keyアダプタとして使えるやつ。でも私自身があんまり必要としてないしなぁ。

あと、ALPSオレンジ軸のあれを買ってしまいました

確かにキータッチはいいんだけど、このControlの位置は無いわー。Apple Keyboard (M0116)はAの横がControlなのに、なんで型番1つ違いの拡張キーボード (M0115)は左下隅に追いやってしまったのか。

まあ、USB変換アダプタ側でcaps lockとcontrolを入れ替えることは出来るけど、Macのキーボードのcaps lockはメカロックだからなぁ・・・

 

FM TOWNSキーボードのUSBアダプタ

手元にFM TOWNS用のJISキーボード、FMT-KB107があるのでPCにUSB接続する為の変換アダプタを作ってみました。

例によって使っているのはPIC18F14K50です。キーボード側のコネクタがヒロセのHR12というあまり流通してないタイプなので入手に苦労するかも知れません。秋葉原なら西川電子の2Fで300円弱で購入出来ました。

FM TOWNS用キーボード、および互換性があるキーボード(FMR用とかOASYS用とか結構あるらしいです)の仕様は

  • 9600bps
  • スタートビット1、ストップビット1
  • 偶数パリティ

というごく一般的なシリアル通信らしいので、PICのUSARTでお手軽に処理しています。この辺はX68000キーボードのUSB変換アダプタと同じです。

あくまでFM TOWNS用JISキーボード専用です。親指シフトキーボードは配列が異なる上に返すスキャンコードも異なるので対応していません。(HID キースキャンコードへのマッピングをどうするか、と言うだけの話ではありますが、手元に実機が無いので)

また、FM TOWNSは非常に多くの種類のキーボードが発売されたようで、この変換アダプタで対応可能なのは

  • JISキーボード、テンキーあり、拡張キー(?)あり (FMT-KB107)
  • JISキーボード、テンキーあり
  • JISキーボード、テンキーなし

あたりではないかと思います。もしかしたらFMR用のJISキーボードやOASYS-100シリーズ用のJISキーボードも使えるかも知れません。

それにしてもカーソルキーが返すスキャンコードが独特で、赤本(アスキー出版局刊、テクニカルデータブック)が役に立ちませんでした。あと、赤本によればスキャンコード1byte目にはSHIFTキーやCTRLキーの押下状態が格納されているらしいのですが、ロジアナで見る限りそのような事はありませんでした。ちょっと意味不明です。

 

追記
プリント基板で作ってみました