Summary
X68000ZにUS配列のHappy Hacking
Keyboardを接続して使うためのKeyWitchの環境設定ファイルus_HHKB.envを作成した。
X68000ZにUS配列のHHKBを接続すると、右上の `~
(バッククオート/チルダ)キーを押した時にBREAKコードが出力され、KeyWitchで指定したcharが出力される前に割り込みが発生し、思った動作にならない不都合が存在する。自作の環境設定ファイルでは、普段使わないIns(Fn
+\|
)の位置にBREAKを移動することで問題を回避した(Insは使えなくても困ることはないと想定)。あわせてCTRL
+ c
でBREAKコードを出力するように設定。
気の迷いでX68000Zというおもちゃを入手した。 (キーボードやマウスがついていないスターターパックというセットを買いました。)
ゲームやるにはテンキーとか方向キーなどがないとだめなのだけれど、コーディングや設定するときは大きなキーボードは邪魔なのでUS配列のHHKBを使いたい。
KeyWitchというツールを使えばUS配列でも簡単に繋げられそうと思ったけれど結構な沼だった。
少し(かなり?)調べて自前のKeyWitch.envファイルでうまくいったのでメモを公開。
以下についてご存知の方はコメントいただきたいです
KeyWhitch.xをA:\USRSYS\KeyWitch.x
にコピー
*.dev
ファイルをA:\USRSYS\KEYWITCH
フォルダ内に配置
A>md A:\USRSYS
A>cd A:\USRSYS\
A>md KEYWITCH
A>b:
B>cd KEYWB213
B>copy KeyWitch.x A:\USRSYS\
B>copy KeyWEnv\*.env A:\USRSYS\KEYWITCH\
忘れずにコピー
B>copy us_HHKB.env A:\USRSYS\KEYWITCH\
config.sysの設定
DEVICE = \USRSYS\KeyWitch.x -x -e \USERSYS\KeyWitch\us_HHKB.env
ソフトリセットはCTRL
+F11(Opt.1)
+Del
で実行できる。
なお、WindowsキーボードなどでLEDキーを入力する方法を、X68000Zのコミュニティサイトで「カピバラ父さん」さんに教えていただきました。
Print Screen かな入力
Scroll Lock ローマ字入力
Pause Break コード入力
F11 Opt.1
F12 Opt.2
Ctrl + Fn + Alt左(Opt) 漢字変換(Ctrl+XF1)
Ctrl + F11 + Del ソフトリセット
US配列のキー設定ということで、KeyWitchに付属している設定ファイルascii.envを試してもそのままではうまくいかない。
対策を検討するために、いろんなキーコード(Scan code)の情報などを調査したが、X68000Z内部に渡されるScan codeとは微妙に一致しないためうまくいかなかった。 特に”|“と”~`“(チルダとバッククオート)のキーが鬼門で、望むようにキー入力できなかった。 あんなところやこんなところにWindows上のX68000エミュレーターでUS配列のキーボード(HHKB)を使う例が見つかったが、一部のキーはWindowsのエミュレータ側の機能を使って対応していたので、X68000Zでの問題は解決しない。
救世主のカタ(kata68k)さん作成のkata68k/-X68000-InputCHKを使って実際にX68000Zが受け取るScan codeを確認できた。
わかったこととして、US配列のHHKBの右上のバッククオート/チルダキーのScan codeは、X68000ZのキーボードではBREAKキーのコードに相当するため、KeyWitchがBreak処理を優先して、指定したバッククオート文字を出力しないで制御文字を出力していたのだった!
結局、カタ(kata68k)さんのツールと、KeyWitchのドキュメントが最も情報量が多かっった。
そこで、KeyWitchのキー交換機能を使ってバッククオート/チルダキーに割り当てられているBREAKキーのScan
codeをIns
キー(Fn
+\
(円マーク/バックスラッシュ))のScan
codeと交換して裏に隠してやることにした。Fnと円マーク/バックスラッシュを同時に押せばBREAKが出力される。
元のInsキーはBREAKで上書きされてしまって使えなくなるが、Insはもともと使っていないのでOK。
ついでにCTRL
+
c
でBREAKになるように設定。
作成したus_HHKB.env環境定義ファイル
% KeyWitch 環境定義ファイル
%
% ファイル名: us_HHKB.env
% 内容: US配列のHHKB用サンプルです。
%
% Ver 1.0 (2024/06/09) Written by Noobru Harada (はる)
% Tested with HHKB Professional Classic and HHKB Lite
&name 80 かな
&name 81 ローマ字
&name 83 CAPS
&name 88 SHIFT
&name 89 CTRL
&name 61 BREAK
&name 5E INS
% Swap INS <--> BREAK and give ` to 5E (INS)
&rule
&target BREAK INS
&code INS BREAK
% Assign CTRL+c for break
&break CTRL=1 SHIFT=0 2C=1
&sbreak CTRL=1 SHIFT=1 2C=1
&target \
02 03 04 05 06 07 08 09 0A 0B 0C 0D 29 5E \
11 12 13 14 15 16 17 18 19 1A 1B 1C \
1E 1F 20 21 22 23 24 25 26 27 28 \
2A 2B 2C 2D 2E 2F 30 31 32 33
&rule かな=0 ローマ字=1 SHIFT=1 CTRL=0
&char \
! @ # \$ \% \^ & * ( ) _ + | ~ \
q w e r t y u i o p { } \
a s d f g h j k l : \" \
z x c v b n m < > ?
&rule かな=0 ローマ字=1 SHIFT=0 CTRL=0
&char \
1 2 3 4 5 6 7 8 9 0 - = \\ ` \
Q W E R T Y U I O P [ ] \
A S D F G H J K L ; ' \
Z X C V B N M , . /
&rule かな=0 ローマ字=0 CAPS=1 SHIFT=1 CTRL=0
&char \
! @ # \$ \% \^ & * ( ) _ + | ~ \
q w e r t y u i o p { } \
a s d f g h j k l : \" \
z x c v b n m < > ?
&rule かな=0 ローマ字=0 CAPS=1 SHIFT=0 CTRL=0
&char \
1 2 3 4 5 6 7 8 9 0 - = \\ ` \
Q W E R T Y U I O P [ ] \
A S D F G H J K L ; ' \
Z X C V B N M , . /
&rule かな=0 ローマ字=0 CAPS=0 SHIFT=1 CTRL=0
&char \
! @ # \$ \% \^ & * ( ) _ + | ~ \
Q W E R T Y U I O P { } \
A S D F G H J K L : \" \
Z X C V B N M < > ?
&rule かな=0 ローマ字=0 CAPS=0 SHIFT=0 CTRL=0
&char \
1 2 3 4 5 6 7 8 9 0 - = \\ ` \
q w e r t y u i o p [ ] \
a s d f g h j k l ; ' \
z x c v b n m , . /
&rule CTRL=1
&char \
^@ ^@ ^@ ^@ ^@ ^^ ^@ ^@ ^@ ^@ ^_ ^@ ^\ ^@ \
^Q ^W ^E ^R ^T ^Y ^U ^I ^O ^P ^[ ^] \
^A ^S ^D ^F ^G ^H ^J ^K ^L ^@ ^@ \
^Z ^X ^C ^V ^B ^N ^M ^@ ^@ ^?
Webの情報では、US配列のUSBキーボードをX68000Zに接続して利用する例が見つかりにくかったので、設定ファイルを自分で作成することになった。
この設定により、HHKB LiteとHHKB Professional
ClassicをX68000Zに接続してキー入力ができることを確認した。(CTRL
+F11(Opt.1)
+Del
でソフトリセットも可能。)