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

Apple M0110/A キーボード用コンバータ

作るには作ったものの放置状態

もし興味ある方がいらっしゃいましたらご連絡下さい。なお純正と同じストレートケーブル専用です。クロスケーブルは当然動かないだけではなく、+5VとGNDが逆につながるという非常に危険な状態になるのでご注意下さい。

 

しかし作った3年後にこんな形で再利用されるとは、作った当時は想像もしてなかったというか。

USB HID Keyccode

表形式

キーコード 説明
00 ~ 9F 通常キー (normal keys)
背景がベージュのキーはテンキー
名前が薄いグレーになっているキーは、WIndowsでは特に何も起きないキー
0x8C のテンキーカンマはWindowsでは利用出来ません。macOSでは有効です。また、Windowsであっても98配列化ファームに書き換えている場合は有効です。
A0 ~ A2 Xsel-USB専用。USBポート切り替えキー (USB Port change)
A6 ~ A8 usb2x68専用。レイヤー切り替えキー (Layer change)
A9 ~ BF ユーザ定義マクロ呼び出しキー (Execute user define macro)
D0 ~ D2 システムコントロールキー (system control keys)
Windowsでキーボードからスリープを行いたい場合は 0x66 ではなくこちら (0xD0) を使って下さい。macOSの場合は 0x66 を使って下さい(※ macOSの場合、0xD0でも0x66でもどちらでも反応するようですが、0xD0の場合は長押しガードの設定の影響を受けます)
0xD0 ~ 0xD2については、アダプタ設定「2秒の長押しガード」の影響を受けます
D4 ~ DF 定義済みの組み込みマクロ呼び出しキー (embedded macro keys)
なお D6~D9 のテンキー「イコール、カンマ、 000、00」はWindowsでのみ利用可能で、かつ NumLockがONになっている必要があります。macOSでテンキー= (イコール) を使用したい場合は 0x67 を使用して下さい。
E0 ~ E7 通常のmodキー (Shift, Ctrl, Alt, Win)
E8 ~ FE メディアコントロールキー (media control keys)
なお定義しても実際には何も起きない場合があります (OS依存)

 

先走り仮公開

使い方

1.最初に、uploaderから設定ファイルの雛形を事前に取得しておく

2.キーボードの種別を選択する(このページのリンクから飛んだ場合は自動的に選択された状態になっています)

3.「ファイルを選択」ボタンを押して設定ファイルを読み込ませる。

4. 編集

5.設定が終わったら最後に「実行」ボタンを押すと設定内容が表示されるので、それを適当にエディタやメモ帳にコピペして保存

6.保存した設定をツールで読み込ませる

 

現時点ではマクロの定義は出来ません。

現在、そこそこまともに動きそうなテンプレート(キーボード)

X68000用キーボード
https://ixsvr.dyndns.org/uploader/kme.html?type=X68000

Apple M0116/J ADB キーボード
https://ixsvr.dyndns.org/uploader/kme.html?type=M0116

PC-9821 用キーボード  (Winキーあり)
https://ixsvr.dyndns.org/uploader/kme.html?type=PC98W

IBM 5576 Keyboard1 用
https://ixsvr.dyndns.org/uploader/kme.html?type=5576-001

富士通 OASYS OAKB-201
https://ixsvr.dyndns.org/uploader/kme.html?type=OAKB201

 

Xsel68-USB (仮

まあ、うちの会社のリモートワークは来週で終わっちゃうけどな!(会社はマイキーボード、というか私物のUSB接続禁止)

GW前くらいに形になってればリモートワーク需要でバカ売れしてたんかなぁ(そんな訳無い

 

このプロトタイプ2号でいろいろ問題点とか洗った後にプロトタイプ3号を作る予定だったけど、なんかこれで満足してしまって終わる予感。

積み課題

なかなかサイトを更新できずすみません。復旧作業ってマイナスがゼロに戻るだけなのでなんとかプラス要素を出したいところなんですが。

リモートワークでイラついたのでこんなのをでっち上げたりしてました。キーボードの任意のキーで切り替え可能です。

Xsel68-USB を名乗ってもいいですかね(ヤメロ

その後はこちら

 

usb2ps2の最新ファームがコールドブート時に固まる問題と、ps2x68の最新バージョンがランダムに固まる問題は継続調査中です(←忘れてないアピール)

 

 

Windows10で98配列USBキーボード 2020年版

何度かの Windows Update を経て、WIndows10における98配列キーボードの動作も改善されているようです。現状では「レジストリを手で修正する必要がある」ものの、修正後は問題なく利用できています

当サイトへのコメントとこちらの情報を参考にさせていただきました(感謝!

Windows10 October 2018 Update で PC-98配列キーボード
https://sk070.hatenablog.com/entry/2018/10/08/210255

 

レジストリの HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters にある LayerDriver JPN を

kbd106.dll → kbdnec.dll

に変更して、OSを再起動させるか一度サインアウトしてサインインしなおせば98配列キーボードとして認識されました。EDGEでの入力も問題ありません。また、以前見受けられた「USBポートを差し替えるとまた106/109日本語キーボードの認識に戻る」問題も発生しませんでした。

ただしこの変更(レジストリの修正)を行った後、再び106/109日本語キーボードに差し替えても98配列の認識が残るようです。まあ、その場合は再びレジストリを修正すれば良いだけですが。

上記は Windows10 Pro バージョン 1909 (November 2019 Update) で確認しました。

設定ファイルの記述について

俺メモ

設定ファイルの記述について補足

使い慣れたテキストエディタ(メモ帳とか)でプレーンなテキストファイルに設定を記述して、それをツールを使ってアダプタにインポートします。

設定ファイルは SJIS か UTF-8 (bomなし) で記述して下さい。改行コードは CRLF、CR、LF どれでも構いません。

設定ファイルには EEPROM に書き込む内容を “<EEPROMアドレス>,<値>” の書式で記述します。アドレス順になっている必要はありませんし、EEPROMの全256byte分が記述されている必要もありません。

 

記述のサンプルです

;
; 設定ファイルサンプル
;
00,A5       ;  0x00 は必ず A5 にする
;
01,04       ;  Scancode 01 を返すキーが押されたら A (0x04) を発生
02,1E
03,28
04,E0
;
7D,$00000011        ; 設定2
FF,$01100100        ; 設定1
;

 

設定ファイルには1行に1バイト分の値を <EEPROMアドレス>, <設定値> の書式で記述します。セミコロン以降の文字はコメントとして無視します。行頭にセミコロンがあればその行はコメント行とみなします。

値は16進数で記述します。なお値の先頭に “$” をつけると2進数で記述出来ます(8bitで記述して下さい)

 

基本的には設定ファイルの雛形をダウンロードして頂いて、それをお好みでカスタマイズするのがよいかと思います。

アダプタ設定

各アダプタごとの設定ビット説明
設定ファイルに記述する際は、値の頭に “$” をつけると2進数での記述が可能です
(例: “FF, $01100111” と “FF, 67” は同じ)

未使用のビットは0でも1でもどちらでも構いません

なおファームウェア更新直後はすべてのビットが “1” に初期化されます

X68000
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
設定1 (0xFF) DSC MODE MODE SCLK SYSC KITT
設定2 (0x7D) LED LED

 

設定1 (0xFF)

BIT NAME 説明
7 DSC スクリーンセーバー殺しの機能を有効化するか
1=無効 (初期設定)
0=有効
6-5 MODE 動作モード指定
11=mode0 (初期設定)
01=mode1a
00=mode1b
2 SCLK Scroll Lock LEDの状態にあわせてレイヤーの切り替えを行うか
1=行わない (初期設定)
0=行う (Scroll Lock LED点灯中は常に Layer1 を選択する)
1 SYSC システムコントロールキー操作時、誤操作防止を行うか
1=行わない (初期設定)
0=行う (2秒の長押しが必要)
0 KITT 1=無効 (初期設定)
0=有効

 

設定2 (0x7D)

BIT NAME 説明
1-0 LED LEDの点灯モードを指定
00=1秒おきに点滅&キー操作のタイミングで反転
01=キーを押した瞬間に短く点灯
10=キーを押している間中、点灯
11=常時消灯
PC-9801 Series
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
設定1 (0xFF) MODE MODE WIN KGEN MKBR SYSC
設定2 (0x7D) LED LED

 

設定1 (0xFF)

BIT NAME 説明
6-5 MODE 動作モード指定
11=mode0
01=mode1a
00=mode1b
4 WIN Windowsキーを有効にするか
(※ WInキーを有効にする場合は、必ずKGENも0に設定すること)
1=無効  (初期設定)
0=有効
3 KGEN キーボードの世代を指定
1=LEDなし、CAPSとかなは機械式のロッキング (初期設定)
0=LEDあり、CAPSとかなはファームウェアによるソフトウェアロッキング

※ この設定は次のように読み替えることも出来ます
1=キーボードによるキーリピート処理を抑止しない (初期設定)
0=キーボードによるキーリピート処理を抑止する

2 MKBR CAPSとかなのロッキング対応を行うか
1=行う (初期設定)
0=行わない
1 SYSC システムコントロールキー操作時、誤操作防止を行うか
1=行わない (初期設定)
0=行う (2秒の長押しが必要)

 

設定2 (0x7D)

BIT NAME 説明
1-0 LED LEDの点灯モードを指定
00=1秒おきに点滅&キー操作のタイミングで反転
01=キーを押した瞬間に短く点灯
10=キーを押している間中、点灯
11=常時消灯
ADB
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
設定1 (0xFF) MODE MODE POW MKBR SYSC
設定2 (0x7D) LED LED

 

設定1 (0xFF)

BIT NAME 説明
6-5 MODE 動作モード指定
11=mode0
01=mode1a
00=mode1b
4 POW NeXT ADB キーボード使用時、Powerキーを有効にするか
(※ NeXT ADB キーボード以外のキーボードは常に1にすること)
1=無効
0=有効
2 MKBR caps lockのロッキング対応を行うか
1=行う
0=行わない
1 SYSC システムコントロールキー操作時、誤操作防止を行うか
1=行わない
0=行う (2秒の長押しが必要)

 

設定2 (0x7D)

BIT NAME 説明
1-0 LED LEDの点灯モードを指定
00=1秒おきに点滅&キー操作のタイミングで反転
01=キーを押した瞬間に短く点灯
10=キーを押している間中、点灯
11=常時消灯
FMR/FM TOWNS/OASYS
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
設定1 (0xFF) MODE MODE SYSC
設定2 (0x7D) LED LED

 

設定1 (0xFF)

BIT NAME 説明
6-5 MODE 動作モード指定
11=mode1
10=mode2
01=mode3a
00=mode3b
1 SYSC システムコントロールキー操作時、誤操作防止を行うか
1=行わない
0=行う (2秒の長押しが必要)

 

設定2 (0x7D)

BIT NAME 説明
1-0 LED LEDの点灯モードを指定
00=1秒おきに点滅&キー操作のタイミングで反転
01=キーを押した瞬間に短く点灯
10=キーを押している間中、点灯
11=常時消灯
PS/2
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
設定1 (0xFF) DSC MODE MODE FMEX SYSC
設定2 (0x7D) LED LED

 

設定1 (0xFF)

BIT NAME 説明
7 DSC スクリーンセーバー殺しの機能を有効にするか
1=無効 (初期設定)
0=有効
6-5 MODE 動作モード指定
11=mode1  (初期設定)
10=mode2
01=mode3a
00=mode3b
3 FMEX 富士通キーボードの拡張コマンドを送信するか
1=送信しない (初期設定)
0=送信する
1 SYSC システムコントロールキー操作時、誤操作防止を行うか
1=行わない (初期設定)
0=行う (2秒の長押しが必要)

 

設定2 (0x7D)

BIT NAME 説明
1-0 LED LEDの点灯モードを指定
00=1秒おきに点滅&キー操作のタイミングで反転 (初期設定)
01=キーを押した瞬間に短く点灯
10=キーを押している間中、点灯
11=常時消灯