qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

commit f98f8eedf0dc6fe939162210ad44d5af8a0dfa08
parent e759230706373e9db8a0d6758f8c210288870d9f
Author: nuess0r <nussgipfel@brain4free.org>
Date:   Sat, 27 May 2023 15:12:36 +0200

Consolidate modelm v2 (#14996)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>

Diffstat:
Mdata/mappings/keyboard_aliases.hjson | 24++++++++++++++++++++++++
Adocs/ChangeLog/20230528/PR14996.md | 21+++++++++++++++++++++
Dkeyboards/ashpil/modelm_usbc/info.json | 270-------------------------------------------------------------------------------
Dkeyboards/ashpil/modelm_usbc/readme.md | 14--------------
Dkeyboards/converter/modelm101/info.json | 145-------------------------------------------------------------------------------
Dkeyboards/converter/modelm101/readme.md | 42------------------------------------------
Dkeyboards/converter/modelm101_teensy2/info.json | 149-------------------------------------------------------------------------------
Dkeyboards/converter/modelm101_teensy2/readme.md | 29-----------------------------
Dkeyboards/converter/modelm_ssk/info.json | 128-------------------------------------------------------------------------------
Dkeyboards/converter/modelm_ssk/readme.md | 55-------------------------------------------------------
Dkeyboards/handwired/ibm122m/info.json | 168-------------------------------------------------------------------------------
Dkeyboards/handwired/ibm122m/readme.md | 16----------------
Rkeyboards/ashpil/modelm_usbc/modelm_usbc.c -> keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c | 0
Akeyboards/ibm/model_m/ashpil_usbc/info.json | 270+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/ashpil/modelm_usbc/keymaps/ashpil/config.h -> keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h | 0
Rkeyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c -> keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c | 0
Rkeyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk -> keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk | 0
Rkeyboards/ashpil/modelm_usbc/keymaps/default/keymap.c -> keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c | 0
Akeyboards/ibm/model_m/ashpil_usbc/readme.md | 14++++++++++++++
Rkeyboards/ashpil/modelm_usbc/rules.mk -> keyboards/ibm/model_m/ashpil_usbc/rules.mk | 0
Akeyboards/ibm/model_m/modelm/readme.md | 24++++++++++++++++++++++++
Akeyboards/ibm/model_m/mschwingen/config.h | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/ibm/model_m/mschwingen/info.json | 143+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/mschwingen/modelm/keymaps/default/keymap.c -> keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c | 0
Akeyboards/ibm/model_m/mschwingen/led_ffc/readme.md | 21+++++++++++++++++++++
Rkeyboards/mschwingen/modelm/led_ffc/rules.mk -> keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk | 0
Akeyboards/ibm/model_m/mschwingen/led_wired/readme.md | 21+++++++++++++++++++++
Rkeyboards/mschwingen/modelm/led_wired/rules.mk -> keyboards/ibm/model_m/mschwingen/led_wired/rules.mk | 0
Akeyboards/ibm/model_m/mschwingen/led_ws2812/readme.md | 21+++++++++++++++++++++
Rkeyboards/mschwingen/modelm/led_ws2812/rules.mk -> keyboards/ibm/model_m/mschwingen/led_ws2812/rules.mk | 0
Akeyboards/ibm/model_m/mschwingen/matrix.c | 113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/ibm/model_m/mschwingen/mschwingen.c | 213+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/mschwingen/modelm/modelm.h -> keyboards/ibm/model_m/mschwingen/mschwingen.h | 0
Rkeyboards/mschwingen/modelm/post_rules.mk -> keyboards/ibm/model_m/mschwingen/post_rules.mk | 0
Akeyboards/ibm/model_m/mschwingen/readme.md | 25+++++++++++++++++++++++++
Akeyboards/ibm/model_m/mschwingen/rules.mk | 29+++++++++++++++++++++++++++++
Rkeyboards/converter/modelm101/config.h -> keyboards/ibm/model_m/teensy2/config.h | 0
Akeyboards/ibm/model_m/teensy2/info.json | 149+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/converter/modelm101/keymaps/default/keymap.c -> keyboards/ibm/model_m/teensy2/keymaps/default/keymap.c | 0
Rkeyboards/converter/modelm101/keymaps/default/readme.md -> keyboards/ibm/model_m/teensy2/keymaps/default/readme.md | 0
Akeyboards/ibm/model_m/teensy2/readme.md | 29+++++++++++++++++++++++++++++
Rkeyboards/converter/modelm101_teensy2/rules.mk -> keyboards/ibm/model_m/teensy2/rules.mk | 0
Rkeyboards/converter/modelm101_teensy2/config.h -> keyboards/ibm/model_m/teensypp/config.h | 0
Akeyboards/ibm/model_m/teensypp/info.json | 145+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/converter/modelm101_teensy2/keymaps/default/keymap.c -> keyboards/ibm/model_m/teensypp/keymaps/default/keymap.c | 0
Rkeyboards/converter/modelm101_teensy2/keymaps/default/readme.md -> keyboards/ibm/model_m/teensypp/keymaps/default/readme.md | 0
Rkeyboards/converter/modelm101/keymaps/iw0rm3r/config.h -> keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h | 0
Rkeyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c -> keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c | 0
Rkeyboards/converter/modelm101/keymaps/iw0rm3r/readme.md -> keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md | 0
Akeyboards/ibm/model_m/teensypp/readme.md | 42++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/converter/modelm101/rules.mk -> keyboards/ibm/model_m/teensypp/rules.mk | 0
Rkeyboards/converter/modelm101/modelm101.c -> keyboards/ibm/model_m/teensypp/teensypp.c | 0
Rkeyboards/yugo_m/model_m_101/config.h -> keyboards/ibm/model_m/yugo_m/config.h | 0
Akeyboards/ibm/model_m/yugo_m/info.json | 398+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/yugo_m/model_m_101/keymaps/default/keymap.c -> keyboards/ibm/model_m/yugo_m/keymaps/default/keymap.c | 0
Rkeyboards/yugo_m/model_m_101/keymaps/default/readme.md -> keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md | 0
Akeyboards/ibm/model_m/yugo_m/readme.md | 25+++++++++++++++++++++++++
Rkeyboards/yugo_m/model_m_101/rules.mk -> keyboards/ibm/model_m/yugo_m/rules.mk | 0
Akeyboards/ibm/model_m/yugo_m/yugo_m.c | 35+++++++++++++++++++++++++++++++++++
Rkeyboards/handwired/ibm122m/config.h -> keyboards/ibm/model_m_122/ibm122m/config.h | 0
Akeyboards/ibm/model_m_122/ibm122m/info.json | 169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/handwired/ibm122m/keymaps/andresteare/keymap.c -> keyboards/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c | 0
Rkeyboards/handwired/ibm122m/keymaps/default/config.h -> keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h | 0
Rkeyboards/handwired/ibm122m/keymaps/default/keymap.c -> keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c | 0
Rkeyboards/handwired/ibm122m/keymaps/default/readme.md -> keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md | 0
Rkeyboards/handwired/ibm122m/keymaps/lukaus/config.h -> keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h | 0
Rkeyboards/handwired/ibm122m/keymaps/lukaus/keymap.c -> keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c | 0
Rkeyboards/handwired/ibm122m/keymaps/lukaus/readme.md -> keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md | 0
Rkeyboards/handwired/ibm122m/keymaps/via/keymap.c -> keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c | 0
Rkeyboards/handwired/ibm122m/keymaps/via/rules.mk -> keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk | 0
Akeyboards/ibm/model_m_122/ibm122m/readme.md | 31+++++++++++++++++++++++++++++++
Rkeyboards/handwired/ibm122m/rules.mk -> keyboards/ibm/model_m_122/ibm122m/rules.mk | 0
Rkeyboards/tronguylabs/m122_3270/blackpill/info.json -> keyboards/ibm/model_m_122/m122_3270/blackpill/info.json | 0
Rkeyboards/tronguylabs/m122_3270/blackpill/readme.md -> keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md | 0
Rkeyboards/tronguylabs/m122_3270/blackpill/rules.mk -> keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk | 0
Rkeyboards/tronguylabs/m122_3270/bluepill/info.json -> keyboards/ibm/model_m_122/m122_3270/bluepill/info.json | 0
Rkeyboards/tronguylabs/m122_3270/bluepill/readme.md -> keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md | 0
Rkeyboards/tronguylabs/m122_3270/bluepill/rules.mk -> keyboards/ibm/model_m_122/m122_3270/bluepill/rules.mk | 0
Akeyboards/ibm/model_m_122/m122_3270/info.json | 161+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/tronguylabs/m122_3270/keymaps/default/keymap.c -> keyboards/ibm/model_m_122/m122_3270/keymaps/default/keymap.c | 0
Rkeyboards/tronguylabs/m122_3270/keymaps/default/readme.md -> keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md | 0
Akeyboards/ibm/model_m_122/m122_3270/readme.md | 33+++++++++++++++++++++++++++++++++
Rkeyboards/tronguylabs/m122_3270/teensy/info.json -> keyboards/ibm/model_m_122/m122_3270/teensy/info.json | 0
Rkeyboards/tronguylabs/m122_3270/teensy/readme.md -> keyboards/ibm/model_m_122/m122_3270/teensy/readme.md | 0
Rkeyboards/tronguylabs/m122_3270/teensy/rules.mk -> keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk | 0
Akeyboards/ibm/model_m_122/readme.md | 24++++++++++++++++++++++++
Akeyboards/ibm/model_m_ssk/readme.md | 24++++++++++++++++++++++++
Rkeyboards/converter/modelm_ssk/config.h -> keyboards/ibm/model_m_ssk/teensypp_ssk/config.h | 0
Akeyboards/ibm/model_m_ssk/teensypp_ssk/info.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/converter/modelm_ssk/keymaps/default/keymap.c -> keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c | 0
Rkeyboards/converter/modelm_ssk/keymaps/default/readme.md -> keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md | 0
Rkeyboards/converter/modelm_ssk/keymaps/tiltowait/config.h -> keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h | 0
Rkeyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c -> keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c | 0
Rkeyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md -> keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md | 0
Akeyboards/ibm/model_m_ssk/teensypp_ssk/readme.md | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rkeyboards/converter/modelm_ssk/rules.mk -> keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk | 0
Dkeyboards/mschwingen/modelm/config.h | 77-----------------------------------------------------------------------------
Dkeyboards/mschwingen/modelm/info.json | 143-------------------------------------------------------------------------------
Dkeyboards/mschwingen/modelm/matrix.c | 113-------------------------------------------------------------------------------
Dkeyboards/mschwingen/modelm/modelm.c | 214-------------------------------------------------------------------------------
Dkeyboards/mschwingen/modelm/readme.md | 25-------------------------
Dkeyboards/mschwingen/modelm/rules.mk | 29-----------------------------
Dkeyboards/tronguylabs/m122_3270/info.json | 160-------------------------------------------------------------------------------
Dkeyboards/tronguylabs/m122_3270/readme.md | 22----------------------
Dkeyboards/yugo_m/model_m_101/info.json | 398-------------------------------------------------------------------------------
Dkeyboards/yugo_m/model_m_101/model_m_101.c | 35-----------------------------------
Dkeyboards/yugo_m/model_m_101/readme.md | 26--------------------------
Dkeyboards/yugo_m/readme.md | 20--------------------
108 files changed, 2464 insertions(+), 2278 deletions(-)

diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson @@ -41,6 +41,9 @@ "angel64": { "target": "angel64/alpha" }, + "ashpil/modelm_usbc": { + "target": "ibm/model_m/ashpil_usbc" + }, "at101_blackheart": { "target": "viktus/at101_bh" }, @@ -113,6 +116,15 @@ "cmm_studio/saka68": { "target": "cmm_studio/saka68/solder" }, + "converter/modelm101": { + "target": "ibm/model_m/teensypp" + }, + "converter/modelm101_teensy2": { + "target": "ibm/model_m/teensy2" + }, + "converter/modelm_ssk": { + "target": "ibm/model_m_ssk/teensypp_ssk" + }, "cospad": { "target": "kprepublic/cospad" }, @@ -203,6 +215,9 @@ "handwired/ferris": { "target": "ferris/0_1" }, + "handwired/ibm122m": { + "target": "ibm/model_m_122/ibm122m" + }, "handwired/p1800fl": { "target": "team0110/p1800fl" }, @@ -425,6 +440,9 @@ "montsinger/rebound": { "target": "montsinger/rebound/rev1" }, + "mschwingen/modelm": { + "target": "ibm/model_m/mschwingen" + }, "noxary/268_2": { "layouts": { "LAYOUT": "LAYOUT_65_ansi_blocker" @@ -1246,6 +1264,9 @@ "treadstone48/rev2": { "target": "marksard/treadstone48/rev2" }, + "tronguylabs/m122_3270": { + "target": "ibm/model_m_122/m122_3270" + }, "ua62": { "target": "nacly/ua62" }, @@ -1306,6 +1327,9 @@ "ymdk_np21": { "target": "ymdk/np21" }, + "yugo_m/model_m_101": { + "target": "ibm/model_m/yugo_m" + }, "yurei": { "target": "kkatano/yurei" }, diff --git a/docs/ChangeLog/20230528/PR14996.md b/docs/ChangeLog/20230528/PR14996.md @@ -0,0 +1,21 @@ +# QMK Breaking Changes - 2023 May 28 Changelog + +## Notable Features :id=notable-features + +### Consolidate modelm ([#14996](https://github.com/qmk/qmk_firmware/pull/14996) + +Several build targets for the IBM Model M were cluttered in different folders. +The maintainers of several Model M replacement controller projects agreed to +consolidate them under one common folder. + +List of the consolidations now in keyboards/modelm/: + +- ashpil_usbc +- ibm122m +- mschwingen +- teensy2 (renamed from modelm101_teensy2) +- teensypp (renamed from modelm101) +- teensypp_ssk (renamed from modelm_ssk) +- ibm122m +- m122_3270 +- yugo_m diff --git a/keyboards/ashpil/modelm_usbc/info.json b/keyboards/ashpil/modelm_usbc/info.json @@ -1,270 +0,0 @@ -{ - "keyboard_name": "IBM Model M 101/102", - "manufacturer": "ashpil", - "url": "https://github.com/ashpil/qmk_firmware/tree/master/keyboards/ashpil/modelm_usbc", - "maintainer": "ashpil", - "usb": { - "vid": "0xFEED", - "pid": "0x0000", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["E6", "E7", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "A0", "A1", "A2", "A3", "A4", "A5"], - "rows": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0"] - }, - "diode_direction": "ROW2COL", - "bootmagic": { - "matrix": [0, 2] - }, - "processor": "at90usb1286", - "bootloader": "atmel-dfu", - "layouts": { - "LAYOUT_fullsize_iso_wkl": { - "layout": [ - {"matrix": [0, 2], "x": 0, "y": 0}, - - {"matrix": [2, 3], "x": 2, "y": 0}, - {"matrix": [2, 4], "x": 3, "y": 0}, - {"matrix": [1, 4], "x": 4, "y": 0}, - {"matrix": [0, 4], "x": 5, "y": 0}, - - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 8], "x": 7.5, "y": 0}, - {"matrix": [1, 9], "x": 8.5, "y": 0}, - {"matrix": [2, 9], "x": 9.5, "y": 0}, - - {"matrix": [2, 6], "x": 11, "y": 0}, - {"matrix": [3, 6], "x": 12, "y": 0}, - {"matrix": [3, 11], "x": 13, "y": 0}, - {"matrix": [3, 12], "x": 14, "y": 0}, - - {"matrix": [3, 15], "x": 15.25, "y": 0}, - {"matrix": [4, 15], "x": 16.25, "y": 0}, - {"matrix": [6, 14], "x": 17.25, "y": 0}, - - {"matrix": [2, 2], "x": 0, "y": 1.5}, - {"matrix": [3, 2], "x": 1, "y": 1.5}, - {"matrix": [3, 3], "x": 2, "y": 1.5}, - {"matrix": [3, 4], "x": 3, "y": 1.5}, - {"matrix": [3, 5], "x": 4, "y": 1.5}, - {"matrix": [2, 5], "x": 5, "y": 1.5}, - {"matrix": [2, 7], "x": 6, "y": 1.5}, - {"matrix": [3, 7], "x": 7, "y": 1.5}, - {"matrix": [3, 8], "x": 8, "y": 1.5}, - {"matrix": [3, 9], "x": 9, "y": 1.5}, - {"matrix": [3, 10], "x": 10, "y": 1.5}, - {"matrix": [2, 10], "x": 11, "y": 1.5}, - {"matrix": [2, 8], "x": 12, "y": 1.5}, - {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"matrix": [2, 12], "x": 15.25, "y": 1.5}, - {"matrix": [2, 14], "x": 16.25, "y": 1.5}, - {"matrix": [2, 13], "x": 17.25, "y": 1.5}, - - {"matrix": [6, 11], "x": 18.5, "y": 1.5}, - {"matrix": [6, 12], "x": 19.5, "y": 1.5}, - {"matrix": [6, 13], "x": 20.5, "y": 1.5}, - {"matrix": [7, 13], "x": 21.5, "y": 1.5}, - - {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"matrix": [1, 8], "x": 12.5, "y": 2.5}, - - {"matrix": [2, 11], "x": 15.25, "y": 2.5}, - {"matrix": [3, 14], "x": 16.25, "y": 2.5}, - {"matrix": [3, 13], "x": 17.25, "y": 2.5}, - - {"matrix": [4, 11], "x": 18.5, "y": 2.5}, - {"matrix": [4, 12], "x": 19.5, "y": 2.5}, - {"matrix": [4, 13], "x": 20.5, "y": 2.5}, - {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, - - {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, - {"matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"matrix": [6, 10], "x": 12.75, "y": 3.5}, - {"matrix": [6, 6], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, - - {"matrix": [1, 11], "x": 18.5, "y": 3.5}, - {"matrix": [1, 12], "x": 19.5, "y": 3.5}, - {"matrix": [1, 13], "x": 20.5, "y": 3.5}, - - {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"matrix": [0, 3], "x": 1.25, "y": 4.5}, - {"matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"matrix": [0, 14], "x": 16.25, "y": 4.5}, - - {"matrix": [5, 11], "x": 18.5, "y": 4.5}, - {"matrix": [5, 12], "x": 19.5, "y": 4.5}, - {"matrix": [5, 13], "x": 20.5, "y": 4.5}, - {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, - - {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"matrix": [7, 14], "x": 15.25, "y": 5.5}, - {"matrix": [7, 11], "x": 16.25, "y": 5.5}, - {"matrix": [7, 12], "x": 17.25, "y": 5.5}, - - {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, - {"matrix": [0, 13], "x": 20.5, "y": 5.5} - ] - }, - "LAYOUT_fullsize_ansi_wkl": { - "layout": [ - {"matrix": [0, 2], "x": 0, "y": 0}, - - {"matrix": [2, 3], "x": 2, "y": 0}, - {"matrix": [2, 4], "x": 3, "y": 0}, - {"matrix": [1, 4], "x": 4, "y": 0}, - {"matrix": [0, 4], "x": 5, "y": 0}, - - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 8], "x": 7.5, "y": 0}, - {"matrix": [1, 9], "x": 8.5, "y": 0}, - {"matrix": [2, 9], "x": 9.5, "y": 0}, - - {"matrix": [2, 6], "x": 11, "y": 0}, - {"matrix": [3, 6], "x": 12, "y": 0}, - {"matrix": [3, 11], "x": 13, "y": 0}, - {"matrix": [3, 12], "x": 14, "y": 0}, - - {"matrix": [3, 15], "x": 15.25, "y": 0}, - {"matrix": [4, 15], "x": 16.25, "y": 0}, - {"matrix": [6, 14], "x": 17.25, "y": 0}, - - {"matrix": [2, 2], "x": 0, "y": 1.5}, - {"matrix": [3, 2], "x": 1, "y": 1.5}, - {"matrix": [3, 3], "x": 2, "y": 1.5}, - {"matrix": [3, 4], "x": 3, "y": 1.5}, - {"matrix": [3, 5], "x": 4, "y": 1.5}, - {"matrix": [2, 5], "x": 5, "y": 1.5}, - {"matrix": [2, 7], "x": 6, "y": 1.5}, - {"matrix": [3, 7], "x": 7, "y": 1.5}, - {"matrix": [3, 8], "x": 8, "y": 1.5}, - {"matrix": [3, 9], "x": 9, "y": 1.5}, - {"matrix": [3, 10], "x": 10, "y": 1.5}, - {"matrix": [2, 10], "x": 11, "y": 1.5}, - {"matrix": [2, 8], "x": 12, "y": 1.5}, - {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"matrix": [2, 12], "x": 15.25, "y": 1.5}, - {"matrix": [2, 14], "x": 16.25, "y": 1.5}, - {"matrix": [2, 13], "x": 17.25, "y": 1.5}, - - {"matrix": [6, 11], "x": 18.5, "y": 1.5}, - {"matrix": [6, 12], "x": 19.5, "y": 1.5}, - {"matrix": [6, 13], "x": 20.5, "y": 1.5}, - {"matrix": [7, 13], "x": 21.5, "y": 1.5}, - - {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"matrix": [1, 8], "x": 12.5, "y": 2.5}, - {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"matrix": [2, 11], "x": 15.25, "y": 2.5}, - {"matrix": [3, 14], "x": 16.25, "y": 2.5}, - {"matrix": [3, 13], "x": 17.25, "y": 2.5}, - - {"matrix": [4, 11], "x": 18.5, "y": 2.5}, - {"matrix": [4, 12], "x": 19.5, "y": 2.5}, - {"matrix": [4, 13], "x": 20.5, "y": 2.5}, - {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, - - {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, - {"matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25}, - - {"matrix": [1, 11], "x": 18.5, "y": 3.5}, - {"matrix": [1, 12], "x": 19.5, "y": 3.5}, - {"matrix": [1, 13], "x": 20.5, "y": 3.5}, - - {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 2.25}, - {"matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"matrix": [0, 14], "x": 16.25, "y": 4.5}, - - {"matrix": [5, 11], "x": 18.5, "y": 4.5}, - {"matrix": [5, 12], "x": 19.5, "y": 4.5}, - {"matrix": [5, 13], "x": 20.5, "y": 4.5}, - {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, - - {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"matrix": [7, 14], "x": 15.25, "y": 5.5}, - {"matrix": [7, 11], "x": 16.25, "y": 5.5}, - {"matrix": [7, 12], "x": 17.25, "y": 5.5}, - - {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, - {"matrix": [0, 13], "x": 20.5, "y": 5.5} - ] - } - } -} diff --git a/keyboards/ashpil/modelm_usbc/readme.md b/keyboards/ashpil/modelm_usbc/readme.md @@ -1,14 +0,0 @@ -# USB C Model M - -![modelm_usbc](https://raw.githubusercontent.com/ashpil/Model-M-Type-C-Controller/master/images/render.png) - -This is a configuration of QMK intended to be used with the [USB C Model M alt controller](https://github.com/ashpil/Model-M-Type-C-Controller "USB C Model M alt controller"). Many thanks to iw0rm3r for working on a similar project and providing the foundation for this! - -* Keyboard Maintainer: [ashpil](https://github.com/ashpil) -* Hardware Supported: [USB C Model M alt controller](https://github.com/ashpil/Model-M-Type-C-Controller) - -Make example for this keyboard (after setting up your build environment): - - make ashpil/modelm_usbc:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm101/info.json b/keyboards/converter/modelm101/info.json @@ -1,145 +0,0 @@ -{ - "keyboard_name": "IBM Model M 101/102", - "manufacturer": "iw0rm3r", - "url": "https://github.com/iw0rm3r/qmk_firmware/tree/modelm101/keyboards/converter/modelm101", - "maintainer": "iw0rm3r", - "usb": { - "vid": "0xFEED", - "pid": "0x0000", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0", "E1", "E0", "D7", "D6", "D5", "D4", "D3", "D2"], - "rows": ["F7", "F6", "F5", "F4", "F3", "F2", "F1", "F0"] - }, - "diode_direction": "ROW2COL", - "processor": "at90usb1286", - "bootloader": "halfkay", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 2], "x": 0, "y": 0}, - - {"matrix": [2, 3], "x": 2, "y": 0}, - {"matrix": [2, 4], "x": 3, "y": 0}, - {"matrix": [1, 4], "x": 4, "y": 0}, - {"matrix": [0, 4], "x": 5, "y": 0}, - - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 8], "x": 7.5, "y": 0}, - {"matrix": [1, 9], "x": 8.5, "y": 0}, - {"matrix": [2, 9], "x": 9.5, "y": 0}, - - {"matrix": [2, 6], "x": 11, "y": 0}, - {"matrix": [3, 6], "x": 12, "y": 0}, - {"matrix": [3, 11], "x": 13, "y": 0}, - {"matrix": [3, 12], "x": 14, "y": 0}, - - {"matrix": [3, 15], "x": 15.25, "y": 0}, - {"matrix": [4, 15], "x": 16.25, "y": 0}, - {"matrix": [6, 14], "x": 17.25, "y": 0}, - - {"matrix": [2, 2], "x": 0, "y": 1.5}, - {"matrix": [3, 2], "x": 1, "y": 1.5}, - {"matrix": [3, 3], "x": 2, "y": 1.5}, - {"matrix": [3, 4], "x": 3, "y": 1.5}, - {"matrix": [3, 5], "x": 4, "y": 1.5}, - {"matrix": [2, 5], "x": 5, "y": 1.5}, - {"matrix": [2, 7], "x": 6, "y": 1.5}, - {"matrix": [3, 7], "x": 7, "y": 1.5}, - {"matrix": [3, 8], "x": 8, "y": 1.5}, - {"matrix": [3, 9], "x": 9, "y": 1.5}, - {"matrix": [3, 10], "x": 10, "y": 1.5}, - {"matrix": [2, 10], "x": 11, "y": 1.5}, - {"matrix": [2, 8], "x": 12, "y": 1.5}, - {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"matrix": [2, 12], "x": 15.25, "y": 1.5}, - {"matrix": [2, 14], "x": 16.25, "y": 1.5}, - {"matrix": [2, 13], "x": 17.25, "y": 1.5}, - - {"matrix": [6, 11], "x": 18.5, "y": 1.5}, - {"matrix": [6, 12], "x": 19.5, "y": 1.5}, - {"matrix": [6, 13], "x": 20.5, "y": 1.5}, - {"matrix": [7, 13], "x": 21.5, "y": 1.5}, - - {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"matrix": [1, 8], "x": 12.5, "y": 2.5}, - {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"matrix": [2, 11], "x": 15.25, "y": 2.5}, - {"matrix": [3, 14], "x": 16.25, "y": 2.5}, - {"matrix": [3, 13], "x": 17.25, "y": 2.5}, - - {"matrix": [4, 11], "x": 18.5, "y": 2.5}, - {"matrix": [4, 12], "x": 19.5, "y": 2.5}, - {"matrix": [4, 13], "x": 20.5, "y": 2.5}, - {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, - - {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, - {"matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"matrix": [6, 10], "x": 12.75, "y": 3.5}, - {"matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, - - {"matrix": [1, 11], "x": 18.5, "y": 3.5}, - {"matrix": [1, 12], "x": 19.5, "y": 3.5}, - {"matrix": [1, 13], "x": 20.5, "y": 3.5}, - - {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"matrix": [0, 3], "x": 1.25, "y": 4.5}, - {"matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"matrix": [0, 14], "x": 16.25, "y": 4.5}, - - {"matrix": [5, 11], "x": 18.5, "y": 4.5}, - {"matrix": [5, 12], "x": 19.5, "y": 4.5}, - {"matrix": [5, 13], "x": 20.5, "y": 4.5}, - {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, - - {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"matrix": [7, 14], "x": 15.25, "y": 5.5}, - {"matrix": [7, 11], "x": 16.25, "y": 5.5}, - {"matrix": [7, 12], "x": 17.25, "y": 5.5}, - - {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, - {"matrix": [0, 13], "x": 20.5, "y": 5.5} - ] - } - } -} diff --git a/keyboards/converter/modelm101/readme.md b/keyboards/converter/modelm101/readme.md @@ -1,42 +0,0 @@ -# modelm101 - -![IBM Model M 101 ANSI/102 ISO](https://i.imgur.com/DAE3W7g.jpg) - -This is a configuration for the QMK firmware for reversible conversion of IBM's Model M keyboards (common 101-key ANSI and 102-key ISO models) from stock, power-hungry controller, to a modern one, running the USB bus. -Configuration is build for the Atmel AT90USB1286 controller, which you can easily use on the Teensy 2.0++ board (produced by PJRC). -Project is heavely based on 2 other projects: -1. Teensy 2.0++-based custom Model M controller running TMK firmware ('modelm" by [lmorchard](https://blog.lmorchard.com/2016/02/21/modelm-controller/)); - had a few issues. -2. Teensy 2.0++-based custom Model M 122-key controller running QMK firmware ("ibm122m" by [lukexorz](https://github.com/lukexorz)); - had wrong layout for 101/102-key boards and no status LED support. - -For this conversion you will need: -1. Teensy 2.0++ dev board itself (can be used a different dev board, but it will require some changes in configuration); -2. Ribbon connectors to connect the membrane to a dev board. Depending on your Model M variation, you will need 1 Trio-mate 16pin connector (6-520315-6 or 6-520415-6) and 1 Trio-mate 8pin connector (5-120628-8 or 5-520314-8), or 2 Trio-mate 16pin connectors; -3. Full-sized breadboard (without power rails; half-size should do, but full-sized one looks more native) or a PCB to wire everything up; -4. A bunch of jumper wires; -5. mini-USB male cable with any USB socket you want to use to connect Teensy inside the keyboard to your PC (I use short mini-USB male to mini-USB female cable); -6. (optional) Resistors for connecting status LEDs if your LED PCB doesn't have any; -7. (optional) Double-sided tape to fix USB socket on or inside the keyboard case. - -Pins of the Teensy board you should use by default: -``` -Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -Pins: C7 C6 C5 C4 C3 C2 C1 C0 E1 E0 D7 D6 D5 D4 D3 D2 --------------------------------------------------------- -Rows: 1 2 3 4 5 6 7 8 -Pins: F7 F6 F5 F4 F3 F2 F1 F0 --------------------------------------------------------- -Status LEDs: CapsLock +5V ScrollLock NumLock -Pins: B6 5V B5 B4 -``` - -Please note that some versions of Model M have LED connected with a ribbon cable, and not with separate wires. - -Keyboard Maintainer: [iw0rm3r](https://github.com/iw0rm3r) -Hardware Supported: Teensy 2.0++ board by PJRC -Hardware Availability: https://www.pjrc.com/store/teensypp.html - -Make example for this keyboard (after setting up your build environment): - - make converter/modelm101:default:teensy - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm101_teensy2/info.json b/keyboards/converter/modelm101_teensy2/info.json @@ -1,149 +0,0 @@ -{ - "keyboard_name": "IBM Model M 101/102", - "manufacturer": "wangfuco", - "url": "https://github.com/wangfuco/qmk_firmware/tree/modelm101_teensy2/keyboards/converter/modelm101_teensy2", - "maintainer": "wangfuco", - "usb": { - "vid": "0xFEED", - "pid": "0x0000", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "B6", "B5", "B4", "D7", "D6", "B0", "B1", "B2", "B3", "B7"], - "rows": ["D0", "D1", "D2", "D3", "C6", "C7", "D5", "D4"] - }, - "diode_direction": "ROW2COL", - "indicators": { - "caps_lock": "E6", - "on_state": 0 - }, - "processor": "atmega32u4", - "bootloader": "halfkay", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 2], "x": 0, "y": 0}, - - {"matrix": [2, 3], "x": 2, "y": 0}, - {"matrix": [2, 4], "x": 3, "y": 0}, - {"matrix": [1, 4], "x": 4, "y": 0}, - {"matrix": [0, 4], "x": 5, "y": 0}, - - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 8], "x": 7.5, "y": 0}, - {"matrix": [1, 9], "x": 8.5, "y": 0}, - {"matrix": [2, 9], "x": 9.5, "y": 0}, - - {"matrix": [2, 6], "x": 11, "y": 0}, - {"matrix": [3, 6], "x": 12, "y": 0}, - {"matrix": [3, 11], "x": 13, "y": 0}, - {"matrix": [3, 12], "x": 14, "y": 0}, - - {"matrix": [3, 15], "x": 15.25, "y": 0}, - {"matrix": [4, 15], "x": 16.25, "y": 0}, - {"matrix": [6, 14], "x": 17.25, "y": 0}, - - {"matrix": [2, 2], "x": 0, "y": 1.5}, - {"matrix": [3, 2], "x": 1, "y": 1.5}, - {"matrix": [3, 3], "x": 2, "y": 1.5}, - {"matrix": [3, 4], "x": 3, "y": 1.5}, - {"matrix": [3, 5], "x": 4, "y": 1.5}, - {"matrix": [2, 5], "x": 5, "y": 1.5}, - {"matrix": [2, 7], "x": 6, "y": 1.5}, - {"matrix": [3, 7], "x": 7, "y": 1.5}, - {"matrix": [3, 8], "x": 8, "y": 1.5}, - {"matrix": [3, 9], "x": 9, "y": 1.5}, - {"matrix": [3, 10], "x": 10, "y": 1.5}, - {"matrix": [2, 10], "x": 11, "y": 1.5}, - {"matrix": [2, 8], "x": 12, "y": 1.5}, - {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"matrix": [2, 12], "x": 15.25, "y": 1.5}, - {"matrix": [2, 14], "x": 16.25, "y": 1.5}, - {"matrix": [2, 13], "x": 17.25, "y": 1.5}, - - {"matrix": [6, 11], "x": 18.5, "y": 1.5}, - {"matrix": [6, 12], "x": 19.5, "y": 1.5}, - {"matrix": [6, 13], "x": 20.5, "y": 1.5}, - {"matrix": [7, 13], "x": 21.5, "y": 1.5}, - - {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"matrix": [1, 8], "x": 12.5, "y": 2.5}, - {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"matrix": [2, 11], "x": 15.25, "y": 2.5}, - {"matrix": [3, 14], "x": 16.25, "y": 2.5}, - {"matrix": [3, 13], "x": 17.25, "y": 2.5}, - - {"matrix": [4, 11], "x": 18.5, "y": 2.5}, - {"matrix": [4, 12], "x": 19.5, "y": 2.5}, - {"matrix": [4, 13], "x": 20.5, "y": 2.5}, - {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, - - {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, - {"matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"matrix": [6, 10], "x": 12.75, "y": 3.5}, - {"matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, - - {"matrix": [1, 11], "x": 18.5, "y": 3.5}, - {"matrix": [1, 12], "x": 19.5, "y": 3.5}, - {"matrix": [1, 13], "x": 20.5, "y": 3.5}, - - {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"matrix": [0, 3], "x": 1.25, "y": 4.5}, - {"matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"matrix": [0, 14], "x": 16.25, "y": 4.5}, - - {"matrix": [5, 11], "x": 18.5, "y": 4.5}, - {"matrix": [5, 12], "x": 19.5, "y": 4.5}, - {"matrix": [5, 13], "x": 20.5, "y": 4.5}, - {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, - - {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"matrix": [7, 14], "x": 15.25, "y": 5.5}, - {"matrix": [7, 11], "x": 16.25, "y": 5.5}, - {"matrix": [7, 12], "x": 17.25, "y": 5.5}, - - {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, - {"matrix": [0, 13], "x": 20.5, "y": 5.5} - ] - } - } -} diff --git a/keyboards/converter/modelm101_teensy2/readme.md b/keyboards/converter/modelm101_teensy2/readme.md @@ -1,29 +0,0 @@ -# modelm101_teensy2 - -![IBM Model M 101 ANSI/102 ISO](https://user-images.githubusercontent.com/46733695/161862805-c891735b-e2e8-418a-ad82-d71c00570eab.jpg) - -This is based on the modelm101 keyboard by iw0rm3r. The difference is that Teensy 2.0 board (produced by PJRC) is used instead of the Teensy 2.0++ due to the availability issues. Only CapsLock LED is supported since Teensy 2.0 only has 25 digital I/0 pins. - -Configuration is build for the Atmel ATmega32U4 controller, which you can easily use on the Teensy 2.0 board (produced by PJRC). - -Pins of the Teensy board you should use by default: -``` -Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -Pins: F0 F1 F4 F5 F6 F7 B6 B5 B4 D7 D6 B0 B1 B2 B3 B7 --------------------------------------------------------- -Rows: 1 2 3 4 5 6 7 8 -Pins: D0 D1 D2 D3 C6 C7 D5 D4 --------------------------------------------------------- -Status LEDs: CapsLock +5V ScrollLock NumLock -Pins: E6 5V - - -``` - -Keyboard Maintainer: [wangfuco](https://github.com/wangfuco) -Hardware Supported: Teensy 2.0 board by PJRC -Hardware Availability: https://www.pjrc.com/store/teensy.html - -Make example for this keyboard (after setting up your build environment): - - make converter/modelm101_teensy2:default:teensy - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json @@ -1,128 +0,0 @@ -{ - "keyboard_name": "IBM Model M Space-Saving Keyboard", - "manufacturer": "tiltowait", - "url": "https://github.com/tiltowait/qmk_firmware/tree/modelm_ssk/keyboards/converter/modelm_ssk", - "maintainer": "tiltowait", - "usb": { - "vid": "0xFEED", - "pid": "0x0000", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0", "E1", "E0", "D7", "D5", "D4", "D3", "D2", "D1"], - "rows": ["F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7"] - }, - "diode_direction": "ROW2COL", - "indicators": { - "caps_lock": "B6", - "num_lock": "B4", - "scroll_lock": "B5" - }, - "processor": "at90usb1286", - "bootloader": "halfkay", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [7, 2], "x": 0, "y": 0}, - - {"matrix": [5, 3], "x": 2, "y": 0}, - {"matrix": [5, 4], "x": 3, "y": 0}, - {"matrix": [6, 4], "x": 4, "y": 0}, - {"matrix": [7, 4], "x": 5, "y": 0}, - - {"matrix": [7, 6], "x": 6.5, "y": 0}, - {"matrix": [7, 8], "x": 7.5, "y": 0}, - {"matrix": [6, 9], "x": 8.5, "y": 0}, - {"matrix": [5, 9], "x": 9.5, "y": 0}, - - {"matrix": [5, 6], "x": 11, "y": 0}, - {"matrix": [4, 6], "x": 12, "y": 0}, - {"matrix": [4, 11], "x": 13, "y": 0}, - {"matrix": [4, 12], "x": 14, "y": 0}, - - {"matrix": [4, 15], "x": 15.25, "y": 0}, - {"matrix": [3, 15], "x": 16.25, "y": 0}, - {"matrix": [1, 14], "x": 17.25, "y": 0}, - - {"matrix": [5, 2], "x": 0, "y": 1.5}, - {"matrix": [4, 2], "x": 1, "y": 1.5}, - {"matrix": [4, 3], "x": 2, "y": 1.5}, - {"matrix": [4, 4], "x": 3, "y": 1.5}, - {"matrix": [4, 5], "x": 4, "y": 1.5}, - {"matrix": [5, 5], "x": 5, "y": 1.5}, - {"matrix": [5, 7], "x": 6, "y": 1.5}, - {"matrix": [4, 7], "x": 7, "y": 1.5}, - {"matrix": [4, 8], "x": 8, "y": 1.5}, - {"matrix": [4, 9], "x": 9, "y": 1.5}, - {"matrix": [4, 10], "x": 10, "y": 1.5}, - {"matrix": [5, 10], "x": 11, "y": 1.5}, - {"matrix": [5, 8], "x": 12, "y": 1.5}, - {"matrix": [6, 6], "x": 13, "y": 1.5, "w": 2}, - - {"matrix": [5, 12], "x": 15.25, "y": 1.5}, - {"matrix": [5, 14], "x": 16.25, "y": 1.5}, - {"matrix": [5, 13], "x": 17.25, "y": 1.5}, - - {"matrix": [6, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"matrix": [3, 2], "x": 1.5, "y": 2.5}, - {"matrix": [3, 3], "x": 2.5, "y": 2.5}, - {"matrix": [3, 4], "x": 3.5, "y": 2.5}, - {"matrix": [3, 5], "x": 4.5, "y": 2.5}, - {"matrix": [6, 5], "x": 5.5, "y": 2.5}, - {"matrix": [6, 7], "x": 6.5, "y": 2.5}, - {"matrix": [3, 7], "x": 7.5, "y": 2.5}, - {"matrix": [3, 8], "x": 8.5, "y": 2.5}, - {"matrix": [3, 9], "x": 9.5, "y": 2.5}, - {"matrix": [3, 10], "x": 10.5, "y": 2.5}, - {"matrix": [6, 10], "x": 11.5, "y": 2.5}, - {"matrix": [6, 8], "x": 12.5, "y": 2.5}, - {"matrix": [2, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"matrix": [5, 11], "x": 15.25, "y": 2.5}, - {"matrix": [4, 14], "x": 16.25, "y": 2.5}, - {"matrix": [4, 13], "x": 17.25, "y": 2.5}, - - {"matrix": [6, 3], "x": 0, "y": 3.5, "w": 1.5}, - {"matrix": [2, 2], "x": 1.75, "y": 3.5}, - {"matrix": [2, 3], "x": 2.75, "y": 3.5}, - {"matrix": [2, 4], "x": 3.75, "y": 3.5}, - {"matrix": [2, 5], "x": 4.75, "y": 3.5}, - {"matrix": [7, 5], "x": 5.75, "y": 3.5}, - {"matrix": [7, 7], "x": 6.75, "y": 3.5}, - {"matrix": [2, 7], "x": 7.75, "y": 3.5}, - {"matrix": [2, 8], "x": 8.75, "y": 3.5}, - {"matrix": [2, 9], "x": 9.75, "y": 3.5}, - {"matrix": [2, 10], "x": 10.75, "y": 3.5}, - {"matrix": [7, 10], "x": 11.75, "y": 3.5}, - {"matrix": [1, 10], "x": 12.75, "y": 3.5}, - {"matrix": [1, 6], "x": 13.75, "y": 3.5, "w": 1.25}, - - {"matrix": [6, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"matrix": [7, 3], "x": 1.25, "y": 4.5}, - {"matrix": [1, 2], "x": 2.25, "y": 4.5}, - {"matrix": [1, 3], "x": 3.25, "y": 4.5}, - {"matrix": [1, 4], "x": 4.25, "y": 4.5}, - {"matrix": [1, 5], "x": 5.25, "y": 4.5}, - {"matrix": [0, 5], "x": 6.25, "y": 4.5}, - {"matrix": [0, 7], "x": 7.25, "y": 4.5}, - {"matrix": [1, 7], "x": 8.25, "y": 4.5}, - {"matrix": [1, 8], "x": 9.25, "y": 4.5}, - {"matrix": [1, 9], "x": 10.25, "y": 4.5}, - {"matrix": [0, 10], "x": 11.25, "y": 4.5}, - {"matrix": [1, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"matrix": [7, 14], "x": 16.25, "y": 4.5}, - - {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"matrix": [7, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"matrix": [0, 6], "x": 4, "y": 5.5, "w": 7}, - {"matrix": [0, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"matrix": [1, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"matrix": [0, 14], "x": 15.25, "y": 5.5}, - {"matrix": [0, 11], "x": 16.25, "y": 5.5}, - {"matrix": [0, 12], "x": 17.25, "y": 5.5} - ] - } - } -} diff --git a/keyboards/converter/modelm_ssk/readme.md b/keyboards/converter/modelm_ssk/readme.md @@ -1,55 +0,0 @@ -# modelm_ssk - -![IBM Model M Space-Saving Keyboard](https://i.imgur.com/CSXrQI5.jpg) - -This is a QMK firmware configuration for the IBM Model M Space-Saving Keyboard (SSK). Based on [this project](https://github.com/qmk/qmk_firmware/tree/master/keyboards/converter/modelm101), it features a few slight improvements and, most importantly, a full remapping to match the SSK's matrix, which differs from its full-sized cousins. The modification is easily reversible, as no part of the keyboard is permanently changed. Just take out the replacement controller and reinstall the original, should you desire. - -The numpad layer (accessed with Shift + Scroll Lock as with the original controller) is mapped to layer 7 by default. All non-numpad keys are transparent. - -**Note:** As of this writing, this configuration has only been tested on the 1392464 SSK. It's possible other models differ in their internal matrices. Should the provided matrix not work for you (and you are certain of your connections), you can enable debugging with `CONSOLE_ENABLE = yes` in `rules.mk` and by following the directions in `default/keymap.c`. Once done, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) will display row/col information to help you remap `modelm_ssk.h`. - -## Requirements - -* [Teensy++ 2.0](https://www.pjrc.com/store/teensypp.html) - I recommend buying one with pins already attached -* A Trio-Mate 16-pin ribbon connector (6-520315-6 or 6-520415-6) -* A Trio-Mate 8-pin ribbon connector (5-120628-8 or 5-520314-8). Alternatively, two 16-pin connectors can be used if the 8-pin is out of stock. Just be sure to line up your pins correctly -* Breadboard or perfboard. A perfboard is recommended due to its reduced height and low clearance inside the chassis -* Mini-B to USB-A cable -* Jumper wires and wire strippers/cutters -* Soldering iron if not using a breadboard - -## Setup - -![Finished controller](https://i.imgur.com/m1yuo4F.jpg) - -The controller uses the following mapping (in zero-indexed hex): - -``` -Column: 0 1 2 3 4 5 6 7 8 9 A B C D E F -Pin: C7 C6 C5 C4 C3 C2 C1 C0 E1 E0 D7 D5 D4 D3 D2 D1 --------------------------------------------------------- -Row: 0 1 2 3 4 5 6 7 -Pin: F0 F1 F2 F3 F4 F5 F6 F7 -``` - -**IMPORTANT:** It is necessary to skip pin D6 on the Teensy. There is an LED attached to this pin, which can cause interference with registering keys. Alternatively, you can remove the LED from the board, which is likely to be a permanent modification of the Teensy. The choice is yours. I am not responsible for any damage to your Teensy or keyboard. - -## A note on the Unicomp Mini M - -This configuration will not work out of the box with the [Unicomp Mini M](https://www.pckeyboard.com/page/product/MINI_M). That keyboard uses a 16x12 matrix rather than the SSK's 16x8 in order to reduce occurrences of 2KRO lockup. It also features lock lights, which the SSK lacks. However, it should be possible to map out the Mini M's matrix to get it working. - -## Maintainer - -* Keyboard Maintainer: [tiltowait](https://github.com/tiltowait), original work by [iw0rm3r](https://github.com/iw0rm3r) -* Hardware Supported: Teensy 2.0++ board by PJRC -* Hardware Availability: https://www.pjrc.com/store/teensypp.html - -## Building - -Make example for this keyboard (after setting up your build environment): - - make converter/modelm_ssk:default - -You must press the button on the Teensy to enter the bootloader the first time. Afterward, so long as you keep `COMMAND_ENABLE = yes` in `rules.mk` (enabled by default), you can use `Left Shift + Right Shift + B` to enter the bootloader. With this method, you can omit `:teensy` from the end of the `make` command. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/ibm122m/info.json b/keyboards/handwired/ibm122m/info.json @@ -1,168 +0,0 @@ -{ - "keyboard_name": "IBM Model M 122 key", - "manufacturer": "IBM", - "maintainer": "qmk", - "usb": { - "vid": "0xFEED", - "pid": "0x0000", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["E6", "B7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C7", "F1"], - "rows": ["F0", "B5", "B4", "B3", "B2", "B1", "B0", "E7"] - }, - "diode_direction": "ROW2COL", - "processor": "at90usb1286", - "bootloader": "halfkay", - "debounce": 15, - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 9], "x": 3.25, "y": 0}, - {"matrix": [1, 9], "x": 4.25, "y": 0}, - {"matrix": [1, 10], "x": 5.25, "y": 0}, - {"matrix": [2, 9], "x": 6.25, "y": 0}, - {"matrix": [3, 9], "x": 7.25, "y": 0}, - {"matrix": [3, 10], "x": 8.25, "y": 0}, - {"matrix": [4, 9], "x": 9.25, "y": 0}, - {"matrix": [5, 9], "x": 10.25, "y": 0}, - {"matrix": [5, 10], "x": 11.25, "y": 0}, - {"matrix": [6, 9], "x": 12.25, "y": 0}, - {"matrix": [7, 9], "x": 13.25, "y": 0}, - {"matrix": [7, 10], "x": 14.25, "y": 0}, - - {"matrix": [0, 10], "x": 3.25, "y": 1}, - {"matrix": [0, 11], "x": 4.25, "y": 1}, - {"matrix": [1, 11], "x": 5.25, "y": 1}, - {"matrix": [2, 10], "x": 6.25, "y": 1}, - {"matrix": [2, 11], "x": 7.25, "y": 1}, - {"matrix": [3, 11], "x": 8.25, "y": 1}, - {"matrix": [4, 10], "x": 9.25, "y": 1}, - {"matrix": [4, 11], "x": 10.25, "y": 1}, - {"matrix": [5, 11], "x": 11.25, "y": 1}, - {"matrix": [6, 10], "x": 12.25, "y": 1}, - {"matrix": [6, 11], "x": 13.25, "y": 1}, - {"matrix": [7, 11], "x": 14.25, "y": 1}, - - {"matrix": [3, 1], "x": 0, "y": 3}, - {"matrix": [3, 2], "x": 1, "y": 3}, - - {"matrix": [3, 4], "x": 2.25, "y": 3}, - {"matrix": [2, 4], "x": 3.25, "y": 3}, - {"matrix": [2, 5], "x": 4.25, "y": 3}, - {"matrix": [2, 6], "x": 5.25, "y": 3}, - {"matrix": [2, 7], "x": 6.25, "y": 3}, - {"matrix": [3, 7], "x": 7.25, "y": 3}, - {"matrix": [3, 8], "x": 8.25, "y": 3}, - {"matrix": [2, 8], "x": 9.25, "y": 3}, - {"matrix": [2, 12], "x": 10.25, "y": 3}, - {"matrix": [2, 13], "x": 11.25, "y": 3}, - {"matrix": [2, 14], "x": 12.25, "y": 3}, - {"matrix": [3, 14], "x": 13.25, "y": 3}, - {"matrix": [3, 12], "x": 14.25, "y": 3}, - {"matrix": [3, 15], "x": 15.25, "y": 3, "w": 2}, - - {"matrix": [3, 16], "x": 17.5, "y": 3}, - {"matrix": [3, 17], "x": 18.5, "y": 3}, - {"matrix": [2, 16], "x": 19.5, "y": 3}, - - {"matrix": [2, 15], "x": 20.75, "y": 3}, - {"matrix": [2, 17], "x": 21.75, "y": 3}, - {"matrix": [2, 18], "x": 22.75, "y": 3}, - {"matrix": [2, 0], "x": 23.75, "y": 3}, - - {"matrix": [2, 1], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - - {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5}, - {"matrix": [4, 4], "x": 3.75, "y": 4}, - {"matrix": [4, 5], "x": 4.75, "y": 4}, - {"matrix": [4, 6], "x": 5.75, "y": 4}, - {"matrix": [4, 7], "x": 6.75, "y": 4}, - {"matrix": [5, 7], "x": 7.75, "y": 4}, - {"matrix": [5, 8], "x": 8.75, "y": 4}, - {"matrix": [4, 8], "x": 9.75, "y": 4}, - {"matrix": [4, 12], "x": 10.75, "y": 4}, - {"matrix": [4, 13], "x": 11.75, "y": 4}, - {"matrix": [4, 14], "x": 12.75, "y": 4}, - {"matrix": [5, 14], "x": 13.75, "y": 4}, - {"matrix": [5, 12], "x": 14.75, "y": 4}, - {"matrix": [6, 15], "x": 16, "y": 4, "w": 1.25, "h": 2}, - - {"matrix": [1, 16], "x": 17.5, "y": 4}, - {"matrix": [5, 16], "x": 18.5, "y": 4}, - {"matrix": [4, 16], "x": 19.5, "y": 4}, - - {"matrix": [4, 15], "x": 20.75, "y": 4}, - {"matrix": [4, 17], "x": 21.75, "y": 4}, - {"matrix": [4, 18], "x": 22.75, "y": 4}, - {"matrix": [4, 0], "x": 23.75, "y": 4}, - - {"matrix": [5, 1], "x": 0, "y": 5}, - {"matrix": [5, 2], "x": 1, "y": 5}, - - {"matrix": [6, 2], "x": 2.25, "y": 5, "w": 1.75}, - {"matrix": [1, 4], "x": 4, "y": 5}, - {"matrix": [1, 5], "x": 5, "y": 5}, - {"matrix": [1, 6], "x": 6, "y": 5}, - {"matrix": [1, 7], "x": 7, "y": 5}, - {"matrix": [0, 7], "x": 8, "y": 5}, - {"matrix": [0, 8], "x": 9, "y": 5}, - {"matrix": [1, 8], "x": 10, "y": 5}, - {"matrix": [1, 12], "x": 11, "y": 5}, - {"matrix": [1, 13], "x": 12, "y": 5}, - {"matrix": [1, 14], "x": 13, "y": 5}, - {"matrix": [0, 14], "x": 14, "y": 5}, - {"matrix": [6, 14], "x": 15, "y": 5}, - - {"matrix": [0, 16], "x": 18.5, "y": 5}, - - {"matrix": [1, 15], "x": 20.75, "y": 5}, - {"matrix": [1, 17], "x": 21.75, "y": 5}, - {"matrix": [1, 18], "x": 22.75, "y": 5}, - - {"matrix": [1, 0], "x": 23.75, "y": 5}, - - {"matrix": [1, 1], "x": 0, "y": 6}, - {"matrix": [1, 2], "x": 1, "y": 6}, - - {"matrix": [7, 3], "x": 2.25, "y": 6, "w": 1.25}, - {"matrix": [7, 4], "x": 3.5, "y": 6}, - {"matrix": [6, 4], "x": 4.5, "y": 6}, - {"matrix": [6, 5], "x": 5.5, "y": 6}, - {"matrix": [6, 6], "x": 6.5, "y": 6}, - {"matrix": [6, 7], "x": 7.5, "y": 6}, - {"matrix": [7, 7], "x": 8.5, "y": 6}, - {"matrix": [7, 8], "x": 9.5, "y": 6}, - {"matrix": [6, 8], "x": 10.5, "y": 6}, - {"matrix": [6, 12], "x": 11.5, "y": 6}, - {"matrix": [6, 13], "x": 12.5, "y": 6}, - {"matrix": [7, 14], "x": 13.5, "y": 6}, - {"matrix": [6, 3], "x": 14.5, "y": 6, "w": 2.75}, - - {"matrix": [6, 0], "x": 17.5, "y": 6}, - {"matrix": [0, 19], "x": 18.5, "y": 6}, - {"matrix": [1, 19], "x": 19.5, "y": 6}, - - {"matrix": [6, 1], "x": 20.75, "y": 6}, - {"matrix": [6, 17], "x": 21.75, "y": 6}, - {"matrix": [6, 18], "x": 22.75, "y": 6}, - {"matrix": [7, 19], "x": 23.75, "y": 6, "h": 2}, - - {"matrix": [0, 2], "x": 0, "y": 7}, - {"matrix": [0, 1], "x": 1, "y": 7}, - - {"matrix": [0, 0], "x": 2.25, "y": 7, "w": 1.5}, - {"matrix": [7, 0], "x": 4.75, "y": 7, "w": 1.5}, - {"matrix": [7, 1], "x": 6.25, "y": 7, "w": 7}, - {"matrix": [0, 3], "x": 13.25, "y": 7, "w": 1.5}, - {"matrix": [7, 2], "x": 15.75, "y": 7, "w": 1.5}, - - {"matrix": [0, 15], "x": 18.5, "y": 7}, - - {"matrix": [7, 17], "x": 20.75, "y": 7, "w": 2}, - {"matrix": [7, 18], "x": 22.75, "y": 7} - ] - } - } -} diff --git a/keyboards/handwired/ibm122m/readme.md b/keyboards/handwired/ibm122m/readme.md @@ -1,16 +0,0 @@ -# ibm122m - -![IBM Model M 122 key](https://i.imgur.com/Oo3Ozqz.jpg) - -This is a keymap for the IBM Model M 122 key terminal keyboard running on a Teensy 2.0++ -I wired it to weird pins on mine (mainly to accomodate speakers), so make sure to update the pin arrays. - -Keyboard Maintainer: [Luke Stanley](https://github.com/lukexorz) -Hardware Supported: Teensy 2.0++ -Hardware Availability: https://www.pjrc.com/store/teensypp.html - -Make example for this keyboard (after setting up your build environment): - - make handwired/ibm122m:default - -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/ashpil/modelm_usbc/modelm_usbc.c b/keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c diff --git a/keyboards/ibm/model_m/ashpil_usbc/info.json b/keyboards/ibm/model_m/ashpil_usbc/info.json @@ -0,0 +1,270 @@ +{ + "keyboard_name": "IBM Model M 101/102", + "manufacturer": "ashpil", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/ashpil_usbc", + "maintainer": "ashpil", + "usb": { + "vid": "0xFEED", + "pid": "0x0000", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["E6", "E7", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "A0", "A1", "A2", "A3", "A4", "A5"], + "rows": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0"] + }, + "diode_direction": "ROW2COL", + "bootmagic": { + "matrix": [0, 2] + }, + "processor": "at90usb1286", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT_fullsize_iso_wkl": { + "layout": [ + {"matrix": [0, 2], "x": 0, "y": 0}, + + {"matrix": [2, 3], "x": 2, "y": 0}, + {"matrix": [2, 4], "x": 3, "y": 0}, + {"matrix": [1, 4], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [1, 9], "x": 8.5, "y": 0}, + {"matrix": [2, 9], "x": 9.5, "y": 0}, + + {"matrix": [2, 6], "x": 11, "y": 0}, + {"matrix": [3, 6], "x": 12, "y": 0}, + {"matrix": [3, 11], "x": 13, "y": 0}, + {"matrix": [3, 12], "x": 14, "y": 0}, + + {"matrix": [3, 15], "x": 15.25, "y": 0}, + {"matrix": [4, 15], "x": 16.25, "y": 0}, + {"matrix": [6, 14], "x": 17.25, "y": 0}, + + {"matrix": [2, 2], "x": 0, "y": 1.5}, + {"matrix": [3, 2], "x": 1, "y": 1.5}, + {"matrix": [3, 3], "x": 2, "y": 1.5}, + {"matrix": [3, 4], "x": 3, "y": 1.5}, + {"matrix": [3, 5], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 7], "x": 6, "y": 1.5}, + {"matrix": [3, 7], "x": 7, "y": 1.5}, + {"matrix": [3, 8], "x": 8, "y": 1.5}, + {"matrix": [3, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 10], "x": 10, "y": 1.5}, + {"matrix": [2, 10], "x": 11, "y": 1.5}, + {"matrix": [2, 8], "x": 12, "y": 1.5}, + {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [2, 12], "x": 15.25, "y": 1.5}, + {"matrix": [2, 14], "x": 16.25, "y": 1.5}, + {"matrix": [2, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 11], "x": 18.5, "y": 1.5}, + {"matrix": [6, 12], "x": 19.5, "y": 1.5}, + {"matrix": [6, 13], "x": 20.5, "y": 1.5}, + {"matrix": [7, 13], "x": 21.5, "y": 1.5}, + + {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"matrix": [1, 8], "x": 12.5, "y": 2.5}, + + {"matrix": [2, 11], "x": 15.25, "y": 2.5}, + {"matrix": [3, 14], "x": 16.25, "y": 2.5}, + {"matrix": [3, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [4, 11], "x": 18.5, "y": 2.5}, + {"matrix": [4, 12], "x": 19.5, "y": 2.5}, + {"matrix": [4, 13], "x": 20.5, "y": 2.5}, + {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, + + {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"matrix": [6, 10], "x": 12.75, "y": 3.5}, + {"matrix": [6, 6], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + + {"matrix": [1, 11], "x": 18.5, "y": 3.5}, + {"matrix": [1, 12], "x": 19.5, "y": 3.5}, + {"matrix": [1, 13], "x": 20.5, "y": 3.5}, + + {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [0, 3], "x": 1.25, "y": 4.5}, + {"matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [0, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 11], "x": 18.5, "y": 4.5}, + {"matrix": [5, 12], "x": 19.5, "y": 4.5}, + {"matrix": [5, 13], "x": 20.5, "y": 4.5}, + {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [7, 14], "x": 15.25, "y": 5.5}, + {"matrix": [7, 11], "x": 16.25, "y": 5.5}, + {"matrix": [7, 12], "x": 17.25, "y": 5.5}, + + {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [0, 13], "x": 20.5, "y": 5.5} + ] + }, + "LAYOUT_fullsize_ansi_wkl": { + "layout": [ + {"matrix": [0, 2], "x": 0, "y": 0}, + + {"matrix": [2, 3], "x": 2, "y": 0}, + {"matrix": [2, 4], "x": 3, "y": 0}, + {"matrix": [1, 4], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [1, 9], "x": 8.5, "y": 0}, + {"matrix": [2, 9], "x": 9.5, "y": 0}, + + {"matrix": [2, 6], "x": 11, "y": 0}, + {"matrix": [3, 6], "x": 12, "y": 0}, + {"matrix": [3, 11], "x": 13, "y": 0}, + {"matrix": [3, 12], "x": 14, "y": 0}, + + {"matrix": [3, 15], "x": 15.25, "y": 0}, + {"matrix": [4, 15], "x": 16.25, "y": 0}, + {"matrix": [6, 14], "x": 17.25, "y": 0}, + + {"matrix": [2, 2], "x": 0, "y": 1.5}, + {"matrix": [3, 2], "x": 1, "y": 1.5}, + {"matrix": [3, 3], "x": 2, "y": 1.5}, + {"matrix": [3, 4], "x": 3, "y": 1.5}, + {"matrix": [3, 5], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 7], "x": 6, "y": 1.5}, + {"matrix": [3, 7], "x": 7, "y": 1.5}, + {"matrix": [3, 8], "x": 8, "y": 1.5}, + {"matrix": [3, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 10], "x": 10, "y": 1.5}, + {"matrix": [2, 10], "x": 11, "y": 1.5}, + {"matrix": [2, 8], "x": 12, "y": 1.5}, + {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [2, 12], "x": 15.25, "y": 1.5}, + {"matrix": [2, 14], "x": 16.25, "y": 1.5}, + {"matrix": [2, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 11], "x": 18.5, "y": 1.5}, + {"matrix": [6, 12], "x": 19.5, "y": 1.5}, + {"matrix": [6, 13], "x": 20.5, "y": 1.5}, + {"matrix": [7, 13], "x": 21.5, "y": 1.5}, + + {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"matrix": [1, 8], "x": 12.5, "y": 2.5}, + {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [2, 11], "x": 15.25, "y": 2.5}, + {"matrix": [3, 14], "x": 16.25, "y": 2.5}, + {"matrix": [3, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [4, 11], "x": 18.5, "y": 2.5}, + {"matrix": [4, 12], "x": 19.5, "y": 2.5}, + {"matrix": [4, 13], "x": 20.5, "y": 2.5}, + {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, + + {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25}, + + {"matrix": [1, 11], "x": 18.5, "y": 3.5}, + {"matrix": [1, 12], "x": 19.5, "y": 3.5}, + {"matrix": [1, 13], "x": 20.5, "y": 3.5}, + + {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [0, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 11], "x": 18.5, "y": 4.5}, + {"matrix": [5, 12], "x": 19.5, "y": 4.5}, + {"matrix": [5, 13], "x": 20.5, "y": 4.5}, + {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [7, 14], "x": 15.25, "y": 5.5}, + {"matrix": [7, 11], "x": 16.25, "y": 5.5}, + {"matrix": [7, 12], "x": 17.25, "y": 5.5}, + + {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [0, 13], "x": 20.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/config.h b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h diff --git a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c diff --git a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk diff --git a/keyboards/ashpil/modelm_usbc/keymaps/default/keymap.c b/keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c diff --git a/keyboards/ibm/model_m/ashpil_usbc/readme.md b/keyboards/ibm/model_m/ashpil_usbc/readme.md @@ -0,0 +1,14 @@ +# USB C Model M + +![modelm_usbc](https://raw.githubusercontent.com/ashpil/Model-M-Type-C-Controller/master/images/render.png) + +This is a configuration of QMK intended to be used with the [USB C Model M alt controller](https://github.com/ashpil/Model-M-Type-C-Controller "USB C Model M alt controller"). Many thanks to iw0rm3r for working on a similar project and providing the foundation for this! + +* Keyboard Maintainer: [ashpil](https://github.com/ashpil) +* Hardware Supported: [USB C Model M alt controller](https://github.com/ashpil/Model-M-Type-C-Controller) + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m/ashpil_usbc:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ashpil/modelm_usbc/rules.mk b/keyboards/ibm/model_m/ashpil_usbc/rules.mk diff --git a/keyboards/ibm/model_m/modelm/readme.md b/keyboards/ibm/model_m/modelm/readme.md @@ -0,0 +1,24 @@ +# IBM Model M + +This is the parent directory for all projects that replace the controller +of IBM's Model M Keyboard and then run QMK on it. + +These controllers differ in their use of microcontrollers, connection (mainly +USB) optional speakers etc. + +Some of them can be bought fully assembled others are do-it-yourself. + +## Warning - Model M Variants + +**Not all of these projects will fit into your keyboard!** + +As the Model M was produced over several years there are many variants of the +controller PCB. Check what fits your keyboard before you build/order one. + +The variants built for PCs differ in: +* PCB size +* Connectors (8/12 pin flex, location) +* Ground wire connector location + +Additionally IBM built Model M variants for terminals with 122 keys, the +space saving keyboard (SSK, 84-key) etc. diff --git a/keyboards/ibm/model_m/mschwingen/config.h b/keyboards/ibm/model_m/mschwingen/config.h @@ -0,0 +1,77 @@ +/* + * Copyright 2020 Michael Schwingen + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + + +/* key matrix size */ +#define MATRIX_ROWS 16 +#define MATRIX_COLS 8 + +/* pins for external shift registers */ +#define SR_LOAD_PIN B0 +#define SR_CLK_PIN B1 +#define SR_DIN_PIN B3 +#define SR_DOUT_PIN B2 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT +#define NORMAL_PRINT +//#define USER_PRINT + + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +//#define DEBUG_MATRIX_SCAN_RATE +#define DYNAMIC_MACRO_NO_NESTING + +#define MODELM_STATUS_LED E6 + +#define MODELM_LED1 B5 +#define MODELM_LED2 B6 +#define MODELM_LED3 D0 + +#if defined(KEYBOARD_ibm_model_m_mschwingen_led_wired) +# define MODELM_LED_CAPSLOCK MODELM_LED1 +# define MODELM_LED_SCROLLOCK MODELM_LED2 +# define MODELM_LED_NUMLOCK MODELM_LED3 +#elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ffc) +# define MODELM_LED_CAPSLOCK MODELM_LED2 +# define MODELM_LED_SCROLLOCK MODELM_LED3 +# define MODELM_LED_NUMLOCK MODELM_LED1 +#elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ws2812) +#else +# error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set! +#endif + +// 3* WS2812 LEDs instead of singlecolor GPIO LEDs +#define RGBLED_NUM 3 + +// disabled, needs PCB patch. +//#define AUDIO_PIN C6 +//#define NO_MUSIC_MODE diff --git a/keyboards/ibm/model_m/mschwingen/info.json b/keyboards/ibm/model_m/mschwingen/info.json @@ -0,0 +1,143 @@ +{ + "keyboard_name": "atmega32U4 board for IBM Model M", + "manufacturer": "mschwingen", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/mschwingen", + "maintainer": "mschwingen", + "usb": { + "vid": "0xFEED", + "pid": "0x558E", + "device_version": "0.0.1" + }, + "ws2812": { + "pin": "B6" + }, + "processor": "atmega32u4", + "bootloader": "lufa-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [13, 7], "x": 0, "y": 0}, + + {"matrix": [12, 5], "x": 2, "y": 0}, + {"matrix": [11, 5], "x": 3, "y": 0}, + {"matrix": [11, 6], "x": 4, "y": 0}, + {"matrix": [11, 7], "x": 5, "y": 0}, + + {"matrix": [9, 7], "x": 6.5, "y": 0}, + {"matrix": [7, 7], "x": 7.5, "y": 0}, + {"matrix": [6, 6], "x": 8.5, "y": 0}, + {"matrix": [6, 5], "x": 9.5, "y": 0}, + + {"matrix": [9, 5], "x": 11, "y": 0}, + {"matrix": [9, 4], "x": 12, "y": 0}, + {"matrix": [4, 4], "x": 13, "y": 0}, + {"matrix": [3, 4], "x": 14, "y": 0}, + + {"matrix": [0, 4], "x": 15.5, "y": 0}, + {"matrix": [0, 3], "x": 16.5, "y": 0}, + {"matrix": [1, 1], "x": 17.5, "y": 0}, + + {"matrix": [13, 5], "x": 0, "y": 2}, + {"matrix": [13, 4], "x": 1, "y": 2}, + {"matrix": [12, 4], "x": 2, "y": 2}, + {"matrix": [11, 4], "x": 3, "y": 2}, + {"matrix": [10, 4], "x": 4, "y": 2}, + {"matrix": [10, 5], "x": 5, "y": 2}, + {"matrix": [8, 5], "x": 6, "y": 2}, + {"matrix": [8, 4], "x": 7, "y": 2}, + {"matrix": [7, 4], "x": 8, "y": 2}, + {"matrix": [6, 4], "x": 9, "y": 2}, + {"matrix": [5, 4], "x": 10, "y": 2}, + {"matrix": [5, 5], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + {"matrix": [9, 6], "x": 13, "y": 2, "w": 2}, + + {"matrix": [3, 5], "x": 15.5, "y": 2}, + {"matrix": [1, 5], "x": 16.5, "y": 2}, + {"matrix": [2, 5], "x": 17.5, "y": 2}, + + {"matrix": [4, 1], "x": 19, "y": 2}, + {"matrix": [3, 1], "x": 20, "y": 2}, + {"matrix": [2, 1], "x": 21, "y": 2}, + {"matrix": [2, 0], "x": 22, "y": 2}, + + {"matrix": [13, 6], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [13, 3], "x": 1.5, "y": 3}, + {"matrix": [12, 3], "x": 2.5, "y": 3}, + {"matrix": [11, 3], "x": 3.5, "y": 3}, + {"matrix": [10, 3], "x": 4.5, "y": 3}, + {"matrix": [10, 6], "x": 5.5, "y": 3}, + {"matrix": [8, 6], "x": 6.5, "y": 3}, + {"matrix": [8, 3], "x": 7.5, "y": 3}, + {"matrix": [7, 3], "x": 8.5, "y": 3}, + {"matrix": [6, 3], "x": 9.5, "y": 3}, + {"matrix": [5, 3], "x": 10.5, "y": 3}, + {"matrix": [5, 6], "x": 11.5, "y": 3}, + {"matrix": [7, 6], "x": 12.5, "y": 3}, + {"matrix": [9, 2], "x": 13.5, "y": 3, "w": 1.5}, + + {"matrix": [4, 5], "x": 15.5, "y": 3}, + {"matrix": [1, 4], "x": 16.5, "y": 3}, + {"matrix": [2, 4], "x": 17.5, "y": 3}, + + {"matrix": [4, 3], "x": 19, "y": 3}, + {"matrix": [3, 3], "x": 20, "y": 3}, + {"matrix": [2, 3], "x": 21, "y": 3}, + {"matrix": [1, 3], "x": 22, "y": 3, "h": 2}, + + {"matrix": [12, 6], "x": 0, "y": 4, "w": 1.75}, + {"matrix": [13, 2], "x": 1.75, "y": 4}, + {"matrix": [12, 2], "x": 2.75, "y": 4}, + {"matrix": [11, 2], "x": 3.75, "y": 4}, + {"matrix": [10, 2], "x": 4.75, "y": 4}, + {"matrix": [10, 7], "x": 5.75, "y": 4}, + {"matrix": [8, 7], "x": 6.75, "y": 4}, + {"matrix": [8, 2], "x": 7.75, "y": 4}, + {"matrix": [7, 2], "x": 8.75, "y": 4}, + {"matrix": [6, 2], "x": 9.75, "y": 4}, + {"matrix": [5, 2], "x": 10.75, "y": 4}, + {"matrix": [5, 7], "x": 11.75, "y": 4}, + {"matrix": [5, 1], "x": 12.75, "y": 4}, + {"matrix": [9, 1], "x": 13.75, "y": 4, "w": 1.25}, + + {"matrix": [4, 6], "x": 19, "y": 4}, + {"matrix": [3, 6], "x": 20, "y": 4}, + {"matrix": [2, 6], "x": 21, "y": 4}, + + {"matrix": [14, 6], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [12, 7], "x": 1.25, "y": 5}, + {"matrix": [13, 1], "x": 2.25, "y": 5}, + {"matrix": [12, 1], "x": 3.25, "y": 5}, + {"matrix": [11, 1], "x": 4.25, "y": 5}, + {"matrix": [10, 1], "x": 5.25, "y": 5}, + {"matrix": [10, 0], "x": 6.25, "y": 5}, + {"matrix": [8, 0], "x": 7.25, "y": 5}, + {"matrix": [8, 1], "x": 8.25, "y": 5}, + {"matrix": [7, 1], "x": 9.25, "y": 5}, + {"matrix": [6, 1], "x": 10.25, "y": 5}, + {"matrix": [5, 0], "x": 11.25, "y": 5}, + {"matrix": [14, 1], "x": 12.25, "y": 5, "w": 2.75}, + + {"matrix": [1, 7], "x": 16.5, "y": 5}, + + {"matrix": [4, 2], "x": 19, "y": 5}, + {"matrix": [3, 2], "x": 20, "y": 5}, + {"matrix": [2, 2], "x": 21, "y": 5}, + {"matrix": [1, 2], "x": 22, "y": 5, "h": 2}, + + {"matrix": [15, 5], "x": 0, "y": 6, "w": 1.5}, + {"matrix": [0, 7], "x": 2.5, "y": 6, "w": 1.5}, + {"matrix": [9, 0], "x": 4, "y": 6, "w": 7}, + {"matrix": [0, 0], "x": 11, "y": 6, "w": 1.5}, + {"matrix": [15, 1], "x": 13.5, "y": 6, "w": 1.5}, + + {"matrix": [1, 0], "x": 15.5, "y": 6}, + {"matrix": [4, 0], "x": 16.5, "y": 6}, + {"matrix": [3, 0], "x": 17.5, "y": 6}, + + {"matrix": [3, 7], "x": 19, "y": 6, "w": 2}, + {"matrix": [2, 7], "x": 21, "y": 6} + ] + } + } +} diff --git a/keyboards/mschwingen/modelm/keymaps/default/keymap.c b/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c diff --git a/keyboards/ibm/model_m/mschwingen/led_ffc/readme.md b/keyboards/ibm/model_m/mschwingen/led_ffc/readme.md @@ -0,0 +1,21 @@ +# atmega32U4 board for IBM Model M, LEDs connected with flexible flat cable (FFC) + +![modelm](https://raw.githubusercontent.com/mschwingen/hardware/master/modelm-usb/images/PCB.jpg) + +This is a configuration of QMK intended to be used with the [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb). + +* Keyboard Maintainer: [Michael Schwingen](https://github.com/mschwingen/) +* Hardware Supported: [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb) +* Hardware Availability: need to build your own. + +Make example for this keyboard (after setting up your build environment), run one of: + + make ibm/model_m/mschwingen/led_ffc:default + +Flashing example for this keyboard: + + make ibm/model_m/mschwingen/led_ffc:default:flash + +Bootloader: do not use the QMK bootloader, use the bootloader from [here](https://github.com/mschwingen/modelm-lufa-bootloader) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mschwingen/modelm/led_ffc/rules.mk b/keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk diff --git a/keyboards/ibm/model_m/mschwingen/led_wired/readme.md b/keyboards/ibm/model_m/mschwingen/led_wired/readme.md @@ -0,0 +1,21 @@ +# atmega32U4 board for IBM Model M, LEDs connected with wires + +![modelm](https://raw.githubusercontent.com/mschwingen/hardware/master/modelm-usb/images/PCB.jpg) + +This is a configuration of QMK intended to be used with the [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb). + +* Keyboard Maintainer: [Michael Schwingen](https://github.com/mschwingen/) +* Hardware Supported: [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb) +* Hardware Availability: need to build your own. + +Make example for this keyboard (after setting up your build environment), run one of: + + make ibm/model_m/mschwingen/led_wired:default + +Flashing example for this keyboard: + + make ibm/model_m/mschwingen/led_wired:default:flash + +Bootloader: do not use the QMK bootloader, use the bootloader from [here](https://github.com/mschwingen/modelm-lufa-bootloader) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mschwingen/modelm/led_wired/rules.mk b/keyboards/ibm/model_m/mschwingen/led_wired/rules.mk diff --git a/keyboards/ibm/model_m/mschwingen/led_ws2812/readme.md b/keyboards/ibm/model_m/mschwingen/led_ws2812/readme.md @@ -0,0 +1,21 @@ +# atmega32U4 board for IBM Model M, old LEDs replaces with WS2812 RGB LEDs + +![modelm](https://raw.githubusercontent.com/mschwingen/hardware/master/modelm-usb/images/PCB.jpg) + +This is a configuration of QMK intended to be used with the [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb). + +* Keyboard Maintainer: [Michael Schwingen](https://github.com/mschwingen/) +* Hardware Supported: [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb) +* Hardware Availability: need to build your own. + +Make example for this keyboard (after setting up your build environment), run one of: + + make ibm/model_m/mschwingen/led_ws2812:default + +Flashing example for this keyboard: + + make ibm/model_m/mschwingen/led_ws2812:default:flash + +Bootloader: do not use the QMK bootloader, use the bootloader from [here](https://github.com/mschwingen/modelm-lufa-bootloader) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mschwingen/modelm/led_ws2812/rules.mk b/keyboards/ibm/model_m/mschwingen/led_ws2812/rules.mk diff --git a/keyboards/ibm/model_m/mschwingen/matrix.c b/keyboards/ibm/model_m/mschwingen/matrix.c @@ -0,0 +1,113 @@ +/* + * Copyright 2020 Michael Schwingen + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include <stdint.h> +#include <stdbool.h> +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" +#include "spi_master.h" +#include "print.h" +#include "mschwingen.h" + +#define SPI_TIMEOUT 100 + +/* Keyboard Matrix Assignments */ +static uint16_t row_bits[MATRIX_ROWS] = { + 0x4000, 0x8000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0100, 0x0200, + 0x0040, 0x0080, 0x0020, 0x0010, 0x0008, 0x0004, 0x0001, 0x0002}; + +static const pin_t col_pins[MATRIX_COLS] = {D1, D4, D7, B4, F7, F6, F5, F4}; + +static void select_col(uint8_t col) { + setPinOutput(col_pins[col]); + writePinLow(col_pins[col]); +} + +static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); } + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh(col_pins[x]); + } +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + uint16_t row_data; + bool matrix_changed = false; + + // Select col and wait for col selecton to stabilize + select_col(current_col); + matrix_io_delay(); + + writePinLow(SR_LOAD_PIN); + writePinHigh(SR_LOAD_PIN); + + row_data = spi_read() << 8; + row_data |= spi_read(); + + debug_hex8(~row_data); + dprint(" "); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + matrix_row_t current_row_value = last_row_value; + + // Check row pin state + if ((row_data & row_bits[row_index]) == 0) { + // Pin LO, set col bit + current_row_value |= (MATRIX_ROW_SHIFTER << current_col); + } else { + // Pin HI, clear col bit + current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_row_value)) { + matrix_changed = true; + current_matrix[row_index] = current_row_value; + } + } + + // Unselect col + unselect_col(current_col); + + return matrix_changed; +} + +void matrix_init_custom(void) { + unselect_cols(); + + // set 4MHz SPI clock + SPSR = 0; + SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + + dprint("\r\nScan: "); + + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); + } + update_layer_leds(); + return changed; +} diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c @@ -0,0 +1,213 @@ +/* + * Copyright 2020 Michael Schwingen + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include <util/delay.h> +#include "mschwingen.h" +#include "uart.h" +#include "print.h" +#include "sendchar.h" +#include "ws2812.h" +#include "sleep_led.h" + +#ifdef UART_DEBUG +# undef sendchar +static int8_t capture_sendchar(uint8_t c) { + // sendchar(c); + uart_write(c); + return 0; +} +#endif + +static uint16_t blink_cycle_timer; +static bool blink_state = false; +static uint8_t isRecording = 0; + +#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 +# if RGBLED_NUM < 3 +# error we need at least 3 RGB LEDs! +# endif +static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; + +# define BRIGHT 32 +# define DIM 6 + +static const cRGB black = {.r = 0, .g = 0, .b = 0}; + +static const __attribute__((unused)) cRGB green = {.r = 0, .g = BRIGHT, .b = 0}; +static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0}; + +static const __attribute__((unused)) cRGB red = {.r = BRIGHT, .g = 0, .b = 0}; +static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0}; + +static const __attribute__((unused)) cRGB blue = {.r = 0, .g = 0, .b = BRIGHT}; +static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM}; + +static const __attribute__((unused)) cRGB turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; +static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM}; + +static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; + +static led_t led_state; +static uint8_t layer; +static uint8_t default_layer; +#endif + +// we need our own sleep_led_* implementation to get callbacks on USB +// suspend/resume in order to completely turn off WS2812 LEDs +static bool suspend_active = false; +void sleep_led_init(void) {} + +void sleep_led_toggle(void) {} + +void sleep_led_disable(void) { + suspend_active = false; + writePinHigh(MODELM_STATUS_LED); +} + +void sleep_led_enable(void) { + suspend_active = true; + writePinLow(MODELM_STATUS_LED); +#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 + led[0] = black; + led[1] = black; + led[2] = black; + ws2812_setleds(led, RGBLED_NUM); +#endif +} + +void keyboard_pre_init_kb(void) { +#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 + ws2812_setleds(led, RGBLED_NUM); +#else + /* Set status LEDs pins to output and Low (on) */ + setPinOutput(MODELM_LED_CAPSLOCK); + setPinOutput(MODELM_LED_SCROLLOCK); + setPinOutput(MODELM_LED_NUMLOCK); + writePinLow(MODELM_LED_CAPSLOCK); + writePinLow(MODELM_LED_SCROLLOCK); + writePinLow(MODELM_LED_NUMLOCK); +#endif + setPinOutput(MODELM_STATUS_LED); + writePinHigh(MODELM_STATUS_LED); + _delay_ms(50); +#ifdef UART_DEBUG + uart_init(115200); + print_set_sendchar(capture_sendchar); + uprintf("\r\nHello world!\r\n"); +#endif + + setPinOutput(SR_LOAD_PIN); + setPinOutput(SR_CLK_PIN); + setPinOutput(SR_DOUT_PIN); // MOSI - unused + writePinLow(SR_CLK_PIN); +} + +#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 +static void led_update_rgb(void) { + if (isRecording && blink_state) { + led[0] = white; + } else { + switch (default_layer) { + case 0: + led[0] = led_state.num_lock ? blue : lblue; + break; + case 1: + led[0] = led_state.num_lock ? green : black; + break; + } + } + + led[1] = led_state.caps_lock ? green : black; + + switch (layer) { + case 0: + case 1: + default: + led[2] = led_state.scroll_lock ? green : black; + break; + case 2: + led[2] = led_state.scroll_lock ? red : lred; + break; + case 3: + led[2] = led_state.scroll_lock ? turq : lturq; + break; + } + if (!suspend_active) { + ws2812_setleds(led, RGBLED_NUM); + } +} + +bool led_update_kb(led_t state) { + dprintf("LED Update: %d %d %d", led_state.num_lock, led_state.caps_lock, led_state.scroll_lock); + led_state = state; + led_update_rgb(); + + return true; +} + +void update_layer_leds(void) { + static uint8_t old_layer = 255; + static uint8_t old_default_layer = 255; + + layer = get_highest_layer(layer_state); + default_layer = get_highest_layer(default_layer_state); + + if (isRecording && timer_elapsed(blink_cycle_timer) > 150) { + blink_state = !blink_state; + blink_cycle_timer = timer_read(); + old_layer = 255; // fallthrough next check + } + + if (layer == old_layer && default_layer == old_default_layer) { + return; + } + old_layer = layer; + old_default_layer = default_layer; + dprintf("Layer change: %d %d", default_layer, layer); + led_update_rgb(); +} + +/*****************************************************************************/ +#else // classic LEDs on GPIO +bool led_update_kb(led_t led_state) { + dprintf("LED Update: %d %d %d", led_state.num_lock, led_state.caps_lock, led_state.scroll_lock); + + if (led_update_user(led_state)) { + if (!isRecording) writePin(MODELM_LED_NUMLOCK, !led_state.num_lock); + writePin(MODELM_LED_CAPSLOCK, !led_state.caps_lock); + writePin(MODELM_LED_SCROLLOCK, !led_state.scroll_lock); + } + return true; +} + +void update_layer_leds(void) { + if (isRecording && timer_elapsed(blink_cycle_timer) > 150) { + blink_state = !blink_state; + blink_cycle_timer = timer_read(); + writePin(MODELM_LED_NUMLOCK, blink_state); + } +} + +#endif + +void dynamic_macro_record_start_user(int8_t direction) { + isRecording++; + blink_cycle_timer = timer_read(); +} + +void dynamic_macro_record_end_user(int8_t direction) { + if (isRecording) isRecording--; +} diff --git a/keyboards/mschwingen/modelm/modelm.h b/keyboards/ibm/model_m/mschwingen/mschwingen.h diff --git a/keyboards/mschwingen/modelm/post_rules.mk b/keyboards/ibm/model_m/mschwingen/post_rules.mk diff --git a/keyboards/ibm/model_m/mschwingen/readme.md b/keyboards/ibm/model_m/mschwingen/readme.md @@ -0,0 +1,25 @@ +# atmega32U4 board for IBM Model M + +![modelm](https://raw.githubusercontent.com/mschwingen/hardware/master/modelm-usb/images/PCB.jpg) + +This is a configuration of QMK intended to be used with the [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb). + +* Keyboard Maintainer: [Michael Schwingen](https://github.com/mschwingen/) +* Hardware Supported: [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb) +* Hardware Availability: need to build your own. + +Make example for this keyboard (after setting up your build environment), run one of: + + make ibm/model_m/mschwingen/led_wired:default + make ibm/model_m/mschwingen/led_ffc:default + make ibm/model_m/mschwingen/led_ws2812:default + +flash: + + make ibm/model_m/mschwingen/led_wired:default:flash + make ibm/model_m/mschwingen/led_ffc:default:flash + make ibm/model_m/mschwingen/led_ws2812:default:flash + +Bootloader: do not use the QMK bootloader, use the bootloader from [here](https://github.com/mschwingen/modelm-lufa-bootloader) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ibm/model_m/mschwingen/rules.mk b/keyboards/ibm/model_m/mschwingen/rules.mk @@ -0,0 +1,29 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +CUSTOM_MATRIX = lite +KEY_LOCK_ENABLE = yes + +DYNAMIC_MACRO_ENABLE = yes + +UART_DEBUG = no + +SRC += matrix.c +QUANTUM_LIB_SRC += uart.c \ + spi_master.c + +OPT_DEFS += -DSLEEP_LED_ENABLE # we need our own sleep callbacks to turn of WS2812 LEDs + +LTO_ENABLE = yes + +DEFAULT_FOLDER = ibm/model_m/mschwingen/led_wired diff --git a/keyboards/converter/modelm101/config.h b/keyboards/ibm/model_m/teensy2/config.h diff --git a/keyboards/ibm/model_m/teensy2/info.json b/keyboards/ibm/model_m/teensy2/info.json @@ -0,0 +1,149 @@ +{ + "keyboard_name": "IBM Model M 101/102", + "manufacturer": "wangfuco", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/teensy2", + "maintainer": "wangfuco", + "usb": { + "vid": "0xFEED", + "pid": "0x0000", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "B6", "B5", "B4", "D7", "D6", "B0", "B1", "B2", "B3", "B7"], + "rows": ["D0", "D1", "D2", "D3", "C6", "C7", "D5", "D4"] + }, + "diode_direction": "ROW2COL", + "indicators": { + "caps_lock": "E6", + "on_state": 0 + }, + "processor": "atmega32u4", + "bootloader": "halfkay", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 2], "x": 0, "y": 0}, + + {"matrix": [2, 3], "x": 2, "y": 0}, + {"matrix": [2, 4], "x": 3, "y": 0}, + {"matrix": [1, 4], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [1, 9], "x": 8.5, "y": 0}, + {"matrix": [2, 9], "x": 9.5, "y": 0}, + + {"matrix": [2, 6], "x": 11, "y": 0}, + {"matrix": [3, 6], "x": 12, "y": 0}, + {"matrix": [3, 11], "x": 13, "y": 0}, + {"matrix": [3, 12], "x": 14, "y": 0}, + + {"matrix": [3, 15], "x": 15.25, "y": 0}, + {"matrix": [4, 15], "x": 16.25, "y": 0}, + {"matrix": [6, 14], "x": 17.25, "y": 0}, + + {"matrix": [2, 2], "x": 0, "y": 1.5}, + {"matrix": [3, 2], "x": 1, "y": 1.5}, + {"matrix": [3, 3], "x": 2, "y": 1.5}, + {"matrix": [3, 4], "x": 3, "y": 1.5}, + {"matrix": [3, 5], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 7], "x": 6, "y": 1.5}, + {"matrix": [3, 7], "x": 7, "y": 1.5}, + {"matrix": [3, 8], "x": 8, "y": 1.5}, + {"matrix": [3, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 10], "x": 10, "y": 1.5}, + {"matrix": [2, 10], "x": 11, "y": 1.5}, + {"matrix": [2, 8], "x": 12, "y": 1.5}, + {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [2, 12], "x": 15.25, "y": 1.5}, + {"matrix": [2, 14], "x": 16.25, "y": 1.5}, + {"matrix": [2, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 11], "x": 18.5, "y": 1.5}, + {"matrix": [6, 12], "x": 19.5, "y": 1.5}, + {"matrix": [6, 13], "x": 20.5, "y": 1.5}, + {"matrix": [7, 13], "x": 21.5, "y": 1.5}, + + {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"matrix": [1, 8], "x": 12.5, "y": 2.5}, + {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [2, 11], "x": 15.25, "y": 2.5}, + {"matrix": [3, 14], "x": 16.25, "y": 2.5}, + {"matrix": [3, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [4, 11], "x": 18.5, "y": 2.5}, + {"matrix": [4, 12], "x": 19.5, "y": 2.5}, + {"matrix": [4, 13], "x": 20.5, "y": 2.5}, + {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, + + {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"matrix": [6, 10], "x": 12.75, "y": 3.5}, + {"matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, + + {"matrix": [1, 11], "x": 18.5, "y": 3.5}, + {"matrix": [1, 12], "x": 19.5, "y": 3.5}, + {"matrix": [1, 13], "x": 20.5, "y": 3.5}, + + {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [0, 3], "x": 1.25, "y": 4.5}, + {"matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [0, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 11], "x": 18.5, "y": 4.5}, + {"matrix": [5, 12], "x": 19.5, "y": 4.5}, + {"matrix": [5, 13], "x": 20.5, "y": 4.5}, + {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [7, 14], "x": 15.25, "y": 5.5}, + {"matrix": [7, 11], "x": 16.25, "y": 5.5}, + {"matrix": [7, 12], "x": 17.25, "y": 5.5}, + + {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [0, 13], "x": 20.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/converter/modelm101/keymaps/default/keymap.c b/keyboards/ibm/model_m/teensy2/keymaps/default/keymap.c diff --git a/keyboards/converter/modelm101/keymaps/default/readme.md b/keyboards/ibm/model_m/teensy2/keymaps/default/readme.md diff --git a/keyboards/ibm/model_m/teensy2/readme.md b/keyboards/ibm/model_m/teensy2/readme.md @@ -0,0 +1,29 @@ +# modelm101_teensy2 + +![IBM Model M 101 ANSI/102 ISO](https://user-images.githubusercontent.com/46733695/161862805-c891735b-e2e8-418a-ad82-d71c00570eab.jpg) + +This is based on the modelm101 teensypp keyboard by iw0rm3r. The difference is that Teensy 2.0 board (produced by PJRC) is used instead of the Teensy++ 2.0 due to the availability issues. Only CapsLock LED is supported since Teensy 2.0 only has 25 digital I/0 pins. + +Configuration is build for the Atmel ATmega32U4 controller, which you can easily use on the Teensy 2.0 board (produced by PJRC). + +Pins of the Teensy board you should use by default: +``` +Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +Pins: F0 F1 F4 F5 F6 F7 B6 B5 B4 D7 D6 B0 B1 B2 B3 B7 +-------------------------------------------------------- +Rows: 1 2 3 4 5 6 7 8 +Pins: D0 D1 D2 D3 C6 C7 D5 D4 +-------------------------------------------------------- +Status LEDs: CapsLock +5V ScrollLock NumLock +Pins: E6 5V - - +``` + +Keyboard Maintainer: [wangfuco](https://github.com/wangfuco) +Hardware Supported: Teensy 2.0 board by PJRC +Hardware Availability: https://www.pjrc.com/store/teensy.html + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m/teensy2:default:teensy + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm101_teensy2/rules.mk b/keyboards/ibm/model_m/teensy2/rules.mk diff --git a/keyboards/converter/modelm101_teensy2/config.h b/keyboards/ibm/model_m/teensypp/config.h diff --git a/keyboards/ibm/model_m/teensypp/info.json b/keyboards/ibm/model_m/teensypp/info.json @@ -0,0 +1,145 @@ +{ + "keyboard_name": "IBM Model M 101/102", + "manufacturer": "iw0rm3r", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/teensypp", + "maintainer": "iw0rm3r", + "usb": { + "vid": "0xFEED", + "pid": "0x0000", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0", "E1", "E0", "D7", "D6", "D5", "D4", "D3", "D2"], + "rows": ["F7", "F6", "F5", "F4", "F3", "F2", "F1", "F0"] + }, + "diode_direction": "ROW2COL", + "processor": "at90usb1286", + "bootloader": "halfkay", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 2], "x": 0, "y": 0}, + + {"matrix": [2, 3], "x": 2, "y": 0}, + {"matrix": [2, 4], "x": 3, "y": 0}, + {"matrix": [1, 4], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 8], "x": 7.5, "y": 0}, + {"matrix": [1, 9], "x": 8.5, "y": 0}, + {"matrix": [2, 9], "x": 9.5, "y": 0}, + + {"matrix": [2, 6], "x": 11, "y": 0}, + {"matrix": [3, 6], "x": 12, "y": 0}, + {"matrix": [3, 11], "x": 13, "y": 0}, + {"matrix": [3, 12], "x": 14, "y": 0}, + + {"matrix": [3, 15], "x": 15.25, "y": 0}, + {"matrix": [4, 15], "x": 16.25, "y": 0}, + {"matrix": [6, 14], "x": 17.25, "y": 0}, + + {"matrix": [2, 2], "x": 0, "y": 1.5}, + {"matrix": [3, 2], "x": 1, "y": 1.5}, + {"matrix": [3, 3], "x": 2, "y": 1.5}, + {"matrix": [3, 4], "x": 3, "y": 1.5}, + {"matrix": [3, 5], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 7], "x": 6, "y": 1.5}, + {"matrix": [3, 7], "x": 7, "y": 1.5}, + {"matrix": [3, 8], "x": 8, "y": 1.5}, + {"matrix": [3, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 10], "x": 10, "y": 1.5}, + {"matrix": [2, 10], "x": 11, "y": 1.5}, + {"matrix": [2, 8], "x": 12, "y": 1.5}, + {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [2, 12], "x": 15.25, "y": 1.5}, + {"matrix": [2, 14], "x": 16.25, "y": 1.5}, + {"matrix": [2, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 11], "x": 18.5, "y": 1.5}, + {"matrix": [6, 12], "x": 19.5, "y": 1.5}, + {"matrix": [6, 13], "x": 20.5, "y": 1.5}, + {"matrix": [7, 13], "x": 21.5, "y": 1.5}, + + {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"matrix": [1, 8], "x": 12.5, "y": 2.5}, + {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [2, 11], "x": 15.25, "y": 2.5}, + {"matrix": [3, 14], "x": 16.25, "y": 2.5}, + {"matrix": [3, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [4, 11], "x": 18.5, "y": 2.5}, + {"matrix": [4, 12], "x": 19.5, "y": 2.5}, + {"matrix": [4, 13], "x": 20.5, "y": 2.5}, + {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2}, + + {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"matrix": [6, 10], "x": 12.75, "y": 3.5}, + {"matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, + + {"matrix": [1, 11], "x": 18.5, "y": 3.5}, + {"matrix": [1, 12], "x": 19.5, "y": 3.5}, + {"matrix": [1, 13], "x": 20.5, "y": 3.5}, + + {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [0, 3], "x": 1.25, "y": 4.5}, + {"matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [0, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 11], "x": 18.5, "y": 4.5}, + {"matrix": [5, 12], "x": 19.5, "y": 4.5}, + {"matrix": [5, 13], "x": 20.5, "y": 4.5}, + {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [7, 14], "x": 15.25, "y": 5.5}, + {"matrix": [7, 11], "x": 16.25, "y": 5.5}, + {"matrix": [7, 12], "x": 17.25, "y": 5.5}, + + {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [0, 13], "x": 20.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c b/keyboards/ibm/model_m/teensypp/keymaps/default/keymap.c diff --git a/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md b/keyboards/ibm/model_m/teensypp/keymaps/default/readme.md diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/config.h b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/readme.md b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md diff --git a/keyboards/ibm/model_m/teensypp/readme.md b/keyboards/ibm/model_m/teensypp/readme.md @@ -0,0 +1,42 @@ +# modelm101 + +![IBM Model M 101 ANSI/102 ISO](https://i.imgur.com/DAE3W7g.jpg) + +This is a configuration for the QMK firmware for reversible conversion of IBM's Model M keyboards (common 101-key ANSI and 102-key ISO models) from stock, power-hungry controller, to a modern one, running the USB bus. +Configuration is build for the Atmel AT90USB1286 controller, which you can easily use on the Teensy++ 2.0 board (produced by PJRC). +Project is heavely based on 2 other projects: +1. Teensy++ 2.0-based custom Model M controller running TMK firmware ('modelm" by [lmorchard](https://blog.lmorchard.com/2016/02/21/modelm-controller/)); - had a few issues. +2. Teensy++ 2.0-based custom Model M 122-key controller running QMK firmware ("ibm122m" by [lukexorz](https://github.com/lukexorz)); - had wrong layout for 101/102-key boards and no status LED support. + +For this conversion you will need: +1. Teensy++ 2.0 dev board itself (can be used a different dev board, but it will require some changes in configuration); +2. Ribbon connectors to connect the membrane to a dev board. Depending on your Model M variation, you will need 1 Trio-mate 16pin connector (6-520315-6 or 6-520415-6) and 1 Trio-mate 8pin connector (5-120628-8 or 5-520314-8), or 2 Trio-mate 16pin connectors; +3. Full-sized breadboard (without power rails; half-size should do, but full-sized one looks more native) or a PCB to wire everything up; +4. A bunch of jumper wires; +5. mini-USB male cable with any USB socket you want to use to connect Teensy inside the keyboard to your PC (I use short mini-USB male to mini-USB female cable); +6. (optional) Resistors for connecting status LEDs if your LED PCB doesn't have any; +7. (optional) Double-sided tape to fix USB socket on or inside the keyboard case. + +Pins of the Teensy board you should use by default: +``` +Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +Pins: C7 C6 C5 C4 C3 C2 C1 C0 E1 E0 D7 D6 D5 D4 D3 D2 +-------------------------------------------------------- +Rows: 1 2 3 4 5 6 7 8 +Pins: F7 F6 F5 F4 F3 F2 F1 F0 +-------------------------------------------------------- +Status LEDs: CapsLock +5V ScrollLock NumLock +Pins: B6 5V B5 B4 +``` + +Please note that some versions of Model M have LED connected with a ribbon cable, and not with separate wires. + +* Keyboard Maintainer: [iw0rm3r](https://github.com/iw0rm3r) +* Hardware Supported: Teensy++ 2.0 board by PJRC +* Hardware Availability: https://www.pjrc.com/store/teensypp.html + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m/teensypp:default:teensy + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm101/rules.mk b/keyboards/ibm/model_m/teensypp/rules.mk diff --git a/keyboards/converter/modelm101/modelm101.c b/keyboards/ibm/model_m/teensypp/teensypp.c diff --git a/keyboards/yugo_m/model_m_101/config.h b/keyboards/ibm/model_m/yugo_m/config.h diff --git a/keyboards/ibm/model_m/yugo_m/info.json b/keyboards/ibm/model_m/yugo_m/info.json @@ -0,0 +1,398 @@ +{ + "keyboard_name": "Yugo-M (IBM Model M replacment controller)", + "manufacturer": "IBM", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/yugo_m", + "maintainer": "Nidzo Tomic", + "usb": { + "vid": "0xFEED", + "pid": "0x8E81", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3"], + "rows": ["B8", "B7", "B6", "B5", "B4", "B3", "A15", "A14"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F303", + "bootloader": "stm32-dfu", + "board": "QMK_PROTON_C", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, + {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, + {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, + {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, + {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, + {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, + {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, + {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, + + {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, + {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, + {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, + {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, + {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, + {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, + {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, + {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, + {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, + {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, + {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, + {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, + {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, + {"label": "\\", "matrix": [4, 6], "x": 13, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 6], "x": 14, "y": 1.5}, + + {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, + {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, + {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, + + {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, + {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, + {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, + {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, + + {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, + {"label": "\\", "matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, + {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, + {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, + + {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, + {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, + {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, + {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5}, + + {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, + {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"label": "#", "matrix": [6, 10], "x": 12.75, "y": 3.5}, + {"label": "Enter", "matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, + + {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, + {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, + {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, + {"label": "=", "matrix": [1, 14], "x": 22, "y": 3.5}, + + {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "\\", "matrix": [0, 3], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"label": "\\", "matrix": [7, 8], "x": 12.25, "y": 4.5}, + {"label": "Shift", "matrix": [6, 1], "x": 13.25, "y": 4.5, "w": 1.75}, + + {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, + + {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, + {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, + {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, + {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5}, + + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, + {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, + {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, + + {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5}, + {"label": ",", "matrix": [0, 12], "x": 20, "y": 5.5}, + {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5}, + {"label": "GUI", "matrix": [5, 15], "x": 22, "y": 5.5} + ] + }, + "LAYOUT_fullsize_ansi_wkl": { + "layout": [ + {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, + {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, + {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, + {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, + {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, + {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, + {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, + {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, + + {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, + {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, + {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, + {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, + {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, + {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, + {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, + {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, + {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, + {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, + {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, + {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, + {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, + {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, + {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, + + {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, + {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, + {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, + {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, + + {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, + {"label": "\\", "matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, + {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, + {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, + + {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, + {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, + {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, + {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5, "h": 2}, + + {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, + {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"label": "Enter", "matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25}, + + {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, + {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, + {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, + + {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 2.25}, + {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, + + {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, + {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, + {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, + {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5, "h": 2}, + + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, + {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, + {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, + + {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, + {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} + ] + }, + "LAYOUT_fullsize_iso_wkl": { + "layout": [ + {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, + {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, + {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, + {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, + {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, + {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, + {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, + {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, + + {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, + {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, + {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, + {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, + {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, + {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, + {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, + {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, + {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, + {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, + {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, + {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, + {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, + + {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, + {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, + {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, + + {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, + {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, + {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, + {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, + + {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, + {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, + {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, + + {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, + {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, + {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, + + {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, + {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, + {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, + {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5, "h": 2}, + + {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, + {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, + {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, + {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, + {"label": "#", "matrix": [6, 10], "x": 12.75, "y": 3.5}, + {"label": "Enter", "matrix": [6, 6], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + + {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, + {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, + {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, + + {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "\\", "matrix": [0, 3], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, + {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, + {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, + {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, + + {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, + {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, + {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, + {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5, "h": 2}, + + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, + {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, + {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, + {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, + + {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, + {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} + ] + } + } +} diff --git a/keyboards/yugo_m/model_m_101/keymaps/default/keymap.c b/keyboards/ibm/model_m/yugo_m/keymaps/default/keymap.c diff --git a/keyboards/yugo_m/model_m_101/keymaps/default/readme.md b/keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md diff --git a/keyboards/ibm/model_m/yugo_m/readme.md b/keyboards/ibm/model_m/yugo_m/readme.md @@ -0,0 +1,25 @@ +# Yugo-M + +![Yugo-M](https://raw.githubusercontent.com/tomic1785/Yugo-M-controller-project/master/Pictures/rev_09b.jpg) + +A drop-in replacement controller PCB for IBM Model M keyboards, based on the STM32 MCU. [More info on the Yugo-M project repository](https://github.com/tomic1785/Yugo-M-controller-project) + +* Keyboard Maintainer: [Nidzo Tomic](https://github.com/tomic1785) +* Hardware Supported: Yugo-M PCB + * Rev 0.9b + * Rev 1.1b +* Hardware Availability: [Check out the project repository](https://github.com/tomic1785/Yugo-M-controller-project) + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m/yugo_m:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + + + +Note regarding 2022 matrix update: + +The original author's firmware did not make several lesser-used membrane/matrix positions available to the controller. These are useful for JIS users and/or if you simply want to create a more unique layout. I've added all of the unused membrane positions to the firmware, except for an extremely seldom used one that sits in the left side of the space bar on some later membranes (I would have added it if I knew its matrix position, but I haven't mapped that out yet). The default mappings for these additional keys follow JIS conventions, except for the extra key on the bottom right corner of the numpad (lower half of vertical 2u Enter), which I've mapped to the LGUI key a.k.a. left Windows/Command key for now. Remap as you wish! + +- an_achronism, February 2022 diff --git a/keyboards/yugo_m/model_m_101/rules.mk b/keyboards/ibm/model_m/yugo_m/rules.mk diff --git a/keyboards/ibm/model_m/yugo_m/yugo_m.c b/keyboards/ibm/model_m/yugo_m/yugo_m.c @@ -0,0 +1,35 @@ +/* Copyright 2020 Nidzo Tomic <tomicn8@hotmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + // Set our LED pins as output + setPinOutput(A2); + setPinOutput(A1); + setPinOutput(A0); + + keyboard_pre_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + writePin(A2, !led_state.num_lock); + writePin(A1, !led_state.caps_lock); + writePin(A0, !led_state.scroll_lock); + } + return res; +} diff --git a/keyboards/handwired/ibm122m/config.h b/keyboards/ibm/model_m_122/ibm122m/config.h diff --git a/keyboards/ibm/model_m_122/ibm122m/info.json b/keyboards/ibm/model_m_122/ibm122m/info.json @@ -0,0 +1,169 @@ +{ + "keyboard_name": "IBM Model M 122 key", + "manufacturer": "IBM", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_122/ibm122m", + "maintainer": "qmk", + "usb": { + "vid": "0xFEED", + "pid": "0x0000", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["E6", "B7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C7", "F1"], + "rows": ["F0", "B5", "B4", "B3", "B2", "B1", "B0", "E7"] + }, + "diode_direction": "ROW2COL", + "processor": "at90usb1286", + "bootloader": "halfkay", + "debounce": 15, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 9], "x": 3.25, "y": 0}, + {"matrix": [1, 9], "x": 4.25, "y": 0}, + {"matrix": [1, 10], "x": 5.25, "y": 0}, + {"matrix": [2, 9], "x": 6.25, "y": 0}, + {"matrix": [3, 9], "x": 7.25, "y": 0}, + {"matrix": [3, 10], "x": 8.25, "y": 0}, + {"matrix": [4, 9], "x": 9.25, "y": 0}, + {"matrix": [5, 9], "x": 10.25, "y": 0}, + {"matrix": [5, 10], "x": 11.25, "y": 0}, + {"matrix": [6, 9], "x": 12.25, "y": 0}, + {"matrix": [7, 9], "x": 13.25, "y": 0}, + {"matrix": [7, 10], "x": 14.25, "y": 0}, + + {"matrix": [0, 10], "x": 3.25, "y": 1}, + {"matrix": [0, 11], "x": 4.25, "y": 1}, + {"matrix": [1, 11], "x": 5.25, "y": 1}, + {"matrix": [2, 10], "x": 6.25, "y": 1}, + {"matrix": [2, 11], "x": 7.25, "y": 1}, + {"matrix": [3, 11], "x": 8.25, "y": 1}, + {"matrix": [4, 10], "x": 9.25, "y": 1}, + {"matrix": [4, 11], "x": 10.25, "y": 1}, + {"matrix": [5, 11], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [7, 11], "x": 14.25, "y": 1}, + + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 2], "x": 1, "y": 3}, + + {"matrix": [3, 4], "x": 2.25, "y": 3}, + {"matrix": [2, 4], "x": 3.25, "y": 3}, + {"matrix": [2, 5], "x": 4.25, "y": 3}, + {"matrix": [2, 6], "x": 5.25, "y": 3}, + {"matrix": [2, 7], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [2, 8], "x": 9.25, "y": 3}, + {"matrix": [2, 12], "x": 10.25, "y": 3}, + {"matrix": [2, 13], "x": 11.25, "y": 3}, + {"matrix": [2, 14], "x": 12.25, "y": 3}, + {"matrix": [3, 14], "x": 13.25, "y": 3}, + {"matrix": [3, 12], "x": 14.25, "y": 3}, + {"matrix": [3, 15], "x": 15.25, "y": 3, "w": 2}, + + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3}, + {"matrix": [2, 16], "x": 19.5, "y": 3}, + + {"matrix": [2, 15], "x": 20.75, "y": 3}, + {"matrix": [2, 17], "x": 21.75, "y": 3}, + {"matrix": [2, 18], "x": 22.75, "y": 3}, + {"matrix": [2, 0], "x": 23.75, "y": 3}, + + {"matrix": [2, 1], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + + {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 3.75, "y": 4}, + {"matrix": [4, 5], "x": 4.75, "y": 4}, + {"matrix": [4, 6], "x": 5.75, "y": 4}, + {"matrix": [4, 7], "x": 6.75, "y": 4}, + {"matrix": [5, 7], "x": 7.75, "y": 4}, + {"matrix": [5, 8], "x": 8.75, "y": 4}, + {"matrix": [4, 8], "x": 9.75, "y": 4}, + {"matrix": [4, 12], "x": 10.75, "y": 4}, + {"matrix": [4, 13], "x": 11.75, "y": 4}, + {"matrix": [4, 14], "x": 12.75, "y": 4}, + {"matrix": [5, 14], "x": 13.75, "y": 4}, + {"matrix": [5, 12], "x": 14.75, "y": 4}, + {"matrix": [6, 15], "x": 16, "y": 4, "w": 1.25, "h": 2}, + + {"matrix": [1, 16], "x": 17.5, "y": 4}, + {"matrix": [5, 16], "x": 18.5, "y": 4}, + {"matrix": [4, 16], "x": 19.5, "y": 4}, + + {"matrix": [4, 15], "x": 20.75, "y": 4}, + {"matrix": [4, 17], "x": 21.75, "y": 4}, + {"matrix": [4, 18], "x": 22.75, "y": 4}, + {"matrix": [4, 0], "x": 23.75, "y": 4}, + + {"matrix": [5, 1], "x": 0, "y": 5}, + {"matrix": [5, 2], "x": 1, "y": 5}, + + {"matrix": [6, 2], "x": 2.25, "y": 5, "w": 1.75}, + {"matrix": [1, 4], "x": 4, "y": 5}, + {"matrix": [1, 5], "x": 5, "y": 5}, + {"matrix": [1, 6], "x": 6, "y": 5}, + {"matrix": [1, 7], "x": 7, "y": 5}, + {"matrix": [0, 7], "x": 8, "y": 5}, + {"matrix": [0, 8], "x": 9, "y": 5}, + {"matrix": [1, 8], "x": 10, "y": 5}, + {"matrix": [1, 12], "x": 11, "y": 5}, + {"matrix": [1, 13], "x": 12, "y": 5}, + {"matrix": [1, 14], "x": 13, "y": 5}, + {"matrix": [0, 14], "x": 14, "y": 5}, + {"matrix": [6, 14], "x": 15, "y": 5}, + + {"matrix": [0, 16], "x": 18.5, "y": 5}, + + {"matrix": [1, 15], "x": 20.75, "y": 5}, + {"matrix": [1, 17], "x": 21.75, "y": 5}, + {"matrix": [1, 18], "x": 22.75, "y": 5}, + + {"matrix": [1, 0], "x": 23.75, "y": 5}, + + {"matrix": [1, 1], "x": 0, "y": 6}, + {"matrix": [1, 2], "x": 1, "y": 6}, + + {"matrix": [7, 3], "x": 2.25, "y": 6, "w": 1.25}, + {"matrix": [7, 4], "x": 3.5, "y": 6}, + {"matrix": [6, 4], "x": 4.5, "y": 6}, + {"matrix": [6, 5], "x": 5.5, "y": 6}, + {"matrix": [6, 6], "x": 6.5, "y": 6}, + {"matrix": [6, 7], "x": 7.5, "y": 6}, + {"matrix": [7, 7], "x": 8.5, "y": 6}, + {"matrix": [7, 8], "x": 9.5, "y": 6}, + {"matrix": [6, 8], "x": 10.5, "y": 6}, + {"matrix": [6, 12], "x": 11.5, "y": 6}, + {"matrix": [6, 13], "x": 12.5, "y": 6}, + {"matrix": [7, 14], "x": 13.5, "y": 6}, + {"matrix": [6, 3], "x": 14.5, "y": 6, "w": 2.75}, + + {"matrix": [6, 0], "x": 17.5, "y": 6}, + {"matrix": [0, 19], "x": 18.5, "y": 6}, + {"matrix": [1, 19], "x": 19.5, "y": 6}, + + {"matrix": [6, 1], "x": 20.75, "y": 6}, + {"matrix": [6, 17], "x": 21.75, "y": 6}, + {"matrix": [6, 18], "x": 22.75, "y": 6}, + {"matrix": [7, 19], "x": 23.75, "y": 6, "h": 2}, + + {"matrix": [0, 2], "x": 0, "y": 7}, + {"matrix": [0, 1], "x": 1, "y": 7}, + + {"matrix": [0, 0], "x": 2.25, "y": 7, "w": 1.5}, + {"matrix": [7, 0], "x": 4.75, "y": 7, "w": 1.5}, + {"matrix": [7, 1], "x": 6.25, "y": 7, "w": 7}, + {"matrix": [0, 3], "x": 13.25, "y": 7, "w": 1.5}, + {"matrix": [7, 2], "x": 15.75, "y": 7, "w": 1.5}, + + {"matrix": [0, 15], "x": 18.5, "y": 7}, + + {"matrix": [7, 17], "x": 20.75, "y": 7, "w": 2}, + {"matrix": [7, 18], "x": 22.75, "y": 7} + ] + } + } +} diff --git a/keyboards/handwired/ibm122m/keymaps/andresteare/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c diff --git a/keyboards/handwired/ibm122m/keymaps/default/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h diff --git a/keyboards/handwired/ibm122m/keymaps/default/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c diff --git a/keyboards/handwired/ibm122m/keymaps/default/readme.md b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/readme.md b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md diff --git a/keyboards/handwired/ibm122m/keymaps/via/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c diff --git a/keyboards/handwired/ibm122m/keymaps/via/rules.mk b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk diff --git a/keyboards/ibm/model_m_122/ibm122m/readme.md b/keyboards/ibm/model_m_122/ibm122m/readme.md @@ -0,0 +1,31 @@ +# ibm122m + +![IBM Model M 122 key](https://i.imgur.com/Oo3Ozqz.jpg) + +This is a keymap for the IBM Model M 122 key terminal keyboard running on a Teensy++ 2.0 +I wired it to weird pins on mine (mainly to accomodate two speakers), so make sure to update the pin arrays. + +* Keyboard Maintainer: [Luke Stanley](https://github.com/lukexorz) +* Hardware Supported: Teensy++ 2.0 +* Hardware Availability: https://www.pjrc.com/store/teensypp.html + +Pins of the Teensy board you should use by default: +``` +Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 +Pins: E6 B7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 C0 C1 C2 C3 C4 C5 C7 F1 +-------------------------------------------------------- +Rows: 1 2 3 4 5 6 7 8 +Pins: F0 B5 B4 B3 B2 B1 B0 E7 +-------------------------------------------------------- +Status LEDs: CapsLock +5V ScrollLock NumLock +Pins: N/A 5V N/A N/A +-------------------------------------------------------- +Speaker: 1+ 1- 2+ 2- +Pins: C6 GND B6 GND +``` + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m_122/ibm122m:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/handwired/ibm122m/rules.mk b/keyboards/ibm/model_m_122/ibm122m/rules.mk diff --git a/keyboards/tronguylabs/m122_3270/blackpill/info.json b/keyboards/ibm/model_m_122/m122_3270/blackpill/info.json diff --git a/keyboards/tronguylabs/m122_3270/blackpill/readme.md b/keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md diff --git a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk b/keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk diff --git a/keyboards/tronguylabs/m122_3270/bluepill/info.json b/keyboards/ibm/model_m_122/m122_3270/bluepill/info.json diff --git a/keyboards/tronguylabs/m122_3270/bluepill/readme.md b/keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md diff --git a/keyboards/tronguylabs/m122_3270/bluepill/rules.mk b/keyboards/ibm/model_m_122/m122_3270/bluepill/rules.mk diff --git a/keyboards/ibm/model_m_122/m122_3270/info.json b/keyboards/ibm/model_m_122/m122_3270/info.json @@ -0,0 +1,161 @@ +{ + "keyboard_name": "Model M PC/3270 122 key", + "manufacturer": "IBM", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_122/m122_3270", + "maintainer": "jmaynard", + "usb": { + "vid": "0x1209", + "pid": "0x3270", + "max_power": 100 + }, + "debounce": 15, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 9], "x": 3.25, "y": 0}, + {"matrix": [1, 9], "x": 4.25, "y": 0}, + {"matrix": [1, 10], "x": 5.25, "y": 0}, + {"matrix": [2, 9], "x": 6.25, "y": 0}, + {"matrix": [3, 9], "x": 7.25, "y": 0}, + {"matrix": [3, 10], "x": 8.25, "y": 0}, + {"matrix": [4, 9], "x": 9.25, "y": 0}, + {"matrix": [5, 9], "x": 10.25, "y": 0}, + {"matrix": [5, 10], "x": 11.25, "y": 0}, + {"matrix": [6, 9], "x": 12.25, "y": 0}, + {"matrix": [7, 9], "x": 13.25, "y": 0}, + {"matrix": [7, 10], "x": 14.25, "y": 0}, + + {"matrix": [0, 10], "x": 3.25, "y": 1}, + {"matrix": [0, 11], "x": 4.25, "y": 1}, + {"matrix": [1, 11], "x": 5.25, "y": 1}, + {"matrix": [2, 10], "x": 6.25, "y": 1}, + {"matrix": [2, 11], "x": 7.25, "y": 1}, + {"matrix": [3, 11], "x": 8.25, "y": 1}, + {"matrix": [4, 10], "x": 9.25, "y": 1}, + {"matrix": [4, 11], "x": 10.25, "y": 1}, + {"matrix": [5, 11], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [7, 11], "x": 14.25, "y": 1}, + + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 2], "x": 1, "y": 3}, + + {"matrix": [3, 4], "x": 2.25, "y": 3}, + {"matrix": [2, 4], "x": 3.25, "y": 3}, + {"matrix": [2, 5], "x": 4.25, "y": 3}, + {"matrix": [2, 6], "x": 5.25, "y": 3}, + {"matrix": [2, 7], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [2, 8], "x": 9.25, "y": 3}, + {"matrix": [2, 12], "x": 10.25, "y": 3}, + {"matrix": [2, 13], "x": 11.25, "y": 3}, + {"matrix": [2, 14], "x": 12.25, "y": 3}, + {"matrix": [3, 14], "x": 13.25, "y": 3}, + {"matrix": [3, 12], "x": 14.25, "y": 3}, + {"matrix": [3, 15], "x": 15.25, "y": 3, "w": 2}, + + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3}, + {"matrix": [2, 16], "x": 19.5, "y": 3}, + + {"matrix": [2, 15], "x": 20.75, "y": 3}, + {"matrix": [2, 17], "x": 21.75, "y": 3}, + {"matrix": [2, 18], "x": 22.75, "y": 3}, + {"matrix": [2, 0], "x": 23.75, "y": 3}, + + {"matrix": [2, 1], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + + {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 3.75, "y": 4}, + {"matrix": [4, 5], "x": 4.75, "y": 4}, + {"matrix": [4, 6], "x": 5.75, "y": 4}, + {"matrix": [4, 7], "x": 6.75, "y": 4}, + {"matrix": [5, 7], "x": 7.75, "y": 4}, + {"matrix": [5, 8], "x": 8.75, "y": 4}, + {"matrix": [4, 8], "x": 9.75, "y": 4}, + {"matrix": [4, 12], "x": 10.75, "y": 4}, + {"matrix": [4, 13], "x": 11.75, "y": 4}, + {"matrix": [4, 14], "x": 12.75, "y": 4}, + {"matrix": [5, 14], "x": 13.75, "y": 4}, + {"matrix": [5, 12], "x": 14.75, "y": 4}, + {"matrix": [6, 15], "x": 16, "y": 4, "w": 1.25, "h": 2}, + + {"matrix": [1, 16], "x": 17.5, "y": 4}, + {"matrix": [5, 16], "x": 18.5, "y": 4}, + {"matrix": [4, 16], "x": 19.5, "y": 4}, + + {"matrix": [4, 15], "x": 20.75, "y": 4}, + {"matrix": [4, 17], "x": 21.75, "y": 4}, + {"matrix": [4, 18], "x": 22.75, "y": 4}, + {"matrix": [4, 0], "x": 23.75, "y": 4}, + + {"matrix": [5, 1], "x": 0, "y": 5}, + {"matrix": [5, 2], "x": 1, "y": 5}, + + {"matrix": [6, 2], "x": 2.25, "y": 5, "w": 1.75}, + {"matrix": [1, 4], "x": 4, "y": 5}, + {"matrix": [1, 5], "x": 5, "y": 5}, + {"matrix": [1, 6], "x": 6, "y": 5}, + {"matrix": [1, 7], "x": 7, "y": 5}, + {"matrix": [0, 7], "x": 8, "y": 5}, + {"matrix": [0, 8], "x": 9, "y": 5}, + {"matrix": [1, 8], "x": 10, "y": 5}, + {"matrix": [1, 12], "x": 11, "y": 5}, + {"matrix": [1, 13], "x": 12, "y": 5}, + {"matrix": [1, 14], "x": 13, "y": 5}, + {"matrix": [0, 14], "x": 14, "y": 5}, + {"matrix": [6, 14], "x": 15, "y": 5}, + + {"matrix": [0, 16], "x": 18.5, "y": 5}, + + {"matrix": [1, 15], "x": 20.75, "y": 5}, + {"matrix": [1, 17], "x": 21.75, "y": 5}, + {"matrix": [1, 18], "x": 22.75, "y": 5}, + {"matrix": [1, 0], "x": 23.75, "y": 5}, + + {"matrix": [1, 1], "x": 0, "y": 6}, + {"matrix": [1, 2], "x": 1, "y": 6}, + + {"matrix": [7, 3], "x": 2.25, "y": 6, "w": 1.25}, + {"matrix": [7, 4], "x": 3.5, "y": 6}, + {"matrix": [6, 4], "x": 4.5, "y": 6}, + {"matrix": [6, 5], "x": 5.5, "y": 6}, + {"matrix": [6, 6], "x": 6.5, "y": 6}, + {"matrix": [6, 7], "x": 7.5, "y": 6}, + {"matrix": [7, 7], "x": 8.5, "y": 6}, + {"matrix": [7, 8], "x": 9.5, "y": 6}, + {"matrix": [6, 8], "x": 10.5, "y": 6}, + {"matrix": [6, 12], "x": 11.5, "y": 6}, + {"matrix": [6, 13], "x": 12.5, "y": 6}, + {"matrix": [7, 14], "x": 13.5, "y": 6}, + {"matrix": [6, 3], "x": 14.5, "y": 6, "w": 2.75}, + + {"matrix": [6, 0], "x": 17.5, "y": 6}, + {"matrix": [0, 19], "x": 18.5, "y": 6}, + {"matrix": [1, 19], "x": 19.5, "y": 6}, + + {"matrix": [6, 1], "x": 20.75, "y": 6}, + {"matrix": [6, 17], "x": 21.75, "y": 6}, + {"matrix": [6, 18], "x": 22.75, "y": 6}, + {"matrix": [7, 19], "x": 23.75, "y": 6, "h": 2}, + + {"matrix": [0, 2], "x": 0, "y": 7}, + {"matrix": [0, 1], "x": 1, "y": 7}, + + {"matrix": [0, 0], "x": 2.25, "y": 7, "w": 1.5}, + {"matrix": [7, 0], "x": 4.75, "y": 7, "w": 1.5}, + {"matrix": [7, 1], "x": 6.25, "y": 7, "w": 7}, + {"matrix": [0, 3], "x": 13.25, "y": 7, "w": 1.5}, + {"matrix": [7, 2], "x": 15.75, "y": 7, "w": 1.5}, + + {"matrix": [0, 15], "x": 18.5, "y": 7}, + + {"matrix": [7, 17], "x": 20.75, "y": 7, "w": 2}, + {"matrix": [7, 18], "x": 22.75, "y": 7} + ] + } + } +} diff --git a/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/keymap.c diff --git a/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md diff --git a/keyboards/ibm/model_m_122/m122_3270/readme.md b/keyboards/ibm/model_m_122/m122_3270/readme.md @@ -0,0 +1,33 @@ +# m122-3270 + +![IBM Model M 122 key](https://i.imgur.com/Oo3Ozqzh.jpg) + +This is a replacement controller for the IBM Model M 122 key terminal keyboard +running on a STM32F411 BlackPill, intended to act as closely to the 3270 +keyboard's functioning as possible while still being usable on a PC. + +* Keyboard Maintainer: [Jay Maynard](https://github.com/jmaynard) +* Hardware Supported: BlackPill STM32F411, Teensy++ 2.0 +* Hardware Availability: [BlackPill](https://www.adafruit.com/product/4877), [Teensy](https://www.pjrc.com/store/teensypp.html) + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m_122/m122_3270/blackpill:default + make ibm/model_m_122/m122_3270/bluepill:default + make ibm/model_m_122/m122_3270/teensy:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) +and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) +for more information. Brand new to QMK? Start with our +[Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +A schematic and Gerber files are publicly available for those wishing to have +carrier boards made professionally instead of handwiring things. The M122 +matrix connectors plug right into it. It can be found at +https://github.com/jmaynard/tronguylabs-m122-blackpill. + +This is derived from Luke Stanley's handwired/ibm122m keyboard, with my own +keymapping and rework of the I/O for the BlackPill. There's also a version for +the Teensy++ 2.0, since that was my original design and I still use one on one +board, even though I switched to the BlackPill for future-proofing. +The Teensy++ 2.0 is not recommended for new designs. diff --git a/keyboards/tronguylabs/m122_3270/teensy/info.json b/keyboards/ibm/model_m_122/m122_3270/teensy/info.json diff --git a/keyboards/tronguylabs/m122_3270/teensy/readme.md b/keyboards/ibm/model_m_122/m122_3270/teensy/readme.md diff --git a/keyboards/tronguylabs/m122_3270/teensy/rules.mk b/keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk diff --git a/keyboards/ibm/model_m_122/readme.md b/keyboards/ibm/model_m_122/readme.md @@ -0,0 +1,24 @@ +# IBM Model M Terminal with 122 keys + +This is the parent directory for all projects that replace the controller +of IBM's Model M terminal keyboard with 122 keys and then run QMK on it. + +These controllers differ in their use of microcontrollers, connection (mainly +USB) optional speakers etc. + +Some of them can be bought fully assembled others are do-it-yourself. + +## Warning - Model M Variants + +**Not all of these projects will fit into your keyboard!** + +As the Model M was produced over several years there are many variants of the +controller PCB. Check what fits your keyboard before you build/order one. + +The variants built for PCs differ in: +* PCB size +* Connectors (8/12 pin flex, location) +* Ground wire connector location + +Additionally IBM built Model M variants with 101/102 keys, the +space saving keyboard (SSK, 84-key) etc. diff --git a/keyboards/ibm/model_m_ssk/readme.md b/keyboards/ibm/model_m_ssk/readme.md @@ -0,0 +1,24 @@ +# IBM Model M Space Saving Keyboard (SSK, 84-key) + +This is the parent directory for all projects that replace the controller +of IBM's Model M space saving keyboard keyboard with 84 keys and then run QMK on it. + +These controllers differ in their use of microcontrollers, connection (mainly +USB) optional speakers etc. + +Some of them can be bought fully assembled others are do-it-yourself. + +## Warning - Model M Variants + +**Not all of these projects will fit into your keyboard!** + +As the Model M was produced over several years there are many variants of the +controller PCB. Check what fits your keyboard before you build/order one. + +The variants built for PCs differ in: +* PCB size +* Connectors (8/12 pin flex, location) +* Ground wire connector location + +Additionally IBM built Model M variants with 101/102 keys, the +terminal keyboard with 122 keys etc. diff --git a/keyboards/converter/modelm_ssk/config.h b/keyboards/ibm/model_m_ssk/teensypp_ssk/config.h diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/info.json b/keyboards/ibm/model_m_ssk/teensypp_ssk/info.json @@ -0,0 +1,128 @@ +{ + "keyboard_name": "IBM Model M Space-Saving Keyboard", + "manufacturer": "tiltowait", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_ssk/teensypp_ssk", + "maintainer": "tiltowait", + "usb": { + "vid": "0xFEED", + "pid": "0x0000", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0", "E1", "E0", "D7", "D5", "D4", "D3", "D2", "D1"], + "rows": ["F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7"] + }, + "diode_direction": "ROW2COL", + "indicators": { + "caps_lock": "B6", + "num_lock": "B4", + "scroll_lock": "B5" + }, + "processor": "at90usb1286", + "bootloader": "halfkay", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [7, 2], "x": 0, "y": 0}, + + {"matrix": [5, 3], "x": 2, "y": 0}, + {"matrix": [5, 4], "x": 3, "y": 0}, + {"matrix": [6, 4], "x": 4, "y": 0}, + {"matrix": [7, 4], "x": 5, "y": 0}, + + {"matrix": [7, 6], "x": 6.5, "y": 0}, + {"matrix": [7, 8], "x": 7.5, "y": 0}, + {"matrix": [6, 9], "x": 8.5, "y": 0}, + {"matrix": [5, 9], "x": 9.5, "y": 0}, + + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [4, 6], "x": 12, "y": 0}, + {"matrix": [4, 11], "x": 13, "y": 0}, + {"matrix": [4, 12], "x": 14, "y": 0}, + + {"matrix": [4, 15], "x": 15.25, "y": 0}, + {"matrix": [3, 15], "x": 16.25, "y": 0}, + {"matrix": [1, 14], "x": 17.25, "y": 0}, + + {"matrix": [5, 2], "x": 0, "y": 1.5}, + {"matrix": [4, 2], "x": 1, "y": 1.5}, + {"matrix": [4, 3], "x": 2, "y": 1.5}, + {"matrix": [4, 4], "x": 3, "y": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 1.5}, + {"matrix": [5, 5], "x": 5, "y": 1.5}, + {"matrix": [5, 7], "x": 6, "y": 1.5}, + {"matrix": [4, 7], "x": 7, "y": 1.5}, + {"matrix": [4, 8], "x": 8, "y": 1.5}, + {"matrix": [4, 9], "x": 9, "y": 1.5}, + {"matrix": [4, 10], "x": 10, "y": 1.5}, + {"matrix": [5, 10], "x": 11, "y": 1.5}, + {"matrix": [5, 8], "x": 12, "y": 1.5}, + {"matrix": [6, 6], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [5, 12], "x": 15.25, "y": 1.5}, + {"matrix": [5, 14], "x": 16.25, "y": 1.5}, + {"matrix": [5, 13], "x": 17.25, "y": 1.5}, + + {"matrix": [6, 2], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [3, 2], "x": 1.5, "y": 2.5}, + {"matrix": [3, 3], "x": 2.5, "y": 2.5}, + {"matrix": [3, 4], "x": 3.5, "y": 2.5}, + {"matrix": [3, 5], "x": 4.5, "y": 2.5}, + {"matrix": [6, 5], "x": 5.5, "y": 2.5}, + {"matrix": [6, 7], "x": 6.5, "y": 2.5}, + {"matrix": [3, 7], "x": 7.5, "y": 2.5}, + {"matrix": [3, 8], "x": 8.5, "y": 2.5}, + {"matrix": [3, 9], "x": 9.5, "y": 2.5}, + {"matrix": [3, 10], "x": 10.5, "y": 2.5}, + {"matrix": [6, 10], "x": 11.5, "y": 2.5}, + {"matrix": [6, 8], "x": 12.5, "y": 2.5}, + {"matrix": [2, 6], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [5, 11], "x": 15.25, "y": 2.5}, + {"matrix": [4, 14], "x": 16.25, "y": 2.5}, + {"matrix": [4, 13], "x": 17.25, "y": 2.5}, + + {"matrix": [6, 3], "x": 0, "y": 3.5, "w": 1.5}, + {"matrix": [2, 2], "x": 1.75, "y": 3.5}, + {"matrix": [2, 3], "x": 2.75, "y": 3.5}, + {"matrix": [2, 4], "x": 3.75, "y": 3.5}, + {"matrix": [2, 5], "x": 4.75, "y": 3.5}, + {"matrix": [7, 5], "x": 5.75, "y": 3.5}, + {"matrix": [7, 7], "x": 6.75, "y": 3.5}, + {"matrix": [2, 7], "x": 7.75, "y": 3.5}, + {"matrix": [2, 8], "x": 8.75, "y": 3.5}, + {"matrix": [2, 9], "x": 9.75, "y": 3.5}, + {"matrix": [2, 10], "x": 10.75, "y": 3.5}, + {"matrix": [7, 10], "x": 11.75, "y": 3.5}, + {"matrix": [1, 10], "x": 12.75, "y": 3.5}, + {"matrix": [1, 6], "x": 13.75, "y": 3.5, "w": 1.25}, + + {"matrix": [6, 1], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [7, 3], "x": 1.25, "y": 4.5}, + {"matrix": [1, 2], "x": 2.25, "y": 4.5}, + {"matrix": [1, 3], "x": 3.25, "y": 4.5}, + {"matrix": [1, 4], "x": 4.25, "y": 4.5}, + {"matrix": [1, 5], "x": 5.25, "y": 4.5}, + {"matrix": [0, 5], "x": 6.25, "y": 4.5}, + {"matrix": [0, 7], "x": 7.25, "y": 4.5}, + {"matrix": [1, 7], "x": 8.25, "y": 4.5}, + {"matrix": [1, 8], "x": 9.25, "y": 4.5}, + {"matrix": [1, 9], "x": 10.25, "y": 4.5}, + {"matrix": [0, 10], "x": 11.25, "y": 4.5}, + {"matrix": [1, 1], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [7, 14], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [7, 15], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [0, 6], "x": 4, "y": 5.5, "w": 7}, + {"matrix": [0, 15], "x": 11, "y": 5.5, "w": 1.5}, + {"matrix": [1, 0], "x": 13.5, "y": 5.5, "w": 1.5}, + + {"matrix": [0, 14], "x": 15.25, "y": 5.5}, + {"matrix": [0, 11], "x": 16.25, "y": 5.5}, + {"matrix": [0, 12], "x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/converter/modelm_ssk/keymaps/default/keymap.c b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c diff --git a/keyboards/converter/modelm_ssk/keymaps/default/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md @@ -0,0 +1,55 @@ +# modelm_ssk + +![IBM Model M Space-Saving Keyboard](https://i.imgur.com/CSXrQI5.jpg) + +This is a QMK firmware configuration for the IBM Model M Space-Saving Keyboard (SSK). Based on [this project](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/teensypp), it features a few slight improvements and, most importantly, a full remapping to match the SSK's matrix, which differs from its full-sized cousins. The modification is easily reversible, as no part of the keyboard is permanently changed. Just take out the replacement controller and reinstall the original, should you desire. + +The numpad layer (accessed with Shift + Scroll Lock as with the original controller) is mapped to layer 7 by default. All non-numpad keys are transparent. + +**Note:** As of this writing, this configuration has only been tested on the 1392464 SSK. It's possible other models differ in their internal matrices. Should the provided matrix not work for you (and you are certain of your connections), you can enable debugging with `CONSOLE_ENABLE = yes` in `rules.mk` and by following the directions in `default/keymap.c`. Once done, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) will display row/col information to help you remap `keymap.c`. + +## Requirements + +* [Teensy++ 2.0](https://www.pjrc.com/store/teensypp.html) - I recommend buying one with pins already attached +* A Trio-Mate 16-pin ribbon connector (6-520315-6 or 6-520415-6) +* A Trio-Mate 8-pin ribbon connector (5-120628-8 or 5-520314-8). Alternatively, two 16-pin connectors can be used if the 8-pin is out of stock. Just be sure to line up your pins correctly +* Breadboard or perfboard. A perfboard is recommended due to its reduced height and low clearance inside the chassis +* Mini-B to USB-A cable +* Jumper wires and wire strippers/cutters +* Soldering iron if not using a breadboard + +## Setup + +![Finished controller](https://i.imgur.com/m1yuo4F.jpg) + +The controller uses the following mapping (in zero-indexed hex): + +``` +Column: 0 1 2 3 4 5 6 7 8 9 A B C D E F +Pin: C7 C6 C5 C4 C3 C2 C1 C0 E1 E0 D7 D5 D4 D3 D2 D1 +-------------------------------------------------------- +Row: 0 1 2 3 4 5 6 7 +Pin: F0 F1 F2 F3 F4 F5 F6 F7 +``` + +**IMPORTANT:** It is necessary to skip pin D6 on the Teensy. There is an LED attached to this pin, which can cause interference with registering keys. Alternatively, you can remove the LED from the board, which is likely to be a permanent modification of the Teensy. The choice is yours. I am not responsible for any damage to your Teensy or keyboard. + +## A note on the Unicomp Mini M + +This configuration will not work out of the box with the [Unicomp Mini M](https://www.pckeyboard.com/page/product/MINI_M). That keyboard uses a 16x12 matrix rather than the SSK's 16x8 in order to reduce occurrences of 2KRO lockup. It also features lock lights, which the SSK lacks. However, it should be possible to map out the Mini M's matrix to get it working. + +## Maintainer + +* Keyboard Maintainer: [tiltowait](https://github.com/tiltowait), original work by [iw0rm3r](https://github.com/iw0rm3r) +* Hardware Supported: Teensy 2.0++ board by PJRC +* Hardware Availability: https://www.pjrc.com/store/teensypp.html + +## Building + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m_ssk/teensypp_ssk:default + +You must press the button on the Teensy to enter the bootloader the first time. Afterward, so long as you keep `COMMAND_ENABLE = yes` in `rules.mk` (enabled by default), you can use `Left Shift + Right Shift + B` to enter the bootloader. With this method, you can omit `:teensy` from the end of the `make` command. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/converter/modelm_ssk/rules.mk b/keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk diff --git a/keyboards/mschwingen/modelm/config.h b/keyboards/mschwingen/modelm/config.h @@ -1,77 +0,0 @@ -/* - * Copyright 2020 Michael Schwingen - - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - - -/* key matrix size */ -#define MATRIX_ROWS 16 -#define MATRIX_COLS 8 - -/* pins for external shift registers */ -#define SR_LOAD_PIN B0 -#define SR_CLK_PIN B1 -#define SR_DIN_PIN B3 -#define SR_DOUT_PIN B2 - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT -#define NORMAL_PRINT -//#define USER_PRINT - - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -//#define DEBUG_MATRIX_SCAN_RATE -#define DYNAMIC_MACRO_NO_NESTING - -#define MODELM_STATUS_LED E6 - -#define MODELM_LED1 B5 -#define MODELM_LED2 B6 -#define MODELM_LED3 D0 - -#if defined(KEYBOARD_mschwingen_modelm_led_wired) -# define MODELM_LED_CAPSLOCK MODELM_LED1 -# define MODELM_LED_SCROLLOCK MODELM_LED2 -# define MODELM_LED_NUMLOCK MODELM_LED3 -#elif defined(KEYBOARD_mschwingen_modelm_led_ffc) -# define MODELM_LED_CAPSLOCK MODELM_LED2 -# define MODELM_LED_SCROLLOCK MODELM_LED3 -# define MODELM_LED_NUMLOCK MODELM_LED1 -#elif defined(KEYBOARD_mschwingen_modelm_led_ws2812) -#else -# error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set! -#endif - -// 3* WS2812 LEDs instead of singlecolor GPIO LEDs -#define RGBLED_NUM 3 - -// disabled, needs PCB patch. -//#define AUDIO_PIN C6 -//#define NO_MUSIC_MODE diff --git a/keyboards/mschwingen/modelm/info.json b/keyboards/mschwingen/modelm/info.json @@ -1,143 +0,0 @@ -{ - "keyboard_name": "IBM Model M 101/102", - "manufacturer": "mschwingen", - "url": "", - "maintainer": "mschwingen", - "usb": { - "vid": "0xFEED", - "pid": "0x558E", - "device_version": "0.0.1" - }, - "ws2812": { - "pin": "B6" - }, - "processor": "atmega32u4", - "bootloader": "lufa-dfu", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [13, 7], "x": 0, "y": 0}, - - {"matrix": [12, 5], "x": 2, "y": 0}, - {"matrix": [11, 5], "x": 3, "y": 0}, - {"matrix": [11, 6], "x": 4, "y": 0}, - {"matrix": [11, 7], "x": 5, "y": 0}, - - {"matrix": [9, 7], "x": 6.5, "y": 0}, - {"matrix": [7, 7], "x": 7.5, "y": 0}, - {"matrix": [6, 6], "x": 8.5, "y": 0}, - {"matrix": [6, 5], "x": 9.5, "y": 0}, - - {"matrix": [9, 5], "x": 11, "y": 0}, - {"matrix": [9, 4], "x": 12, "y": 0}, - {"matrix": [4, 4], "x": 13, "y": 0}, - {"matrix": [3, 4], "x": 14, "y": 0}, - - {"matrix": [0, 4], "x": 15.5, "y": 0}, - {"matrix": [0, 3], "x": 16.5, "y": 0}, - {"matrix": [1, 1], "x": 17.5, "y": 0}, - - {"matrix": [13, 5], "x": 0, "y": 2}, - {"matrix": [13, 4], "x": 1, "y": 2}, - {"matrix": [12, 4], "x": 2, "y": 2}, - {"matrix": [11, 4], "x": 3, "y": 2}, - {"matrix": [10, 4], "x": 4, "y": 2}, - {"matrix": [10, 5], "x": 5, "y": 2}, - {"matrix": [8, 5], "x": 6, "y": 2}, - {"matrix": [8, 4], "x": 7, "y": 2}, - {"matrix": [7, 4], "x": 8, "y": 2}, - {"matrix": [6, 4], "x": 9, "y": 2}, - {"matrix": [5, 4], "x": 10, "y": 2}, - {"matrix": [5, 5], "x": 11, "y": 2}, - {"matrix": [7, 5], "x": 12, "y": 2}, - {"matrix": [9, 6], "x": 13, "y": 2, "w": 2}, - - {"matrix": [3, 5], "x": 15.5, "y": 2}, - {"matrix": [1, 5], "x": 16.5, "y": 2}, - {"matrix": [2, 5], "x": 17.5, "y": 2}, - - {"matrix": [4, 1], "x": 19, "y": 2}, - {"matrix": [3, 1], "x": 20, "y": 2}, - {"matrix": [2, 1], "x": 21, "y": 2}, - {"matrix": [2, 0], "x": 22, "y": 2}, - - {"matrix": [13, 6], "x": 0, "y": 3, "w": 1.5}, - {"matrix": [13, 3], "x": 1.5, "y": 3}, - {"matrix": [12, 3], "x": 2.5, "y": 3}, - {"matrix": [11, 3], "x": 3.5, "y": 3}, - {"matrix": [10, 3], "x": 4.5, "y": 3}, - {"matrix": [10, 6], "x": 5.5, "y": 3}, - {"matrix": [8, 6], "x": 6.5, "y": 3}, - {"matrix": [8, 3], "x": 7.5, "y": 3}, - {"matrix": [7, 3], "x": 8.5, "y": 3}, - {"matrix": [6, 3], "x": 9.5, "y": 3}, - {"matrix": [5, 3], "x": 10.5, "y": 3}, - {"matrix": [5, 6], "x": 11.5, "y": 3}, - {"matrix": [7, 6], "x": 12.5, "y": 3}, - {"matrix": [9, 2], "x": 13.5, "y": 3, "w": 1.5}, - - {"matrix": [4, 5], "x": 15.5, "y": 3}, - {"matrix": [1, 4], "x": 16.5, "y": 3}, - {"matrix": [2, 4], "x": 17.5, "y": 3}, - - {"matrix": [4, 3], "x": 19, "y": 3}, - {"matrix": [3, 3], "x": 20, "y": 3}, - {"matrix": [2, 3], "x": 21, "y": 3}, - {"matrix": [1, 3], "x": 22, "y": 3, "h": 2}, - - {"matrix": [12, 6], "x": 0, "y": 4, "w": 1.75}, - {"matrix": [13, 2], "x": 1.75, "y": 4}, - {"matrix": [12, 2], "x": 2.75, "y": 4}, - {"matrix": [11, 2], "x": 3.75, "y": 4}, - {"matrix": [10, 2], "x": 4.75, "y": 4}, - {"matrix": [10, 7], "x": 5.75, "y": 4}, - {"matrix": [8, 7], "x": 6.75, "y": 4}, - {"matrix": [8, 2], "x": 7.75, "y": 4}, - {"matrix": [7, 2], "x": 8.75, "y": 4}, - {"matrix": [6, 2], "x": 9.75, "y": 4}, - {"matrix": [5, 2], "x": 10.75, "y": 4}, - {"matrix": [5, 7], "x": 11.75, "y": 4}, - {"matrix": [5, 1], "x": 12.75, "y": 4}, - {"matrix": [9, 1], "x": 13.75, "y": 4, "w": 1.25}, - - {"matrix": [4, 6], "x": 19, "y": 4}, - {"matrix": [3, 6], "x": 20, "y": 4}, - {"matrix": [2, 6], "x": 21, "y": 4}, - - {"matrix": [14, 6], "x": 0, "y": 5, "w": 1.25}, - {"matrix": [12, 7], "x": 1.25, "y": 5}, - {"matrix": [13, 1], "x": 2.25, "y": 5}, - {"matrix": [12, 1], "x": 3.25, "y": 5}, - {"matrix": [11, 1], "x": 4.25, "y": 5}, - {"matrix": [10, 1], "x": 5.25, "y": 5}, - {"matrix": [10, 0], "x": 6.25, "y": 5}, - {"matrix": [8, 0], "x": 7.25, "y": 5}, - {"matrix": [8, 1], "x": 8.25, "y": 5}, - {"matrix": [7, 1], "x": 9.25, "y": 5}, - {"matrix": [6, 1], "x": 10.25, "y": 5}, - {"matrix": [5, 0], "x": 11.25, "y": 5}, - {"matrix": [14, 1], "x": 12.25, "y": 5, "w": 2.75}, - - {"matrix": [1, 7], "x": 16.5, "y": 5}, - - {"matrix": [4, 2], "x": 19, "y": 5}, - {"matrix": [3, 2], "x": 20, "y": 5}, - {"matrix": [2, 2], "x": 21, "y": 5}, - {"matrix": [1, 2], "x": 22, "y": 5, "h": 2}, - - {"matrix": [15, 5], "x": 0, "y": 6, "w": 1.5}, - {"matrix": [0, 7], "x": 2.5, "y": 6, "w": 1.5}, - {"matrix": [9, 0], "x": 4, "y": 6, "w": 7}, - {"matrix": [0, 0], "x": 11, "y": 6, "w": 1.5}, - {"matrix": [15, 1], "x": 13.5, "y": 6, "w": 1.5}, - - {"matrix": [1, 0], "x": 15.5, "y": 6}, - {"matrix": [4, 0], "x": 16.5, "y": 6}, - {"matrix": [3, 0], "x": 17.5, "y": 6}, - - {"matrix": [3, 7], "x": 19, "y": 6, "w": 2}, - {"matrix": [2, 7], "x": 21, "y": 6} - ] - } - } -} diff --git a/keyboards/mschwingen/modelm/matrix.c b/keyboards/mschwingen/modelm/matrix.c @@ -1,113 +0,0 @@ -/* - * Copyright 2020 Michael Schwingen - - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include <stdint.h> -#include <stdbool.h> -#include "util.h" -#include "matrix.h" -#include "debounce.h" -#include "quantum.h" -#include "spi_master.h" -#include "print.h" -#include "modelm.h" - -#define SPI_TIMEOUT 100 - -/* Keyboard Matrix Assignments */ -static uint16_t row_bits[MATRIX_ROWS] = { - 0x4000, 0x8000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0100, 0x0200, - 0x0040, 0x0080, 0x0020, 0x0010, 0x0008, 0x0004, 0x0001, 0x0002}; - -static const pin_t col_pins[MATRIX_COLS] = {D1, D4, D7, B4, F7, F6, F5, F4}; - -static void select_col(uint8_t col) { - setPinOutput(col_pins[col]); - writePinLow(col_pins[col]); -} - -static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); } - -static void unselect_cols(void) { - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { - uint16_t row_data; - bool matrix_changed = false; - - // Select col and wait for col selecton to stabilize - select_col(current_col); - matrix_io_delay(); - - writePinLow(SR_LOAD_PIN); - writePinHigh(SR_LOAD_PIN); - - row_data = spi_read() << 8; - row_data |= spi_read(); - - debug_hex8(~row_data); - dprint(" "); - - // For each row... - for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[row_index]; - matrix_row_t current_row_value = last_row_value; - - // Check row pin state - if ((row_data & row_bits[row_index]) == 0) { - // Pin LO, set col bit - current_row_value |= (MATRIX_ROW_SHIFTER << current_col); - } else { - // Pin HI, clear col bit - current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); - } - - // Determine if the matrix changed state - if ((last_row_value != current_row_value)) { - matrix_changed = true; - current_matrix[row_index] = current_row_value; - } - } - - // Unselect col - unselect_col(current_col); - - return matrix_changed; -} - -void matrix_init_custom(void) { - unselect_cols(); - - // set 4MHz SPI clock - SPSR = 0; - SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL); -} - -bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool changed = false; - - dprint("\r\nScan: "); - - // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - changed |= read_rows_on_col(current_matrix, current_col); - } - update_layer_leds(); - return changed; -} diff --git a/keyboards/mschwingen/modelm/modelm.c b/keyboards/mschwingen/modelm/modelm.c @@ -1,214 +0,0 @@ -/* - * Copyright 2020 Michael Schwingen - - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include <util/delay.h> -#include "modelm.h" -#include "uart.h" -#include "print.h" -#include "sendchar.h" -#include "ws2812.h" -#include "modelm.h" -#include "sleep_led.h" - -#ifdef UART_DEBUG -# undef sendchar -static int8_t capture_sendchar(uint8_t c) { - // sendchar(c); - uart_write(c); - return 0; -} -#endif - -static uint16_t blink_cycle_timer; -static bool blink_state = false; -static uint8_t isRecording = 0; - -#ifdef KEYBOARD_mschwingen_modelm_led_ws2812 -# if RGBLED_NUM < 3 -# error we need at least 3 RGB LEDs! -# endif -static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; - -# define BRIGHT 32 -# define DIM 6 - -static const cRGB black = {.r = 0, .g = 0, .b = 0}; - -static const __attribute__((unused)) cRGB green = {.r = 0, .g = BRIGHT, .b = 0}; -static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0}; - -static const __attribute__((unused)) cRGB red = {.r = BRIGHT, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0}; - -static const __attribute__((unused)) cRGB blue = {.r = 0, .g = 0, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM}; - -static const __attribute__((unused)) cRGB turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM}; - -static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; - -static led_t led_state; -static uint8_t layer; -static uint8_t default_layer; -#endif - -// we need our own sleep_led_* implementation to get callbacks on USB -// suspend/resume in order to completely turn off WS2812 LEDs -static bool suspend_active = false; -void sleep_led_init(void) {} - -void sleep_led_toggle(void) {} - -void sleep_led_disable(void) { - suspend_active = false; - writePinHigh(MODELM_STATUS_LED); -} - -void sleep_led_enable(void) { - suspend_active = true; - writePinLow(MODELM_STATUS_LED); -#ifdef KEYBOARD_mschwingen_modelm_led_ws2812 - led[0] = black; - led[1] = black; - led[2] = black; - ws2812_setleds(led, RGBLED_NUM); -#endif -} - -void keyboard_pre_init_kb(void) { -#ifdef KEYBOARD_mschwingen_modelm_led_ws2812 - ws2812_setleds(led, RGBLED_NUM); -#else - /* Set status LEDs pins to output and Low (on) */ - setPinOutput(MODELM_LED_CAPSLOCK); - setPinOutput(MODELM_LED_SCROLLOCK); - setPinOutput(MODELM_LED_NUMLOCK); - writePinLow(MODELM_LED_CAPSLOCK); - writePinLow(MODELM_LED_SCROLLOCK); - writePinLow(MODELM_LED_NUMLOCK); -#endif - setPinOutput(MODELM_STATUS_LED); - writePinHigh(MODELM_STATUS_LED); - _delay_ms(50); -#ifdef UART_DEBUG - uart_init(115200); - print_set_sendchar(capture_sendchar); - uprintf("\r\nHello world!\r\n"); -#endif - - setPinOutput(SR_LOAD_PIN); - setPinOutput(SR_CLK_PIN); - setPinOutput(SR_DOUT_PIN); // MOSI - unused - writePinLow(SR_CLK_PIN); -} - -#ifdef KEYBOARD_mschwingen_modelm_led_ws2812 -static void led_update_rgb(void) { - if (isRecording && blink_state) { - led[0] = white; - } else { - switch (default_layer) { - case 0: - led[0] = led_state.num_lock ? blue : lblue; - break; - case 1: - led[0] = led_state.num_lock ? green : black; - break; - } - } - - led[1] = led_state.caps_lock ? green : black; - - switch (layer) { - case 0: - case 1: - default: - led[2] = led_state.scroll_lock ? green : black; - break; - case 2: - led[2] = led_state.scroll_lock ? red : lred; - break; - case 3: - led[2] = led_state.scroll_lock ? turq : lturq; - break; - } - if (!suspend_active) { - ws2812_setleds(led, RGBLED_NUM); - } -} - -bool led_update_kb(led_t state) { - dprintf("LED Update: %d %d %d", led_state.num_lock, led_state.caps_lock, led_state.scroll_lock); - led_state = state; - led_update_rgb(); - - return true; -} - -void update_layer_leds(void) { - static uint8_t old_layer = 255; - static uint8_t old_default_layer = 255; - - layer = get_highest_layer(layer_state); - default_layer = get_highest_layer(default_layer_state); - - if (isRecording && timer_elapsed(blink_cycle_timer) > 150) { - blink_state = !blink_state; - blink_cycle_timer = timer_read(); - old_layer = 255; // fallthrough next check - } - - if (layer == old_layer && default_layer == old_default_layer) { - return; - } - old_layer = layer; - old_default_layer = default_layer; - dprintf("Layer change: %d %d", default_layer, layer); - led_update_rgb(); -} - -/*****************************************************************************/ -#else // classic LEDs on GPIO -bool led_update_kb(led_t led_state) { - dprintf("LED Update: %d %d %d", led_state.num_lock, led_state.caps_lock, led_state.scroll_lock); - - if (led_update_user(led_state)) { - if (!isRecording) writePin(MODELM_LED_NUMLOCK, !led_state.num_lock); - writePin(MODELM_LED_CAPSLOCK, !led_state.caps_lock); - writePin(MODELM_LED_SCROLLOCK, !led_state.scroll_lock); - } - return true; -} - -void update_layer_leds(void) { - if (isRecording && timer_elapsed(blink_cycle_timer) > 150) { - blink_state = !blink_state; - blink_cycle_timer = timer_read(); - writePin(MODELM_LED_NUMLOCK, blink_state); - } -} - -#endif - -void dynamic_macro_record_start_user(int8_t direction) { - isRecording++; - blink_cycle_timer = timer_read(); -} - -void dynamic_macro_record_end_user(int8_t direction) { - if (isRecording) isRecording--; -} diff --git a/keyboards/mschwingen/modelm/readme.md b/keyboards/mschwingen/modelm/readme.md @@ -1,25 +0,0 @@ -# atmega32U4 board for IBM Model M - -![modelm](https://raw.githubusercontent.com/mschwingen/hardware/master/modelm-usb/images/PCB.jpg) - -This is a configuration of QMK intended to be used with the [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb). - -* Keyboard Maintainer: [Michael Schwingen](https://github.com/mschwingen/) -* Hardware Supported: [Model M USB PCB](https://github.com/mschwingen/hardware/tree/master/modelm-usb) -* Hardware Availability: need to build your own. - -Make example for this keyboard (after setting up your build environment), run one of: - - make mschwingen/modelm/led_wired:default - make mschwingen/modelm/led_ffc:default - make mschwingen/modelm/led_ws2812:default - -flash: - - make mschwingen/modelm/led_wired:default:flash - make mschwingen/modelm/led_ffc:default:flash - make mschwingen/modelm/led_ws2812:default:flash - -Bootloader: do not use the QMK bootloader, use the bootloader from [here](https://github.com/mschwingen/modelm-lufa-bootloader) - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mschwingen/modelm/rules.mk b/keyboards/mschwingen/modelm/rules.mk @@ -1,29 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output - -CUSTOM_MATRIX = lite -KEY_LOCK_ENABLE = yes - -DYNAMIC_MACRO_ENABLE = yes - -UART_DEBUG = no - -SRC += matrix.c -QUANTUM_LIB_SRC += uart.c \ - spi_master.c - -OPT_DEFS += -DSLEEP_LED_ENABLE # we need our own sleep callbacks to turn of WS2812 LEDs - -LTO_ENABLE = yes - -DEFAULT_FOLDER = mschwingen/modelm/led_wired diff --git a/keyboards/tronguylabs/m122_3270/info.json b/keyboards/tronguylabs/m122_3270/info.json @@ -1,160 +0,0 @@ -{ - "keyboard_name": "Model M PC/3270 122 key", - "manufacturer": "IBM", - "maintainer": "jmaynard", - "usb": { - "vid": "0x1209", - "pid": "0x3270", - "max_power": 100 - }, - "debounce": 15, - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 9], "x": 3.25, "y": 0}, - {"matrix": [1, 9], "x": 4.25, "y": 0}, - {"matrix": [1, 10], "x": 5.25, "y": 0}, - {"matrix": [2, 9], "x": 6.25, "y": 0}, - {"matrix": [3, 9], "x": 7.25, "y": 0}, - {"matrix": [3, 10], "x": 8.25, "y": 0}, - {"matrix": [4, 9], "x": 9.25, "y": 0}, - {"matrix": [5, 9], "x": 10.25, "y": 0}, - {"matrix": [5, 10], "x": 11.25, "y": 0}, - {"matrix": [6, 9], "x": 12.25, "y": 0}, - {"matrix": [7, 9], "x": 13.25, "y": 0}, - {"matrix": [7, 10], "x": 14.25, "y": 0}, - - {"matrix": [0, 10], "x": 3.25, "y": 1}, - {"matrix": [0, 11], "x": 4.25, "y": 1}, - {"matrix": [1, 11], "x": 5.25, "y": 1}, - {"matrix": [2, 10], "x": 6.25, "y": 1}, - {"matrix": [2, 11], "x": 7.25, "y": 1}, - {"matrix": [3, 11], "x": 8.25, "y": 1}, - {"matrix": [4, 10], "x": 9.25, "y": 1}, - {"matrix": [4, 11], "x": 10.25, "y": 1}, - {"matrix": [5, 11], "x": 11.25, "y": 1}, - {"matrix": [6, 10], "x": 12.25, "y": 1}, - {"matrix": [6, 11], "x": 13.25, "y": 1}, - {"matrix": [7, 11], "x": 14.25, "y": 1}, - - {"matrix": [3, 1], "x": 0, "y": 3}, - {"matrix": [3, 2], "x": 1, "y": 3}, - - {"matrix": [3, 4], "x": 2.25, "y": 3}, - {"matrix": [2, 4], "x": 3.25, "y": 3}, - {"matrix": [2, 5], "x": 4.25, "y": 3}, - {"matrix": [2, 6], "x": 5.25, "y": 3}, - {"matrix": [2, 7], "x": 6.25, "y": 3}, - {"matrix": [3, 7], "x": 7.25, "y": 3}, - {"matrix": [3, 8], "x": 8.25, "y": 3}, - {"matrix": [2, 8], "x": 9.25, "y": 3}, - {"matrix": [2, 12], "x": 10.25, "y": 3}, - {"matrix": [2, 13], "x": 11.25, "y": 3}, - {"matrix": [2, 14], "x": 12.25, "y": 3}, - {"matrix": [3, 14], "x": 13.25, "y": 3}, - {"matrix": [3, 12], "x": 14.25, "y": 3}, - {"matrix": [3, 15], "x": 15.25, "y": 3, "w": 2}, - - {"matrix": [3, 16], "x": 17.5, "y": 3}, - {"matrix": [3, 17], "x": 18.5, "y": 3}, - {"matrix": [2, 16], "x": 19.5, "y": 3}, - - {"matrix": [2, 15], "x": 20.75, "y": 3}, - {"matrix": [2, 17], "x": 21.75, "y": 3}, - {"matrix": [2, 18], "x": 22.75, "y": 3}, - {"matrix": [2, 0], "x": 23.75, "y": 3}, - - {"matrix": [2, 1], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - - {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5}, - {"matrix": [4, 4], "x": 3.75, "y": 4}, - {"matrix": [4, 5], "x": 4.75, "y": 4}, - {"matrix": [4, 6], "x": 5.75, "y": 4}, - {"matrix": [4, 7], "x": 6.75, "y": 4}, - {"matrix": [5, 7], "x": 7.75, "y": 4}, - {"matrix": [5, 8], "x": 8.75, "y": 4}, - {"matrix": [4, 8], "x": 9.75, "y": 4}, - {"matrix": [4, 12], "x": 10.75, "y": 4}, - {"matrix": [4, 13], "x": 11.75, "y": 4}, - {"matrix": [4, 14], "x": 12.75, "y": 4}, - {"matrix": [5, 14], "x": 13.75, "y": 4}, - {"matrix": [5, 12], "x": 14.75, "y": 4}, - {"matrix": [6, 15], "x": 16, "y": 4, "w": 1.25, "h": 2}, - - {"matrix": [1, 16], "x": 17.5, "y": 4}, - {"matrix": [5, 16], "x": 18.5, "y": 4}, - {"matrix": [4, 16], "x": 19.5, "y": 4}, - - {"matrix": [4, 15], "x": 20.75, "y": 4}, - {"matrix": [4, 17], "x": 21.75, "y": 4}, - {"matrix": [4, 18], "x": 22.75, "y": 4}, - {"matrix": [4, 0], "x": 23.75, "y": 4}, - - {"matrix": [5, 1], "x": 0, "y": 5}, - {"matrix": [5, 2], "x": 1, "y": 5}, - - {"matrix": [6, 2], "x": 2.25, "y": 5, "w": 1.75}, - {"matrix": [1, 4], "x": 4, "y": 5}, - {"matrix": [1, 5], "x": 5, "y": 5}, - {"matrix": [1, 6], "x": 6, "y": 5}, - {"matrix": [1, 7], "x": 7, "y": 5}, - {"matrix": [0, 7], "x": 8, "y": 5}, - {"matrix": [0, 8], "x": 9, "y": 5}, - {"matrix": [1, 8], "x": 10, "y": 5}, - {"matrix": [1, 12], "x": 11, "y": 5}, - {"matrix": [1, 13], "x": 12, "y": 5}, - {"matrix": [1, 14], "x": 13, "y": 5}, - {"matrix": [0, 14], "x": 14, "y": 5}, - {"matrix": [6, 14], "x": 15, "y": 5}, - - {"matrix": [0, 16], "x": 18.5, "y": 5}, - - {"matrix": [1, 15], "x": 20.75, "y": 5}, - {"matrix": [1, 17], "x": 21.75, "y": 5}, - {"matrix": [1, 18], "x": 22.75, "y": 5}, - {"matrix": [1, 0], "x": 23.75, "y": 5}, - - {"matrix": [1, 1], "x": 0, "y": 6}, - {"matrix": [1, 2], "x": 1, "y": 6}, - - {"matrix": [7, 3], "x": 2.25, "y": 6, "w": 1.25}, - {"matrix": [7, 4], "x": 3.5, "y": 6}, - {"matrix": [6, 4], "x": 4.5, "y": 6}, - {"matrix": [6, 5], "x": 5.5, "y": 6}, - {"matrix": [6, 6], "x": 6.5, "y": 6}, - {"matrix": [6, 7], "x": 7.5, "y": 6}, - {"matrix": [7, 7], "x": 8.5, "y": 6}, - {"matrix": [7, 8], "x": 9.5, "y": 6}, - {"matrix": [6, 8], "x": 10.5, "y": 6}, - {"matrix": [6, 12], "x": 11.5, "y": 6}, - {"matrix": [6, 13], "x": 12.5, "y": 6}, - {"matrix": [7, 14], "x": 13.5, "y": 6}, - {"matrix": [6, 3], "x": 14.5, "y": 6, "w": 2.75}, - - {"matrix": [6, 0], "x": 17.5, "y": 6}, - {"matrix": [0, 19], "x": 18.5, "y": 6}, - {"matrix": [1, 19], "x": 19.5, "y": 6}, - - {"matrix": [6, 1], "x": 20.75, "y": 6}, - {"matrix": [6, 17], "x": 21.75, "y": 6}, - {"matrix": [6, 18], "x": 22.75, "y": 6}, - {"matrix": [7, 19], "x": 23.75, "y": 6, "h": 2}, - - {"matrix": [0, 2], "x": 0, "y": 7}, - {"matrix": [0, 1], "x": 1, "y": 7}, - - {"matrix": [0, 0], "x": 2.25, "y": 7, "w": 1.5}, - {"matrix": [7, 0], "x": 4.75, "y": 7, "w": 1.5}, - {"matrix": [7, 1], "x": 6.25, "y": 7, "w": 7}, - {"matrix": [0, 3], "x": 13.25, "y": 7, "w": 1.5}, - {"matrix": [7, 2], "x": 15.75, "y": 7, "w": 1.5}, - - {"matrix": [0, 15], "x": 18.5, "y": 7}, - - {"matrix": [7, 17], "x": 20.75, "y": 7, "w": 2}, - {"matrix": [7, 18], "x": 22.75, "y": 7} - ] - } - } -} diff --git a/keyboards/tronguylabs/m122_3270/readme.md b/keyboards/tronguylabs/m122_3270/readme.md @@ -1,22 +0,0 @@ -# m122-3270 - -![IBM Model M 122 key](https://i.imgur.com/Oo3Ozqzh.jpg) - -This is a replacement controller for the IBM Model M 122 key terminal keyboard running on a STM32F411 BlackPill, intended to act as closely to the 3270 keyboard's functioning as possible while still being usable on a PC. - -* Keyboard Maintainer: [Jay Maynard](https://github.com/jmaynard) -* Hardware Supported: BlackPill STM32F411, Teensy++ 2.0 -* Hardware Availability: [BlackPill](https://www.adafruit.com/product/4877), [Teensy](https://www.pjrc.com/store/teensypp.html) - -Make example for this keyboard (after setting up your build environment): - - make tronguylabs/m122_3270/blackpill:default - make tronguylabs/m122_3270/teensy:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - -A schematic and Gerber files are publicly available for those wishing to have carrier boards made -professionally instead of handwiring things. The M122 matrix connectors plug right into it. It can -be found at https://github.com/jmaynard/tronguylabs-m122-blackpill. - -This is derived from Luke Stanley's handwired/ibm122m keyboard, with my own keymapping and rework of the I/O for the BlackPill. There's also a version for the Teensy++ 2.0, since that was my original design and I still use one on one board, even though I switched to the BlackPill for future-proofing. The Teensy++ 2.0 is not recommended for new designs. diff --git a/keyboards/yugo_m/model_m_101/info.json b/keyboards/yugo_m/model_m_101/info.json @@ -1,398 +0,0 @@ -{ - "keyboard_name": "Yugo-M (Model M replacment controller)", - "manufacturer": "IBM", - "url": "https://github.com/tomic1785/qmk_firmware/tree/stm32_model_m/keyboards/yugo_m/model_m_101", - "maintainer": "Nidzo Tomic", - "usb": { - "vid": "0xFEED", - "pid": "0x8E81", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3"], - "rows": ["B8", "B7", "B6", "B5", "B4", "B3", "A15", "A14"] - }, - "diode_direction": "ROW2COL", - "processor": "STM32F303", - "bootloader": "stm32-dfu", - "board": "QMK_PROTON_C", - "layouts": { - "LAYOUT_all": { - "layout": [ - {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, - - {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, - {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, - {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, - {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, - - {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, - {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, - {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, - {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, - - {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, - {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, - {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, - {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, - - {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, - {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, - {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, - - {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, - {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, - {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, - {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, - {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, - {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, - {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, - {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, - {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, - {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, - {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, - {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, - {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, - {"label": "\\", "matrix": [4, 6], "x": 13, "y": 1.5}, - {"label": "Backspace", "matrix": [1, 6], "x": 14, "y": 1.5}, - - {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, - {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, - {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, - - {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, - {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, - {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, - {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, - - {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, - {"label": "\\", "matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, - {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, - {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, - - {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, - {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, - {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, - {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5}, - - {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, - {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"label": "#", "matrix": [6, 10], "x": 12.75, "y": 3.5}, - {"label": "Enter", "matrix": [6, 6], "x": 13.75, "y": 3.5, "w": 1.25}, - - {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, - {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, - {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, - {"label": "=", "matrix": [1, 14], "x": 22, "y": 3.5}, - - {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"label": "\\", "matrix": [0, 3], "x": 1.25, "y": 4.5}, - {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"label": "\\", "matrix": [7, 8], "x": 12.25, "y": 4.5}, - {"label": "Shift", "matrix": [6, 1], "x": 13.25, "y": 4.5, "w": 1.75}, - - {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, - - {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, - {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, - {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, - {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5}, - - {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, - {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, - {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, - - {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5}, - {"label": ",", "matrix": [0, 12], "x": 20, "y": 5.5}, - {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5}, - {"label": "GUI", "matrix": [5, 15], "x": 22, "y": 5.5} - ] - }, - "LAYOUT_fullsize_ansi_wkl": { - "layout": [ - {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, - - {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, - {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, - {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, - {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, - - {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, - {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, - {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, - {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, - - {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, - {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, - {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, - {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, - - {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, - {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, - {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, - - {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, - {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, - {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, - {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, - {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, - {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, - {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, - {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, - {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, - {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, - {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, - {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, - {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, - {"label": "Backspace", "matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, - {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, - {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, - - {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, - {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, - {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, - {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, - - {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, - {"label": "\\", "matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5}, - - {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, - {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, - {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, - - {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, - {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, - {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, - {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5, "h": 2}, - - {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, - {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"label": "Enter", "matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25}, - - {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, - {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, - {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, - - {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 2.25}, - {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"label": "Shift", "matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, - - {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, - {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, - {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, - {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5, "h": 2}, - - {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, - {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, - {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, - - {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, - {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} - ] - }, - "LAYOUT_fullsize_iso_wkl": { - "layout": [ - {"label": "Esc", "matrix": [0, 2], "x": 0, "y": 0}, - - {"label": "F1", "matrix": [2, 3], "x": 2, "y": 0}, - {"label": "F2", "matrix": [2, 4], "x": 3, "y": 0}, - {"label": "F3", "matrix": [1, 4], "x": 4, "y": 0}, - {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, - - {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, - {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, - {"label": "F7", "matrix": [1, 9], "x": 8.5, "y": 0}, - {"label": "F8", "matrix": [2, 9], "x": 9.5, "y": 0}, - - {"label": "F9", "matrix": [2, 6], "x": 11, "y": 0}, - {"label": "F10", "matrix": [3, 6], "x": 12, "y": 0}, - {"label": "F11", "matrix": [3, 11], "x": 13, "y": 0}, - {"label": "F12", "matrix": [3, 12], "x": 14, "y": 0}, - - {"label": "Print Screen", "matrix": [3, 15], "x": 15.5, "y": 0}, - {"label": "Scroll Lock", "matrix": [4, 15], "x": 16.5, "y": 0}, - {"label": "Pause", "matrix": [6, 14], "x": 17.5, "y": 0}, - - {"label": "`", "matrix": [2, 2], "x": 0, "y": 1.5}, - {"label": "1", "matrix": [3, 2], "x": 1, "y": 1.5}, - {"label": "2", "matrix": [3, 3], "x": 2, "y": 1.5}, - {"label": "3", "matrix": [3, 4], "x": 3, "y": 1.5}, - {"label": "4", "matrix": [3, 5], "x": 4, "y": 1.5}, - {"label": "5", "matrix": [2, 5], "x": 5, "y": 1.5}, - {"label": "6", "matrix": [2, 7], "x": 6, "y": 1.5}, - {"label": "7", "matrix": [3, 7], "x": 7, "y": 1.5}, - {"label": "8", "matrix": [3, 8], "x": 8, "y": 1.5}, - {"label": "9", "matrix": [3, 9], "x": 9, "y": 1.5}, - {"label": "0", "matrix": [3, 10], "x": 10, "y": 1.5}, - {"label": "-", "matrix": [2, 10], "x": 11, "y": 1.5}, - {"label": "=", "matrix": [2, 8], "x": 12, "y": 1.5}, - {"label": "Backspace", "matrix": [1, 6], "x": 13, "y": 1.5, "w": 2}, - - {"label": "Insert", "matrix": [2, 12], "x": 15.5, "y": 1.5}, - {"label": "Home", "matrix": [2, 14], "x": 16.5, "y": 1.5}, - {"label": "Page Up", "matrix": [2, 13], "x": 17.5, "y": 1.5}, - - {"label": "Num Lock", "matrix": [6, 11], "x": 19, "y": 1.5}, - {"label": "/", "matrix": [6, 12], "x": 20, "y": 1.5}, - {"label": "*", "matrix": [6, 13], "x": 21, "y": 1.5}, - {"label": "-", "matrix": [7, 13], "x": 22, "y": 1.5}, - - {"label": "Tab", "matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5}, - {"label": "Q", "matrix": [4, 2], "x": 1.5, "y": 2.5}, - {"label": "W", "matrix": [4, 3], "x": 2.5, "y": 2.5}, - {"label": "E", "matrix": [4, 4], "x": 3.5, "y": 2.5}, - {"label": "R", "matrix": [4, 5], "x": 4.5, "y": 2.5}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 2.5}, - {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 2.5}, - {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, - {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, - {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, - {"label": "P", "matrix": [4, 10], "x": 10.5, "y": 2.5}, - {"label": "[", "matrix": [1, 10], "x": 11.5, "y": 2.5}, - {"label": "]", "matrix": [1, 8], "x": 12.5, "y": 2.5}, - - {"label": "Delete", "matrix": [2, 11], "x": 15.5, "y": 2.5}, - {"label": "End", "matrix": [3, 14], "x": 16.5, "y": 2.5}, - {"label": "Page Down", "matrix": [3, 13], "x": 17.5, "y": 2.5}, - - {"label": "7", "matrix": [4, 11], "x": 19, "y": 2.5}, - {"label": "8", "matrix": [4, 12], "x": 20, "y": 2.5}, - {"label": "9", "matrix": [4, 13], "x": 21, "y": 2.5}, - {"label": "+", "matrix": [4, 14], "x": 22, "y": 2.5, "h": 2}, - - {"label": "Caps Lock", "matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.25}, - {"label": "A", "matrix": [5, 2], "x": 1.75, "y": 3.5}, - {"label": "S", "matrix": [5, 3], "x": 2.75, "y": 3.5}, - {"label": "D", "matrix": [5, 4], "x": 3.75, "y": 3.5}, - {"label": "F", "matrix": [5, 5], "x": 4.75, "y": 3.5}, - {"label": "G", "matrix": [0, 5], "x": 5.75, "y": 3.5}, - {"label": "H", "matrix": [0, 7], "x": 6.75, "y": 3.5}, - {"label": "J", "matrix": [5, 7], "x": 7.75, "y": 3.5}, - {"label": "K", "matrix": [5, 8], "x": 8.75, "y": 3.5}, - {"label": "L", "matrix": [5, 9], "x": 9.75, "y": 3.5}, - {"label": ";", "matrix": [5, 10], "x": 10.75, "y": 3.5}, - {"label": "'", "matrix": [0, 10], "x": 11.75, "y": 3.5}, - {"label": "#", "matrix": [6, 10], "x": 12.75, "y": 3.5}, - {"label": "Enter", "matrix": [6, 6], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, - - {"label": "4", "matrix": [1, 11], "x": 19, "y": 3.5}, - {"label": "5", "matrix": [1, 12], "x": 20, "y": 3.5}, - {"label": "6", "matrix": [1, 13], "x": 21, "y": 3.5}, - - {"label": "Shift", "matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25}, - {"label": "\\", "matrix": [0, 3], "x": 1.25, "y": 4.5}, - {"label": "Z", "matrix": [6, 2], "x": 2.25, "y": 4.5}, - {"label": "X", "matrix": [6, 3], "x": 3.25, "y": 4.5}, - {"label": "C", "matrix": [6, 4], "x": 4.25, "y": 4.5}, - {"label": "V", "matrix": [6, 5], "x": 5.25, "y": 4.5}, - {"label": "B", "matrix": [7, 5], "x": 6.25, "y": 4.5}, - {"label": "N", "matrix": [7, 7], "x": 7.25, "y": 4.5}, - {"label": "M", "matrix": [6, 7], "x": 8.25, "y": 4.5}, - {"label": ",", "matrix": [6, 8], "x": 9.25, "y": 4.5}, - {"label": ".", "matrix": [6, 9], "x": 10.25, "y": 4.5}, - {"label": "/", "matrix": [7, 10], "x": 11.25, "y": 4.5}, - {"label": "Shift", "matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75}, - - {"label": "\u2191", "matrix": [0, 14], "x": 16.5, "y": 4.5}, - - {"label": "1", "matrix": [5, 11], "x": 19, "y": 4.5}, - {"label": "2", "matrix": [5, 12], "x": 20, "y": 4.5}, - {"label": "3", "matrix": [5, 13], "x": 21, "y": 4.5}, - {"label": "Enter", "matrix": [5, 14], "x": 22, "y": 4.5, "h": 2}, - - {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5}, - {"label": "Alt", "matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5}, - {"label": "Space", "matrix": [7, 6], "x": 4, "y": 5.5, "w": 7}, - {"label": "Alt Gr", "matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5}, - {"label": "Ctrl", "matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5}, - - {"label": "\u2190", "matrix": [7, 14], "x": 15.5, "y": 5.5}, - {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, - {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, - - {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, - {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} - ] - } - } -} diff --git a/keyboards/yugo_m/model_m_101/model_m_101.c b/keyboards/yugo_m/model_m_101/model_m_101.c @@ -1,35 +0,0 @@ -/* Copyright 2020 Nidzo Tomic <tomicn8@hotmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include "quantum.h" - -void keyboard_pre_init_kb(void) { - // Set our LED pins as output - setPinOutput(A2); - setPinOutput(A1); - setPinOutput(A0); - - keyboard_pre_init_user(); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(A2, !led_state.num_lock); - writePin(A1, !led_state.caps_lock); - writePin(A0, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/yugo_m/model_m_101/readme.md b/keyboards/yugo_m/model_m_101/readme.md @@ -1,25 +0,0 @@ -# Yugo-M - -![Yugo-M](https://raw.githubusercontent.com/tomic1785/Yugo-M-controller-project/master/Pictures/rev_09b.jpg) - -A drop-in replacement controller PCB for IBM Model M keyboards, based on the STM32 MCU. [More info on the Yugo-M project repository](https://github.com/tomic1785/Yugo-M-controller-project) - -* Keyboard Maintainer: [Nidzo Tomic](https://github.com/tomic1785) -* Hardware Supported: Yugo-M PCB - * Rev 0.9b - * Rev 1.1b -* Hardware Availability: [Check out the project repository](https://github.com/tomic1785/Yugo-M-controller-project) - -Make example for this keyboard (after setting up your build environment): - - make yugo_m/model_m_101:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - - - -Note regarding 2022 matrix update: - -The original author's firmware did not make several lesser-used membrane/matrix positions available to the controller. These are useful for JIS users and/or if you simply want to create a more unique layout. I've added all of the unused membrane positions to the firmware, except for an extremely seldom used one that sits in the left side of the space bar on some later membranes (I would have added it if I knew its matrix position, but I haven't mapped that out yet). The default mappings for these additional keys follow JIS conventions, except for the extra key on the bottom right corner of the numpad (lower half of vertical 2u Enter), which I've mapped to the LGUI key a.k.a. left Windows/Command key for now. Remap as you wish! - -- an_achronism, February 2022 -\ No newline at end of file diff --git a/keyboards/yugo_m/readme.md b/keyboards/yugo_m/readme.md @@ -1,19 +0,0 @@ -# Yugo-M - An STM32-based IBM Model M controller - -A drop-in replacement controller PCB for IBM Model M keyboards. -Currently available only for 101/102 key keyboards. - -* Keyboard Maintainer: [Nidzo Tomic](https://github.com/tomic1785) -* Hardware Supported: Yugo-M PCB - * Rev 0.9b - * Rev 1.1b - -For more info visit the project repository: [Yugo-M-controller-project](https://github.com/tomic1785/Yugo-M-controller-project) - - - -Note regarding 2022 matrix update: - -The original author's firmware did not make several lesser-used membrane/matrix positions available to the controller. These are useful for JIS users and/or if you simply want to create a more unique layout. I've added all of the unused membrane positions to the firmware, except for an extremely seldom used one that sits in the left side of the space bar on some later membranes (I would have added it if I knew its matrix position, but I haven't mapped that out yet). The default mappings for these additional keys follow JIS conventions, except for the extra key on the bottom right corner of the numpad (lower half of vertical 2u Enter), which I've mapped to the LGUI key a.k.a. left Windows/Command key for now. Remap as you wish! - -- an_achronism, February 2022 -\ No newline at end of file