IBM Enhanced Keyboard (101/102-key) matrix simulator (WIP)
This interactive tool simulates the key-matrix of a IBM Enhanced Keyboard (101/102-key) so that you can test if possible key combinations work without needing to test on a physical keyboard. Model M keyboards are all fundamentally two-key rollover (2KRO) due to the use of a membrane assembly, but this doesn't mean Model Ms cannot register more than 2 keys unlike popular belief. This tool demonstrates this and can allow you to see if a given Model M key-matrix would be suitable for your needs.
Disclaimer & notes
This tool is intended to be a guideline only. The results from any input are based on physical key-matrix data only and doesn't take into account firmware (ie, differing deghosting algorithm implementations or bugs/quirks). If you're using this tool as part of a purchasing decision, if possible, it would be prudent to try verifying results on a real keyboard someone you know has or ask on /r/modelm subreddit. The tool is also best viewed on desktop.
Only US English functional layout is available for the ANSI simulator at this time
Firmware caution: A 3-key combination that may or may not be problematic depending on keyboard's firmware. A custom QMK-based controller would probably be fine with these, but IBM/Lexmark/Unicomp native firmware may not. | |
Hardware block: A N-key combination that will block in any circumstance due to the matrix's design. There is nothing you can do about these since they're a fundamental key-matrix limitation. |
Matrix
This is a tabular representation of the data used by the simulator above. A keyboard matrix is constructed from a series of columns (X-axis) and rows (Y-axis) whose intersections are used for key assignment. Such matrices allows a large number of keys to be driven by relatively few traces, as opposed to each key requiring its own circuit.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | k_b | k_space | k_n | k_fwslash | k_down | k_right | kp_minus | k_left | k_ralt | |||||||
1 | k_rctrl | k_rshift | k_z | k_x | k_c | k_v | k_return | k_m | k_cm | k_period | k_nuhs | kp_nl | kp_div | kp_mult | k_pause | |
2 | k_a | k_s | k_d | k_f | k_backsl | k_j | k_k | k_l | k_semicolon | kp_1 | kp_2 | kp_3 | kp_enter | |||
3 | k_q | k_w | k_e | k_r | k_u | k_i | k_o | k_p | kp_7 | kp_8 | kp_9 | kp_plus | k_scrl | |||
4 | k_1 | k_2 | k_3 | k_4 | k_f10 | k_7 | k_8 | k_9 | k_0 | k_f11 | k_f12 | k_pgdn | k_end | k_prscr | ||
5 | k_lctrl | k_tild | k_f1 | k_f2 | k_5 | k_f9 | k_6 | k_equals | k_f8 | k_minus | k_del | k_ins | k_pgup | k_home | ||
6 | k_lshift | k_tab | k_caps | k_f3 | k_t | k_backspace | k_y | k_squarebrcl | k_f7 | k_squarebrop | kp_4 | kp_5 | kp_6 | |||
7 | k_esc | k_nubs | k_f4 | k_g | k_f5 | k_h | k_f6 | k_singlequote | kp_0 | kp_dot | k_up | k_lalt |
- Many thanks to Purdea Andrei (/u/_pandrew, purdeaandrei) for providing the IBM Enhanced Keyboard, Unicomp PC 122, Unicomp EnduraPro/Ultra Classic and Unicomp Mini Model M matrices and providing technical assistance.
- Many thanks to whiskerbiskit for helping to crack the Unicomp Mini Model M matrix.
- phosphorglow's IBM Space Saving Keyboard matrix was used for the IBM Space Saving Keyboard matrix simulator.