PC-9801キーボードを98配列のUSBキーボードにするアダプタ

本アダプタの配布は終了しました。
なお、他のアダプタ(ADB用等)購入時に一緒に購入を希望する場合、および過去に購入された方の再購入に限り限定的に配布します。本アダプタ単体での配布は終了していますのでご了承願います。

 

NEC PC-9801用キーボードをUSB接続化するアダプタ改め、PC-9801用キーボードを98配列のUSBキーボードにするアダプタです。同じ事を言ってるように聞こえるかも知れませんが微妙に違います。
なおこれまでどおり日本語106/109キーボードとして使うことも出来ます。

usb2pc98_1_small

アダプタ外観

usb2pc98_2_small

ケースはありませんので、このように熱収縮チューブで絶縁しています。

 

 

概要

  • PC-9801用キーボードをUSB接続に変換してPCで使用可能にします。
  • 98配列のUSBキーボードとして使用することが出来ます。この場合
    ・テンキーイコール、テンキーカンマは正しくテンキーとして機能します
    ・Shift + @は「~」、Shift + ^ は「´」の入力になります
    ・CAPSキーはShift同時押しではなく単独押下で機能します
    ・CTRL + XFER で IMEの切り替えが可能です
    Windows10 Windows8以降のOSでの使用はかなり厳しい制約があります。必ず仕様制限事項をお読み下さい。
    なお従来どおり日本語106/109キーボードとして使う分にはWindows8以降でも全く問題ありません。
  • 設定ツール(Windows用)を使ってユーザがキーマッピングを自由に変更出来ます。設定内容はアダプタに記憶しますので、一度設定を行えばアダプタをどのPCで利用してもお好みのキーマップでキーボードを操作出来ます。ドライバ等をインストールする必要もありません。設定変更を行うPCとアダプタを運用するPCが異なっても構いません。
  • 任意のキーを機能キー(いわゆるFnキー)に設定する事が可能です。機能キーと任意のキーの組み合わせで別のキーのキーコードを発生させる事が出来ます。キーが少ない旧世代キーボードを使用する場合にキーの少なさを補えます。
  • Fnキーは単独で設定する(Fnキー専用に設定する)ことも、ワンショットモデファイアキーとして設定することも出来ます (例えばNFERキーを『単独押下で無変換キー、別のキーとの同時押下でFnキーとして使用』など)

 

PC-9801用キーボードは非常に種類が多く、サードパーティからも互換キーボードが発売されていますが、本アダプタは以下のキーボードを対象としています

  • PC-98XL、PC-98XL2 付属のキーボード
  • PC-9801RA/DAからFELLOWシリーズ以前のマシンに付属のキーボード。(キーボードにCAPSとカナのLEDが付いている。CAPSキーとカナキーは機械式ロックではない。キーボードの筐体が下部はグレー、上部は白のツートンカラーになっている。キーボード右上に「PC-9801 R」「PC-9800 SERIES」とプリントされている)
  • Winキーの付いた純正キーボード
  • PC-9801用テンキー、PC-9801LS-01 および PC-9801n-23

上記以外のキーボードについては動作確認が取れておらず、動作を保証致しません1 。 国民機(EPSON互換機)に付属のキーボードに付いても動作は保証致しません。

 

お断り

本アダプタは同人ハードです。それなりのテスト期間を設けて動作確認を行っていますが、あらゆる環境において必ず動作することを保証するものではありません。

いかなる場合においても、本アダプタを使用したことによって生じた逸失利益、特別な事情から生じた損害(損害発生について予見し、または予見し得た場合を含めて)、および第三者からの損害賠償請求に基づく損害について、使用方法を問わず当方は一切の責任を負いません。

動作確認は自作Windows機 (Windows7 64bit / Windows8.1 64bit / Windows10 64bit)、ノートパソコン(Windows7 32bit、WindowsXP 32bit)、Androidタブレット(SHARP SH-08E)で行っています。

組立てには有鉛ハンダを使用しています

予告無く仕様、本ドキュメントの内容を変更する場合があります

 

使い方

アダプタにキーボードを繋いだ後、アダプタをUSBケーブルでPCに繋いでください。アダプタが通電している状態でキーボードを繋がないで下さい。

アダプタにキーボードを繋ぐ際は、キーボードコネクタをしっかり保持してケーブルを差し込んでください。コネクタ抜き差しが若干固めですので、コネクタにストレスがかかるような抜き差しは控えて下さい。

正常な状態ではアダプタのLEDが約1秒周期で点滅します。加えて、キーボードのキーを操作するとそのタイミングでLEDが変化します。

 

キー配置

pc-9801r_map

PC-9801Rキーボードに置けるデフォルトのキーマップです。(後述の変更ツールで任意に変更可能です)

  • テンキー カンマ、テンキーイコールについては98配列USBキーボードとして使用する場合はそのまま刻印どおりの入力となります。日本語106/109キーボードとして使用する場合は入力出来ません。
  • ROLL UPにはPage-Downを、ROLL DOWNにはPage-Upを割り当てています。

 

仕様制限事項

Windows8以降のWInOSでの使用について (98配列キーボードとして使う場合の制限)

非常に残念ながら98配列のUSBキーボードとして使用する場合、Windows10 Windows8以降のWinOSとの相性はあまり良くありません。当方で確認する限り以下のような現象が発生します。

 1.PC起動→ログイン直後は98配列キーボードではなく106/109キーボードとして誤認される

これは面倒ですが一旦サインアウトして再度ログインしなおすことで一応正しく98配列キーボードとして認識させることが可能です。ただし・・・

 2.USBケーブルを抜いて挿し直すとまた106/109キーボードとして誤認される

おのれWIndows・・・

 3.ストアアプリ、検索窓、EDGEといったユニバーサルアプリ上では常に106/109キーボードとして動く

多分回避方法は無く、かつ今後対応される見込みも無いと思われます。さらに

 4.なぜかFirefox49でも106/109キーボードとして認識される

Firefoxはユニバーサルアプリではないように見えるんですが・・・
一応過去のバージョンのFirefoxなら正しく98配列キーボードとして使用出来ました (Firefox ESR45なら正しく98配列キーボードとして入力出来ることを確認しています) 。あるいはgoogle chromeなら最新版でも98配列キーボードとして使用出来ました。 特定のバージョンでのみ起きる不具合のようです。最新版のFirefoxなら問題なく98配列キーボードとして使えました。

と言うわけで現状なかなか厳しい状況であると言わざるを得ません。今後ストアアプリが幅を利かせるようになってくるとさらに辛い状況になると思われます。

なお日本語106/109キーボードとして使う分には何の問題もありません。

2016/11/05追記
Windows10での制約から、Windows8以降のWinOSの制約に記述を変更しました

Windows10での使用について (スリープ解除について)

本アダプタをWindows10で使用する場合、環境によってはスリープ解除が正しく機能しない場合があるようです。(スリープしてもすぐに勝手に解除される、等)
このような症状が出た場合はキーボードの電源管理プロパティタブにある「このデバイスでコンピュータのスタンバイ状態を解除できるようにする」チェックボックスをオフにして下さい。

keyboard_property

CAPSキー、カナキーの取り扱いについて

PC-9801キーボードのCAPSキーとカナキーは、キーを押し下げた際に「キー押下」の信号が発生しますが、キーを離しても「キー開放」の信号が発生しない特殊なキーです。もう一度キーを押し下げて「キー開放」の信号が発生します(旧世代キーボードは機械式、RDFキーボード以降はソフトウェア的にトグル動作)。この仕様はUSB変換にとって少々不都合があるため、アダプタ内で特殊処理を行っています。

キーを押すと「キー押下」「キー開放」の両方がPCに通知されます。キーを離した際も離したタイミングで「キー押下」「キー開放」が通知されます。

なおこの仕様によりCAPSキーとカナキーについては押しっぱなし動作は出来ません。実用上、CAPSとかなにはAltやShift、Ctrlは割り当てることが出来ないと考えて下さい。

キーリピート処理について

PC-9801キーボードはキーを押しっぱなしにした際のキーリピート処理をキーボード内マイコンが行っていますが、その処理が

   押下 ────── 開放&押下 ── 開放&押下 ── 開放&押下 ── ・・・ ── 開放

と、キー開放とキー押下のペアを繰り返し発生させる方法を取っています2。一方でUSBキーボードにおけるキーリピート処理はOSが担当しており、キーボードは最初の押下と最後の開放だけをホストに通知する仕組みです。本アダプタは電源投入時の初期化処理の際にキーボードによるリピート処理を禁止するコマンドを送っています。

ただしこのコマンドはPC-9801R/SERIESキーボード以降にしか存在せず、これ以前の旧世代のキーボードには存在しないコマンドです。よって旧世代キーボードについてはキーボードによるリピート処理が機能してしまいます。この結果キーリピートがやや不均等な間隔で発生します。ゲーム等で不都合が生じる可能性があります。

また、旧世代キーボードは機能キー(Fnキー)を使用することは出来ません。  旧世代のキーボードでFnキーを使ってみたら案外普通に使えました。(キーを押してから最初のリピートが発生するまで500msあるので意外とどうにかなりそうです)

一部キーに付いて刻印どおりの入力とならない(106/109キーボードとして使用時)

本アダプタを 「日本語109キーボード」 変換アダプタとして使用した場合は、 [SHIFT + @] で入力されるのは [´] であり、[SHIFT + ^] で入力されるのは [~] です。PC-9801キーボードのキー刻印と逆の入力になります。

「98配列USBキーボード」として使用する場合はキートップ刻印どおり [SHIFT + @] で入力されるのは [~] となり、[SHIFT + ^] で入力されるのは [`] となります。

LED制御について

キーボードのLEDは現在のファームウェアでは一切制御していません。

USBサスペンドについて

本アダプタはUSBデバイスサスペンド動作を行いません。USB2.0の仕様ではUSBホスト (PC) がスリープ状態となったらUSBデバイスも速やかに省電力モードに移行すべしと定められていますが、本アダプタはUSBホストがスリープしてもそのまま通常モードで動き続けます。また、キーボードに対して給電し続けます。ノートPCやタブレット等バッテリ消費が気になるデバイスでサスペンドを多用する場合はご注意下さい。

テンキー PC-9801n-23 のキー『000』について

このキーはテンキー内部でテンキー「0」の打鍵を3回発生させることで実現しています。よってテンキー「000」 に限りキーのマッピングは出来ません。また、テンキー「0」のマッピングを変更するとテンキー「000」も影響を受けます。

Fnキーをワンショットモデファイアキーに設定した場合の制約

Fnキーをワンショットモデファイアキーに設定した場合(単独打鍵時と組み合わせ打鍵時で役割を変えた場合)、単独打鍵時はキーを押しっぱなしにしてもリピートは発生しなくなります。また、単独打鍵時はキーを離したタイミングでPCに「キーON & OFF」が通知されます。3

 

キーマップのカスタマイズについて

設定ツールを用いてすべてのキーについてキーマップのカスタマイズが可能です。カスタマイズ内容はアダプタに記録します。

カスタマイズには磁石が1つ必要です。(100均で売ってるような安い磁石で結構です。逆に強すぎる磁石はマイコンに悪影響を及ぼしかねないので使わないでください。試しに昔のiPodに標準で付属してきた白いイヤホンを使ってみましたが、イヤホンから漏れる微弱な磁気でもOKでした)

なおカスタマイズ中は本アダプタに接続したキーボードは使用出来ません。(事前にカスタマイズの内容を書いた設定ファイルを用意しておけばマウス操作だけでカスタマイズ可能です)

キーマップのカスタマイズには専用の設定ツールを使用します。事前にダウンロードしてください。また、サンプル設定ファイルもダウンロードしてください。解凍すると以下のファイルが入っています

  • configtool.exe (設定ルーツ本体)
  • config_pc98xl.txt (PC-98XL付属キーボード用設定ファイルサンプル)
  • config_pc9801rdf.txt (PC-9801R/SERIESキーボード用設定ファイルサンプル)

設定ツールはWindows7 / Windows8.1 / Windows10 で動作確認を行っています。なお、実行には .NET Framework 3.5 がOSにインストールされている必要があります。Windows8.1 /10 については設定ツール実行時に.NET Framework3.5 の導入を求められる場合があります。

メンテナンスモードでアダプタを立ち上げる

設定ツールを使用するためには変換アダプタをメンテナンスモードとする必要があります。

config-sw

左側のコネクタがキーボードコネクタ、右側がUSBコネクタです。通常はカバーに覆われて見えませんが、基板中央のやや左寄りにある黒い小さな四角(黄色矢印の先にある部品)が磁気スイッチです。ここに磁石を近づけた状態でアダプタをPCに接続するとメンテナンスモードで起動します (通常LEDは1秒周期で点滅しますが、メンテナンスモードで起動するとアダプタのLEDが高速で点滅します)

設定ツールの使い方(キー個別設定)

1. アダプタがメンテナンスモードになっている状態でconfigtool.exeを起動します

configtool_1

2. 接続ボタンをクリックします。正常に接続できたらステータスバーに「接続しました」と表示されます。また、各ボタンが有効となります

3. ADRと書かれた入力欄にはPC-9801キーボードのキーコードを16進数で入力し、VALと書かれた入力欄にはキーを押下した際にPCに通知したいキーのキーコード(= USB HID キーコード)を16進数で入力します。

両方の入力欄にコードを入力したら [W] ボタンをクリックして設定をアダプタに記録します。設定が正しくアダプタに記録されたらステータスバーに「設定完了」と出力されます。

なお、ADRの入力欄に98キーボードのキーコードを入力して [R] のボタンをクリックすると、現在の設定値を読み出してVAL欄に表示します。

PC-9801R/SERIESキーボードのキーコードは以下のとおりです。4

pc-9801r_sc

PC-98XLキーボードのキーコードは以下のとおりです。

pc-98xl_sc

Winキー付きキーボードのキーコードです。Winキー付きキーボードは左右のSHIFTキーのコードが異なる点に注意して下さい。5

pc-9821win_sc

 

USB HID キースキャンコードの一覧はこちらです

設定例) NFER キー(キーコード 0x51)を “無変換” キー(キーコード 0x8B) に設定する
configtool_2

 

※ 機能キー (Fnキー) について

FnキーはPC-98XLキーボードでは使用出来ません

Fnキーの機能を使うには、Fnキーとして使いたいキーのキーコードをADR=80に設定して下さい。例えば NFERキー(キーコード 0x51)をFnキーにする場合は ADR=80, VAL=51 と設定します

設定例) NFERキー(0x51)をFnキーにする
pc98_nfer_fn

Fnキー機能を使わない場合はADR=80を0x00に設定して下さい

Fnキーに指定したキーを単独打鍵時は別のキーとして使用したい(ワンショットモデファイアキーとしたい)場合は、そのキーのキーコードを適切に設定して下さい。Fnキー専用にする場合は0xFFに設定して下さい。

例) NFER(0x51)を

a. Fnキー専用にする

ADR=51, VAL=FF
ADR=80, VAL=51

b. 単独打鍵時は無変換(0x8B)、別のキーとの同時押しの場合はFnとして使う

ADR=51, VAL=8B
ADR=80, VAL=51

c. 常に無変換(0x8B)として使う。Fnキーの機能は使わない

ADR=51, VAL=8B
ADR=80, VAL=00

 

各キーのキーマップ設定時 「Fnキー同時押し」のチェックボックスにチェックが入っていると、機能キーと一緒に押下した場合にPCに通知されるキーの設定となります。例えば「Fnキーとフルキー [1] の同時押しで [F1] 押下とする 」設定は以下のようになります。

設定例) Fnキーとフルキー1 (キーコード 0x01) の同時押しをF1キー (キーコード 0x62) とする
configtool_4

4. 変更したいキーについて設定が完了したら、最後に「有効化」ボタンをクリックして下さい。これでカスタマイズ設定が有効になります。逆に設定を無効にしたい場合は「無効化」ボタンをクリックします。(無効化を行ってもカスタマイズの内容は記録されたまま残っています) 特定キーについてのみ設定をデフォルトに戻したい場合は VAL に0x00 を設定して下さい。

5. 有効化を行ったら最後にResetボタンをクリックするか、本アダプタを一度PCから抜いて再度接続してください。アダプタが通常モード(LEDの点滅が1秒周期)で起動し、キーボードからのキー入力が正常に行える事を確認してください。

 

設定ツールの使い方(一括設定)

事前にキーマップの設定ファイル(テキストファイル)をテキストエディタ等で作成し、それをインポートする事で複数キーの設定を一括して行う事が出来ます。 正直なところ、全てのキーについて個別に設定なんか面倒臭くてやってられないと思います・・・

;
; 設定ファイルサンプル
;
00,A5
;
01,1E   ; フルキー1が押されたらPCに “1” を通知
02,1F
03,30
04,21
51,8B   ; NFERキーを無変換キーに設定
;
80,51   ; NFERキーをFnとして使用
;
81,62   ; Fnキー同時押しは元のキーコード(0x01)に0x80を足した値(=0x81)を左側に記述

 

設定ファイルは1行に1キー分、 「<キーボードのキーコード>, <USB HIDキーコード>」 の書式で記述します。キーコードは16進数で記述します。また、セミコロン以降の文字はコメントとして無視します。行頭にセミコロンを書いた場合は行全体が無視されます。

なお設定ファイルを使って一括登録を行う場合、Fnキー同時押しの定義についてはキーボードのキーコードは「元のキーコード + 0x80」として下さい。 例えば、フルキー1(キーコード 0x01)と機能キーの同時押しでF1(キーコード 0x62)を発生させる場合、定義ファイルには “81,62″ と記述します。(0x01 + 0x80 = 0x81)

具体的なツールの使い方は前述の “設定ツールの使い方(キー個別設定)” とあまり変わりませんのでそちらを参照して下さい。唯一、手順 3について

個別設定 → ADRとVALに値を入れてW ボタンをクリックする
一括設定 → importボタンをクリックして定義ファイルを指定する

と読み変えて下さい。設定ファイルをインポートした後は個別設定と同様に有効化とリセット(あるいはUSBケーブルの抜き差し)を行ってください。

その他設定ファイルの細かい仕様については、サンプル設定ファイル内のコメントも参考にして下さい。

 

配布について

メールにて在庫を問い合わせください。送料込み1個3000円です。また、Yahooオークションに出品していることもありますので合わせてご利用ください → Yahooオークションサイトへ移動
通常配布は終了しました。

 

ダウンロード

ダウンロードパスワード、解凍パスワードは共通で 「d*******t」 です。(お求め頂いた方へ個別にご案内させて頂きます)

(2015.11.18 追記)
設定ツールについて、.NET Framework 2.0 環境で動くかもしれないバージョンを作成しましたので実験的に置いておきます。こちらのバージョンならWindowsXP、Windows2000SP4でも使えるかも知れません。当方XP環境で使用出来る事のみ確認しました(が、この環境には既に.NET3.5も同時にインストールされているので厳密な確認とは言い難いです)

USB変換アダプタ設定ツール for .NET Framework 2.0 (experimental)

 

 

ファームウェア更新履歴

1.2ex2
(20161106)
  • USB2PC98 ファームウェア v1.20ex2
  • 実験的リリース
  • キーボード世代設定の初期設定を間違えていたミスを修正
    ファームウェア更新直後は旧世代キーボード対応となります(キーボードによるキーリピートあり、Winキー無効)
  • USB VendorID/ProductIDについて、EEPROMにテスト用カスタムIDを書いたままBuildしていたミスを修正

1.2ex1と1.2ex2の違いはファームウェア更新直後のEEPROMの内容の変更のみです。現在すでに1.2ex1へ更新している方は1.2ex2へ更新する必要はありません。

1.2ex1
(20161008)
  • 実験的リリース
  • Fnキーの指定方法を変更
  • Fnキーをワンショットモデファイアキーとして使えるように対応
  • キーボードとの通信方法を見直して少しだけ安定化
  • テンキーPC-9801n-23の「000」キーの入力が稀に “00” になる不具合を修正
  • DIPSWの役割を再変更
  • 右SHIFTのキーコードを内部処理の都合で0x7Dから0x75へ移動
  • 10個の組み込みマクロキーを実装
  • 設定ファイルサンプル添付
1.1ex1
(20160920)
  • 実験的リリース
  • キーボードによるスリープ解除に対応
  • Fnキー使用時、キー開放順序によってはキーが押しっぱなしになる不具合への対応
  • ドライバ開発等を目的として、USB VendorID/ProductIDを任意に設定する機能を追加
  • キーマップのデフォルトを変更
  • DIPSWの役割を変更
  • ESCのキーコードを内部処理の都合で0x78から0x57へ移動
1.01 (20151129)
初版
Tweet about this on TwitterShare on FacebookShare on Google+
  1. 多分NEC純正キーボードなら大抵のものは動くと思いますが []
  2. ちなみにX68000用とFMR用のキーボードは押しっぱなしで押下のキーコードが繰り返し発生します。ADBキーボードはUSBキーボード同様に押下の瞬間と解放の瞬間のみキーコードを発生します。押しっぱなしで押下と解放のペアを繰り返し発生するタイプは98キーボード以外知りません []
  3. Winキーと同じ挙動になる、と考えてください []
  4. 厳密にはESCキーのキーコードは本来は0x00ですが、アダプタ内処理の都合で0x00から0x57に置き変えています []
  5. 右SHIFTキーのキーコードは本来は0x7Dですが、こちらもアダプタの内部処理の都合で0x7Dから0x75に置き換えています []

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です