ASkeyboardをUSBの親指シフトキーボードにする その1

ASKeyboard sono1

概要

ちょうど30年前(1988年10月)に当時のアスキー社から発売された親指シフトキーボードのASkeyboard sono1 & sono2 を、現代のHID USBキーボードとして蘇らせる。

  • そのため、まずはASkeyboardのキーボード・マトリックス回路を図面とした。
  • キーボード・マトリックスをスキャンするための回路を、Pro MicroとロジックICを使って実現し、ASkeyboardの内部に収めた。
  • ほぼ親指シフトキーボードとするため、キーボード・マトリックスのスキャン結果をhoboNicolaライブラリに渡し、PCのキーホードとして機能するようにした。

今回はASkeyboardのこと、まだ使えることの確認、キーボード基板の簡単な加工までのおはなし。

※追記

マイコンを32ビット化(SAMD21G18)したはなしを追加しました。

ASkeyboardについて

ASKeyboard sono1
ASKeyboard sono1

ASkeyboard( アスキーボード ) は、昭和の終わりから平成の初期によく使われていたNEC社のPC9800シリーズ用の親指シフトキーボードとして、1988年(昭和63年)の10月にアスキー社から発売された。当時の価格が33,300円で、その頃はPCや周辺装置が今より高価だったとはいえ、ちょっとお高い製品だった。

ASKeyboard sono1
ASKeyboard sono1

裏面のシールには富士通社からライセンスを受けた製品である旨が書かれている。当時一番売れていたパソコン用の親指シフトキーボードの出現が、親指シフトキーボードの標準化や規格化を行う日本語入力コンソーシアム (NICOLA) の設立の契機となったのだと思う。

最初に発売されたのが、テンキーのないコンパクトなキーボードのASkeyboardsono1と、テンキーパッドにあたるsono2。sono2はsono1にケーブルで接続する形態だった。

ASKeyboard sono2 (Dbord)
ASKeyboard sono2 (Dbord)

この写真は、販売が移管されたDigital Wave社のDboard sono2だが、ロゴ以外は同じものだろう。

sono1の発展形として、ASkeyboard de SE(でっせ、と読むらしい)という製品も発売された。de SEの形状はsono1と同様だが、日本語入力コンソーシアムで規格化されたNICOLA配列をうたった製品となっていたように記憶している。また、カナの刻印のないキートップのセットも別売されたりして、Ctrlキーの配置や全体のコンパクトさを活かしプログラマにも訴求しようとしたようだ。

しかしながら、DOS/VパソコンとWindowsの普及により販売には苦労したのだろう。やがて、発売元がアスキー社からDigital Wave社に移って製品名も Dboard となり、次にリュウド社に移管されてRboardとなった。Rboardでは、内部のマイコンを変更したMacintosh対応版も発売されていた。

ASkeyboardの特徴

親指シフトキー

大きな特徴はなんといっても専用の親指シフトキーを備えた、親指シフトキーボードだったこと。そして、テンキー別体型のコンパクトキーボードだったことの二点だろう。

ASKeyboard sono1
ASKeyboard sono1

下段の中央には左右の親指シフトとキーと無変換キー、変換キーか配置されている。これは富士通社のワープロOASYSやFMシリーズパソコンの親指シフトキーボードモデルを踏襲したものだろう。

後退・取消キー
ASKeyboard sono1
ASKeyboard sono1

富士通社の製品で後退キー、取消キーが配置されている位置の2つのキー(右手小指で打鍵)は、英数字のときはJIS配列と同様のコロンやブラケット記号キー、カナのときにBSキーとESCキーとして動作していた。
富士通社の製品では、これらの記号キーを1つ上の段に配置し、後退、取消は入力文字種に関わらず不変だったのに対し、ASkeyboardはJISキーボードの配列を踏襲し親指シフト動作のときにのみBSキーとESCキーとなっていたように記憶している。

キートップの形状と中身
ASkeyboard sono1
ASkeyboard sono1

各キートップは中央がくぼんでいる(端が高くなっている)ので指を載せるべき位置を間違えにくい。さらに、段ごとに高さが異なり上から3段目(Z X C V…)が一番低くなっている。こういう形状のキートップからなるキーボードの形態を、シリンドリカルステップスカルプチャというらしい。

ASkeyboard sono1
ASkeyboard sono1

キートップを裏返しに見たところだが、内部に色の異なる樹脂がはめ込まれているのが分かる。キートップの上には文字や記号といった図形が刻印されているが、実は図形部分は打ちぬかれて素通しになっている。そこに、下から色の異なる樹脂をはめ込んでやることで刻印を実現している(二色成型)。なのでキートップの図形がかすれたり消えたりすることはまずない。ただ、衝撃を与え続けると内側の樹脂が外れることがある。

機能拡張用のALTキー

キーボードの機能を拡張するためのALTキーも用意されていた。現在ならFnキーとするところだろう。

ASKeyboard sono1
ASKeyboard sono1

ALTキーを押しながらファンクションキーを押下することで、コンパクトであるがゆえに配置できないキーを補ったり、ASkeyboard独自の拡張機能を設定することができた。

ASKeyboard sono1
ASKeyboard sono1

ALTキーを押しながらファクションキーのF1~F5を押下するとPC9800シリーズと同様のF11~F15キーとなり、F7~F10は拡張機能の選択用になっていた (F6がHOMEになっている理由はよく分からない)。

  • TAB/カナ
    (想像だが)左端にあるTABキーを、カナキーにする。カナロック(カナLEDオン)のときに親指シフト動作となるので、叩きやすい位置にカナキーを置きたかった?
  • CTRL/XFER
    親指シフトキーの左にあるTABキーをNFER(無変換)、空白キーの右にあるCTRLキーをXFER(変換)キーに割り当てる。こうすることで、オリジナルのPC9800キーボードと似たキー配置になる。この機能が有効なときは、対応するLEDが点灯するようになっていたと思われる。
  • NUM LOCK
    sono1単独でテンキー側のキーコードを出力できるようにする。上の写真のように、キートップ手前側に青色で刻印されているのがNUM LOCK時に有効になるキーだろう。対応するLED有り。
  • KB LOCK
    キーボードロック。キーボードの上に本を置いても大丈夫にするためか。やはり対応するLEDがある。
LED
ASKeyboard sono1
ASKeyboard sono1

PC9801用のキーボードには、カナとCAPSの2つのLEDしかなかった(古い機種では、これらはメカニカルロックキーでLEDもなかった)と記憶している。ASkeyboardにはALTキー拡張機能の明示用に3つ追加されている。

動作設定用のDIPスイッチ
ASKeyboard sono1
ASKeyboard sono1

キーボード右手側側面には、DIPスイッチとSono2を接続するためのコネクタが配置されている。

JISというポジションはカナがオンのときに親指シフト動作せず、ふつうのPC9800用キーボードとして動作するモードと思われるが、親指Iと親指IIの違いはなんだろう。後退キー、取消キーあたりに相違があったように記憶しているのたが、もう覚えていない。

ASkeyboardは元祖親指エミュレーションプログラム?

ASkeyboard sono1は、PC9800シリーズにあった「カナ」ロックがオンのとき、親指シフトキーボードとして動作していた。本体側に何もプログラムが必要なかったことから、キーボードマイコンの中で、親指シフト同時打鍵によって生じる文字や記号を、PC9801が期待するスキャンコードで表現し、結果として親指シフト入力が成立するような仕組みになっていたと考えられる。

PC9801でカナがオンの場合、H と刻印されているキーを押せば「」になるのが普通だが、親指シフトならば「」が出なければならない。
JISカナで「」は F の位置にあるから、ASkeyboard は、Fキーに対応するスキャンコードを送っていたと思われる。
また、親指シフトキーボードで上段の 1キーを同時打鍵で入力すると記号が出てくるが、JISカナ配列には記号はないから、一度カナロックを解除し、SHIFTキーをオンにしてスラッシュ記号(/)キーのスキャンコードを送る。そして、SHIFTキーをオフにしカナロックを戻すという手順になるだろう。

こういった一連の手順は、その後Windows他の動作環境用に生まれた親指シフトエミュレーションソフトと同じ技法だろう。今やるならば、カナがオンのとき英数側記号を表現するにはJISかな前提でやるよりローマ字を使った方がやりやすいわけだが、当時のMS-DOS環境では考えににくかったと思われる。


写真を見ても分かるように外観上はとても状態がいいので、このキーボードをUSB HIDキーボード化し、ほぼNICOLAキーボード(この場合は、ほぼ親指シフトキーボードか)として復活させることにした。

ASkeyboardの中身について

sono1とsono2の中身を見るとこんな具合になっている。

キートップを外したsono1

30年前から数年間使いこんだものなので、キーボート基板をボディから抜き、キートップをきれいにするために外したところ。分解作業はネジを何本か外すだけでなんの苦労もなく行える。

ASkeyboard sono1 基板
ASkeyboard sono1 基板

全部で88キーでキーボード基板上部左側にi8051用の40ピンソケットがある。キースイッチはアルプス製で、左上のSTOPキーが白軸、他は緑軸だった。大き目のキーにはスタビライザを備えている。キースイッチは頑丈な鉄板に固定されているので、キーを少々強く叩いても基板が撓むようなあやふやな感触はない。そのかわり、このキーボードはしょうしょう重い。
sono2を接続するためのコネクタやDIPスイッチを備えたサブ基板が、フレキシケーブルを介して接続されている。

PC9801との通信やLEDの駆動のために、オープンコレクタドライバの7407が2つ載っている。けっこう電流食いそうである。

ASkeyboard sono1 基板
ASkeyboard sono1 基板

配線面を見るとこんな具合。物理的には88キー分のスイッチしかないが、スイッチ番号は89まである(41が欠番)。

sono2

sono2の方はあまり汚れていなかったので、キートップを外さなかった。全部で20キー。

Dboard sono2
Dboard sono2
Dboard sono2
Dboard sono2

スイッチには1~19まで番号が振られており、メカニカルロックのCURLOCKキーのスイッチ番号が90番になっている。スイッチ2の上に番号のないダイオードが入っており、スイッチの数より1つ多い。

マイコン

intel 8051シリーズは前にけっこう使っていたので、思い出の品(?)としていくつか手元に残っていた。

intel 8051
intel 8051シリーズ

写真一番下が、sono1に入っていたマスクROMバージョン(80C51B)で、上の2つはPROMバージョン(87C51)。このPROMに何が入っているのか、もう忘れてしまった。

印象として、キーボードに高価だった8051を使うのは贅沢だと思う。

キーボード・マトリックスの回路

とりあえず、キーボード・マトリックスがどうなっているのか分からなければキーのスキャンもできないので、キーボード基板を目視と導通チェッカーで追って回路図にした。 言うまでもないが、この図面が正しい保証はありません。

Askeyboard_keymatrix
Askeyboard_keymatrix

左端のS1~S15、D1~D8、L1~L5には、8051のピン番号も記載した。

本体のsono1側は8行×12列構成、テンキーのsono2側は7行×3列構成となっている。この構成のマトリックスをスキャンするならば、S1から順に0(他は1)を与え、すべての行(D1~D8)を読む処理を15列分繰り返す。行データを読んだとき、0になっている行と、0にしている列が交差する位置のスイッチが押下されていることになる。

3ポジションある側面のスライドスイッチもマトリックの一部になっているので、スイッチポジションもスキャン時点で検出することができる。
また、テンキー側はスイッチ21相当部分(図ではTSW20)が常時接続となっているので、テンキーが装着されているかどうかをスキャンごとに検出することも可能になっているようだ。

5つあるキーボードLED(L1~L5)も点灯するようなら使いたかったので、7407や抵抗も図面にした。LEDの直列抵抗には点灯色に応じて、220Ωおよび280Ωのものが使われている。当時のLEDはこれくらいの抵抗が必要だったんだろうか。7407とあわせて電流食いそうな部分である。

Pro Microを使った接続回路

ASkeyboard を親指シフトキーボードとして動かすためには、USBやPS/2のキーボードをほぼNICOLAキーボード化し、USB HIDキーボードとして振舞わせる hoboNicolaライブラリ を利用することになる。ということとは、Pro Microをマイコンとして使うことになるのだが、どう考えてもキーボード・マトリックスをスキャンするためのGPIOポートが足りない。
そのため、ラインデコーダICの74HC138Aを使うことにした(秋月の商品ページにあるデータシートはこちら)。

A_PRO_MICRO_Askeyboard1

74138は、基本的に3ビットの入力をデコードし8つある出力ポート(/Y0~/Y7)のうちのいずれか1ポートをLとする(他はH)。今回の回路のように2つ並べた場合、G1と/G2 というイネーブル用の入力を利用することで、4ビットの入力から16ポートのうちの1ポートのみをLとすることができる。ASkeyboardの列の選択にちょうどいい。
図面では、スキャン列の番号(1~15)をほぼそのまま与えられるようPB1~PB4に接続した。これで列側に必要な15本がPro Microの4ポートで片付く。

読み取り用のD1~D8については、読んだ後のビット操作が少なくて済むようPD1~PD4とPF4~PF7に接続した。今回の図面では、Arduino のデジタルピン、アナログピンという書き方はせず、Pro Microの端子に接続されているATmega32u4のGPIOポート表記にしている。GPIOレジスタをそのまま読み書きした方が分かりやすいから。

そして、あまったGPIOピンをLED用の7407に接続することにした。それでもPB5は接続無しとなった。

なお、ArduinoでのTX, RXをGPIOポートとして使っても、Pro MicroのUSBを介したSerial入出力には影響しない。

試作

とりあえず、上記の回路をブレッドボードに組んでワイヤでキーボード基板に接続した。Pro Micro は+5V/16MHz版を使う。ジャンパJ1にはハンダを流し、VCC と USB Vbus を直結している。

試作回路
試作回路

Pro Microとの接続も少ないのでとてもすっきりしている。これをキーボード基板のマイコンソケットに接続すると以下のようになった。

試作回路
試作回路(LED用の結線がない状態)

Pro Microにキーボード・マトリックスのスキャンと、スキャンして得たスキャンコードをシリアルモニタに表示するスケッチを入れ、すべてのキースイッチが機能することを確認した。

キーボード基板の水晶やコネクタは不要なのだが、この時点ではまだ外していない。

ASkeyboard LED
ASkeyboard LED

LEDの点灯もうまくいった。5つのLED を点灯させたとき、キーボード基板には約80mAの電流が流れた。Pro Microの電源部には350mAでトリップするポリスイッチか載っているが、Pro Micro自体とロジックICの消費電流を加えても、問題ないレベルだろう。

不要な部品を外す

上記のブレッドボード相当の基板を手作りし、キーボード基板の40ピンソケットの位置に配置しようとしている。そのため、キーボート基板から接触しそうな不要な部品を外した。

ASKeyboard sono1
ASkeyboard sono1 基板
ASkeyboard sono1 基板
ASkeyboard sono1 基板

キーボード基板はスルーホールではない片面基板なので、基板裏側のハンダを外して部材を抜いていけばよい。はんだ吸取線(goot wick) を押し付けながらハンダゴテをあてたが、ふだん使っている30Wでは時間がかかるので、60Wのものを使った。

ASKeyboard sono1 基板
ASKeyboard sono1 基板

そして、ソケット以外の部分にはアセテート絶縁テープを貼って予期せぬ接触から保護した。40ピンソケット上部の黄色い部材は22KΩの集合抵抗で、キーボード・マトリックスのデータ側(D1~D8 )に接続されている。

きょうのまとめ

ASkeyboardの発売当初から数年間、このキーボードにはとてもお世話になった。その後忘れていたのだけど、思い出の品として部屋の片隅に埋もれていたのを発掘した。

当初はキーボート側には一切手を入れず、PC9801とのインタフェースを受けるようにしようかと思ったのたけど、キーボード内部でPC9801用のエミュレーションをされてでてきたコードをHID化していくのは厄介だろう。hoboNicolaライブラリにキーボード・マトリックスのスキャンを行う実例を追加するのもいいかと思ってPro Microを埋め込むことにした。

次回は、キーボードの中に収める手作り基板の話とキーボード・マトリックスのスキャン、hoboNicolaライブラリを使ったほぼ親指シフトプログラムの話になる予定です。