Unicomp EnduraPro, Ultra Classic & New Model M (104/105-key) matrix simulator (WIP)
This interactive tool simulates the key-matrix of a Unicomp EnduraPro, Ultra Classic & New Model M (104/105-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 UK English functional layout is available for the ISO 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_esc | k_pause | k_f3 | k_f1 | k_ins | k_3 | k_4 | k_6 | k_f5 | k_f7 | k_f9 | k_f11 | k_prscr | k_right | k_scrl | KC_NO |
1 | k_tab | KC_NO | k_del | k_pgdn | KC_NO | k_e | k_t | k_u | k_backspace | k_minus | k_down | k_end | k_home | k_rwin | KC_NO | k_caps |
2 | k_1 | k_bsp_hidden | kp_nl | k_pgup | k_code | k_i | k_r | k_y | k_equals | k_9 | k_0 | kp_mult | kp_div | k_up | k_lwin | KC_NO |
3 | k_q | k_lshift | kp_9 | k_2 | KC_NO | k_k | k_f | k_h | k_squarebrcl | k_o | k_semicolon | kp_8 | kp_7 | KC_NO | KC_NO | k_lctrl |
4 | k_a | KC_NO | kp_6 | k_w | k_lalt | k_d | k_g | k_j | k_backsl | k_squarebrop | k_singlequote | kp_5 | kp_4 | k_rshift_hidden | kp_plus_hidden | KC_NO |
5 | k_z | k_rshift | kp_dot | k_x | KC_NO | k_cm | k_b | k_m | k_return | k_period | k_p | kp_0 | kp_1 | KC_NO | kp_0_hidden | k_rctrl |
6 | k_nubs | KC_NO | kp_3 | k_s | k_ralt | k_c | k_v | k_n | k_left | k_l | k_fwslash | kp_2 | kp_plus | k_nuhs | kp_enter_hidden | KC_NO |
7 | k_tild | KC_NO | kp_minus | k_f2 | k_f4 | k_8 | k_5 | k_7 | k_f6 | k_f8 | k_f10 | k_f12 | k_rmenu | k_space | kp_enter | KC_NO |
- 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.