PIONEER PX-7 キーマトリクス

実はPX-7キーボードアダプタで[0][1][2]キーを押したときに、[SUPER-IMPOSE][VIDEO][COMPUTER]キーが押されてしまう問題があります。あとは[5]キーを押したとき[INS]も押されてしまい、[1][2][3][4][6][7]キーを押すと[INS]が解除されてしまいます。

http://d.hatena.ne.jp/tanam/20141005/1412518858

まずはキーマトリクスをまとめます。

http://d4.princess.ne.jp/msx/datas/keyscan.html

   X7  X6  X5  X4  X3  X2  X1  X0 
Y0 7   6   5   4   3   2   1   0 
Y1 +   [   @   \   ^   -   9   8 
Y2 B   A   _   /   >   <   ]   * 
Y3 J   I   H   G   F   E   D   C 
Y4 R   Q   P   O   N   M   L   K 
Y5 Z   Y   X   W   V   U   T   S 
Y6 F3  F2  F1 かな CAP GRP CTR SHT 
Y7 RET SEL BS  STP TAB ESC F5  F4 
Y8 →  ↓  ↑  ←  DEL INS CLS SPC 
Y9                    COM VID IMP 

やはりY9の処理がまるまる抜けてましたので修正しました。ついでに[5]キーを押したとき[INS]も押されてしまう問題もなおりました。

PS2_MEGA2560.ino

(省略)
void blink()
{
    if (PIND==8) { // If your machine has more one line change this to 9
      noInterrupts();
      PORTC = 255;
      interrupts();
      delayMicroseconds(5);
      noInterrupts();
      PORTC = keyboard.MSX_KB_Matrix(0);
      interrupts();
    } else {
      noInterrupts(); // Deactivate interruptions to avoid keyboard matrix corruption
      PORTC = keyboard.MSX_KB_Matrix(PIND+1); // 8 bits of the Matrix on PORT C (PIN
      interrupts();   // Activate interruptions
    }  
}
(省略)