Richard's Blog

Richard's Blog


Anything stupid

Tags


!NEC MPi400: Reverse Engineering the Keyboard Matrix

Create PCB; Do measurements; Use QMK; Have Keyboard! 😎

!NEC MPi400: Progress Keyboard matrix measured

Overview

To be able to use the handheld, it's important to have a fully working keyboard. The most needed information for this is a complete documentation of the keyboard matrix.

The connection of the keyboard

Preparation

To be able to measure the keyboard matrix without destroying the FPCs, I designed a small PCB and ordered it at JLCPCB. Only drawback was the written naming. I initially planned on naming the system !NEC MP900 to show of the old name - after ordering I rethought this and named it !NEC MPi400 in reminisence of the Raspberry Pi 400 computer.

Gerber Preview

The PCB arrived in pretty good condition with everything assembled. I did this to remove the effort of soldering out of the equation.

Take care when selecting PCB colors - especially white. The PCB had minor discoloration on the backside due to the reflow soldering process.

The PCB is planned to be a "keeper of notes" so I can directly write on the PCB. So I only have to transfer my notes to a digital copy.

Brand new PCB

Doing measurements

I've directly marked the rows (left → right) and columns (top → bottom) which are either shorted together or not connected at all.

In the following picture you can see how I did the measurements of the keyboard.

Measurement ongoing

Result

After finishing the measurements, I was left with all keys pressed a thousand times, bent test loops on the PCB, but I have found all keys!

The result of the measurement has been copied over into a simple spreadsheet (QMK Keycodes), which will be used for creating a QMK keyboard file.

Connector Pins 123456789101112
 PINF4F5 F6F7C7C6B6B5   
1 (Connected with 2)           Power Button 
2 (Connected with 1) 
3B0 KC_F9 KC_F10 KC_BRIUKC_BRIDKC_LALT    
4B1 MO(1) KC_TAB KC_PKC_BSPC KC_RALT   
5B2KC__QUOTKC_O KC_DOTKC_SCLNKC_DOWNKC_UPKB_LBRC    
6B3KC_NKC_9 KC_0KC_B  KC_MKC_COMM   
7             
8             
9B7 KC_Z KC_XKC_LGUIKC_CKC_V     
10             
11D0KC_BSLSKC_L KC_ENTKC_SLSHKC_RIGHTKC_LEFTKC_RBRCKC_SPC   
12             
13D1KC_HKC_1 KC_2KC_GKC_3KC_4KC_JKC_K   
14D2KC_YKC_ESC KC_DELKC_TKC_CAPS KC_UKC_I   
15D3KC_MINSKC_A KC_SKC_GRVKC_DKC_FKC_EQL    
16D5KC_6KC_Q KC_WKC_5KC_EKC_RKC_7KC_8   
17D4 KC_F1 KC_F2KC_LSFTKC_F3KC_F4     
18D6KC_LCTLKC_F5 KC_F6 KC_F7KC_F8     
19             
20             
View Comments