日別アーカイブ: 2019年11月9日

PC-8801 FH以降 キーボードのマトリクス

自分用メモ

88FH_MATRIX

※1 Row=0x0Eの7bit目は常に0が返る

Row=0x0C以降はPC-8801 mkII のキーボードには無い、追加されたキー。便宜上「拡張キー」と呼ぶことにするが、拡張キーを打鍵した場合はmkII/SRとの互換性維持のため従来キー(mkII/SRに存在するキー)のキーコードも同時に出力される(2行表記のキーの下段)

例えばF9を打鍵した場合は「F9(Make), SHIFT(Make), F4(Make)」が出力される

F9押下→F4押下と打鍵した場合は「F9(Make), SHIFT(Make), F4(Make), F4(Make)」と、F4のMakeが連続で発生する

拡張キーを離した場合はやや複雑となる。単独Breakの場合は簡単で、例えばF9以外のキーが押されていない状態でF9を開放した場合は「F9(Break), F4(Break), SHIFT(Break)」が出力される。

F4を押したままF9を開放した場合はF4のBreakコードは出力されない1。よって「F9(Break), SHIFT(Break)」のみが出力される。

SHIFT左かSHIFT右を押したままF9を開放した場合は「F9(Break), F4(Break), SHIFT(Make)」と、最後にSHIFTのMakeコードが出力される。普通に考えたらSHIFTについてはMakeもBreakも出力しなくて良いようにも思われるが。なおこの「良く分からないMakeの出力」はBSとDEL2、ENTERとテンキーENTER3 でも同様に発生する。逆に、SHIFT左とSHIFT右の場合はSHIFTのMakeは発生しない。

INSを押下した場合はINSのMakeに続けて「SHIFT, INSDEL」のMakeも出力されるが、これは個別に出るのではなくまとめて出力される。同一Rowのキーは最大7キーまでMake/Breakを一度に表現できるので、SHIFTとINSDELのMakeは

Row = 0x08、Col = 0b10110111

となる(Col の bitが 0のキーが押下中のキー。4bit目の0はINSDELの押下を示し、7bit目の0はSHIFTの押下を示している)

 

上記の動作は Type Aキーボードで確認。Type B以降のキーボードでも同じ挙動を示すのかは不明。

  1. そうじゃないと「F4を押しているのにBreak通知」になってしまう []
  2. INSDELのMake []
  3. RETURNのMake []