From e1766df185869d8a591228d37f3f7b6d5b4049b4 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Sat, 20 May 2023 20:16:36 +0800 Subject: Add a change log for PR20584 (#20998) --- docs/ChangeLog/20230528/PR20584.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/ChangeLog/20230528/PR20584.md (limited to 'docs/ChangeLog') diff --git a/docs/ChangeLog/20230528/PR20584.md b/docs/ChangeLog/20230528/PR20584.md new file mode 100644 index 0000000000..e9e49f5730 --- /dev/null +++ b/docs/ChangeLog/20230528/PR20584.md @@ -0,0 +1,3 @@ +Two new boolean callback functions, `pre_process_record_kb` and `pre_process_record_user`, are added in this change. They are called at the beginning of `process_record`, right before `process_combo`. + +Similar to existing `*_kb` and `*_user` callback functions, returning `false` will halt further processing of key events. The `pre_process_record_user` function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, `pre_process_record_user` can capture the next key record of an input event that follows. That key record can be used to influence the [decision of the mod-tap](https://docs.qmk.fm/#/tap_hold) key that is currently undergoing quantum processing. -- cgit v1.3.1 From f98f8eedf0dc6fe939162210ad44d5af8a0dfa08 Mon Sep 17 00:00:00 2001 From: nuess0r Date: Sat, 27 May 2023 15:12:36 +0200 Subject: Consolidate modelm v2 (#14996) Co-authored-by: Ryan Co-authored-by: Nick Brassel --- data/mappings/keyboard_aliases.hjson | 24 + docs/ChangeLog/20230528/PR14996.md | 21 + keyboards/ashpil/modelm_usbc/info.json | 270 ---------- .../ashpil/modelm_usbc/keymaps/ashpil/config.h | 23 - .../ashpil/modelm_usbc/keymaps/ashpil/keymap.c | 47 -- .../ashpil/modelm_usbc/keymaps/ashpil/rules.mk | 1 - .../ashpil/modelm_usbc/keymaps/default/keymap.c | 27 - keyboards/ashpil/modelm_usbc/modelm_usbc.c | 36 -- keyboards/ashpil/modelm_usbc/readme.md | 14 - keyboards/ashpil/modelm_usbc/rules.mk | 12 - keyboards/converter/modelm101/config.h | 37 -- keyboards/converter/modelm101/info.json | 145 ------ .../converter/modelm101/keymaps/default/keymap.c | 27 - .../converter/modelm101/keymaps/default/readme.md | 1 - .../converter/modelm101/keymaps/iw0rm3r/config.h | 19 - .../converter/modelm101/keymaps/iw0rm3r/keymap.c | 43 -- .../converter/modelm101/keymaps/iw0rm3r/readme.md | 5 - keyboards/converter/modelm101/modelm101.c | 36 -- keyboards/converter/modelm101/readme.md | 42 -- keyboards/converter/modelm101/rules.mk | 12 - keyboards/converter/modelm101_teensy2/config.h | 37 -- keyboards/converter/modelm101_teensy2/info.json | 149 ------ .../modelm101_teensy2/keymaps/default/keymap.c | 27 - .../modelm101_teensy2/keymaps/default/readme.md | 1 - keyboards/converter/modelm101_teensy2/readme.md | 29 -- keyboards/converter/modelm101_teensy2/rules.mk | 12 - keyboards/converter/modelm_ssk/config.h | 37 -- keyboards/converter/modelm_ssk/info.json | 128 ----- .../converter/modelm_ssk/keymaps/default/keymap.c | 114 ----- .../converter/modelm_ssk/keymaps/default/readme.md | 1 - .../modelm_ssk/keymaps/tiltowait/config.h | 21 - .../modelm_ssk/keymaps/tiltowait/keymap.c | 116 ----- .../modelm_ssk/keymaps/tiltowait/readme.md | 11 - keyboards/converter/modelm_ssk/readme.md | 55 -- keyboards/converter/modelm_ssk/rules.mk | 12 - keyboards/handwired/ibm122m/config.h | 42 -- keyboards/handwired/ibm122m/info.json | 168 ------- .../handwired/ibm122m/keymaps/andresteare/keymap.c | 29 -- .../handwired/ibm122m/keymaps/default/config.h | 19 - .../handwired/ibm122m/keymaps/default/keymap.c | 29 -- .../handwired/ibm122m/keymaps/default/readme.md | 2 - .../handwired/ibm122m/keymaps/lukaus/config.h | 19 - .../handwired/ibm122m/keymaps/lukaus/keymap.c | 558 --------------------- .../handwired/ibm122m/keymaps/lukaus/readme.md | 2 - keyboards/handwired/ibm122m/keymaps/via/keymap.c | 63 --- keyboards/handwired/ibm122m/keymaps/via/rules.mk | 1 - keyboards/handwired/ibm122m/readme.md | 16 - keyboards/handwired/ibm122m/rules.mk | 11 - keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c | 36 ++ keyboards/ibm/model_m/ashpil_usbc/info.json | 270 ++++++++++ .../model_m/ashpil_usbc/keymaps/ashpil/config.h | 23 + .../model_m/ashpil_usbc/keymaps/ashpil/keymap.c | 47 ++ .../model_m/ashpil_usbc/keymaps/ashpil/rules.mk | 1 + .../model_m/ashpil_usbc/keymaps/default/keymap.c | 27 + keyboards/ibm/model_m/ashpil_usbc/readme.md | 14 + keyboards/ibm/model_m/ashpil_usbc/rules.mk | 12 + keyboards/ibm/model_m/modelm/readme.md | 24 + keyboards/ibm/model_m/mschwingen/config.h | 77 +++ keyboards/ibm/model_m/mschwingen/info.json | 143 ++++++ .../model_m/mschwingen/keymaps/default/keymap.c | 86 ++++ keyboards/ibm/model_m/mschwingen/led_ffc/readme.md | 21 + keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk | 1 + .../ibm/model_m/mschwingen/led_wired/readme.md | 21 + .../ibm/model_m/mschwingen/led_wired/rules.mk | 1 + .../ibm/model_m/mschwingen/led_ws2812/readme.md | 21 + .../ibm/model_m/mschwingen/led_ws2812/rules.mk | 1 + keyboards/ibm/model_m/mschwingen/matrix.c | 113 +++++ keyboards/ibm/model_m/mschwingen/mschwingen.c | 213 ++++++++ keyboards/ibm/model_m/mschwingen/mschwingen.h | 22 + keyboards/ibm/model_m/mschwingen/post_rules.mk | 3 + keyboards/ibm/model_m/mschwingen/readme.md | 25 + keyboards/ibm/model_m/mschwingen/rules.mk | 29 ++ keyboards/ibm/model_m/teensy2/config.h | 37 ++ keyboards/ibm/model_m/teensy2/info.json | 149 ++++++ .../ibm/model_m/teensy2/keymaps/default/keymap.c | 27 + .../ibm/model_m/teensy2/keymaps/default/readme.md | 1 + keyboards/ibm/model_m/teensy2/readme.md | 29 ++ keyboards/ibm/model_m/teensy2/rules.mk | 12 + keyboards/ibm/model_m/teensypp/config.h | 37 ++ keyboards/ibm/model_m/teensypp/info.json | 145 ++++++ .../ibm/model_m/teensypp/keymaps/default/keymap.c | 27 + .../ibm/model_m/teensypp/keymaps/default/readme.md | 1 + .../ibm/model_m/teensypp/keymaps/iw0rm3r/config.h | 19 + .../ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c | 43 ++ .../ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md | 5 + keyboards/ibm/model_m/teensypp/readme.md | 42 ++ keyboards/ibm/model_m/teensypp/rules.mk | 12 + keyboards/ibm/model_m/teensypp/teensypp.c | 36 ++ keyboards/ibm/model_m/yugo_m/config.h | 42 ++ keyboards/ibm/model_m/yugo_m/info.json | 398 +++++++++++++++ .../ibm/model_m/yugo_m/keymaps/default/keymap.c | 46 ++ .../ibm/model_m/yugo_m/keymaps/default/readme.md | 1 + keyboards/ibm/model_m/yugo_m/readme.md | 25 + keyboards/ibm/model_m/yugo_m/rules.mk | 12 + keyboards/ibm/model_m/yugo_m/yugo_m.c | 35 ++ keyboards/ibm/model_m_122/ibm122m/config.h | 42 ++ keyboards/ibm/model_m_122/ibm122m/info.json | 169 +++++++ .../ibm122m/keymaps/andresteare/keymap.c | 29 ++ .../model_m_122/ibm122m/keymaps/default/config.h | 19 + .../model_m_122/ibm122m/keymaps/default/keymap.c | 29 ++ .../model_m_122/ibm122m/keymaps/default/readme.md | 2 + .../model_m_122/ibm122m/keymaps/lukaus/config.h | 19 + .../model_m_122/ibm122m/keymaps/lukaus/keymap.c | 558 +++++++++++++++++++++ .../model_m_122/ibm122m/keymaps/lukaus/readme.md | 2 + .../ibm/model_m_122/ibm122m/keymaps/via/keymap.c | 63 +++ .../ibm/model_m_122/ibm122m/keymaps/via/rules.mk | 1 + keyboards/ibm/model_m_122/ibm122m/readme.md | 31 ++ keyboards/ibm/model_m_122/ibm122m/rules.mk | 11 + .../ibm/model_m_122/m122_3270/blackpill/info.json | 13 + .../ibm/model_m_122/m122_3270/blackpill/readme.md | 3 + .../ibm/model_m_122/m122_3270/blackpill/rules.mk | 12 + .../ibm/model_m_122/m122_3270/bluepill/info.json | 12 + .../ibm/model_m_122/m122_3270/bluepill/readme.md | 2 + .../ibm/model_m_122/m122_3270/bluepill/rules.mk | 0 keyboards/ibm/model_m_122/m122_3270/info.json | 161 ++++++ .../model_m_122/m122_3270/keymaps/default/keymap.c | 214 ++++++++ .../m122_3270/keymaps/default/readme.md | 35 ++ keyboards/ibm/model_m_122/m122_3270/readme.md | 33 ++ .../ibm/model_m_122/m122_3270/teensy/info.json | 12 + .../ibm/model_m_122/m122_3270/teensy/readme.md | 3 + .../ibm/model_m_122/m122_3270/teensy/rules.mk | 12 + keyboards/ibm/model_m_122/readme.md | 24 + keyboards/ibm/model_m_ssk/readme.md | 24 + keyboards/ibm/model_m_ssk/teensypp_ssk/config.h | 37 ++ keyboards/ibm/model_m_ssk/teensypp_ssk/info.json | 128 +++++ .../teensypp_ssk/keymaps/default/keymap.c | 114 +++++ .../teensypp_ssk/keymaps/default/readme.md | 1 + .../teensypp_ssk/keymaps/tiltowait/config.h | 21 + .../teensypp_ssk/keymaps/tiltowait/keymap.c | 116 +++++ .../teensypp_ssk/keymaps/tiltowait/readme.md | 11 + keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md | 55 ++ keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk | 12 + keyboards/mschwingen/modelm/config.h | 77 --- keyboards/mschwingen/modelm/info.json | 143 ------ .../mschwingen/modelm/keymaps/default/keymap.c | 86 ---- keyboards/mschwingen/modelm/led_ffc/rules.mk | 1 - keyboards/mschwingen/modelm/led_wired/rules.mk | 1 - keyboards/mschwingen/modelm/led_ws2812/rules.mk | 1 - keyboards/mschwingen/modelm/matrix.c | 113 ----- keyboards/mschwingen/modelm/modelm.c | 214 -------- keyboards/mschwingen/modelm/modelm.h | 22 - keyboards/mschwingen/modelm/post_rules.mk | 3 - keyboards/mschwingen/modelm/readme.md | 25 - keyboards/mschwingen/modelm/rules.mk | 29 -- .../tronguylabs/m122_3270/blackpill/info.json | 13 - .../tronguylabs/m122_3270/blackpill/readme.md | 3 - keyboards/tronguylabs/m122_3270/blackpill/rules.mk | 12 - keyboards/tronguylabs/m122_3270/bluepill/info.json | 12 - keyboards/tronguylabs/m122_3270/bluepill/readme.md | 2 - keyboards/tronguylabs/m122_3270/bluepill/rules.mk | 0 keyboards/tronguylabs/m122_3270/info.json | 160 ------ .../tronguylabs/m122_3270/keymaps/default/keymap.c | 214 -------- .../m122_3270/keymaps/default/readme.md | 35 -- keyboards/tronguylabs/m122_3270/readme.md | 22 - keyboards/tronguylabs/m122_3270/teensy/info.json | 12 - keyboards/tronguylabs/m122_3270/teensy/readme.md | 3 - keyboards/tronguylabs/m122_3270/teensy/rules.mk | 12 - keyboards/yugo_m/model_m_101/config.h | 42 -- keyboards/yugo_m/model_m_101/info.json | 398 --------------- .../yugo_m/model_m_101/keymaps/default/keymap.c | 46 -- .../yugo_m/model_m_101/keymaps/default/readme.md | 1 - keyboards/yugo_m/model_m_101/model_m_101.c | 35 -- keyboards/yugo_m/model_m_101/readme.md | 25 - keyboards/yugo_m/model_m_101/rules.mk | 12 - keyboards/yugo_m/readme.md | 19 - 165 files changed, 4487 insertions(+), 4299 deletions(-) create mode 100644 docs/ChangeLog/20230528/PR14996.md delete mode 100644 keyboards/ashpil/modelm_usbc/info.json delete mode 100644 keyboards/ashpil/modelm_usbc/keymaps/ashpil/config.h delete mode 100644 keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c delete mode 100644 keyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk delete mode 100644 keyboards/ashpil/modelm_usbc/keymaps/default/keymap.c delete mode 100644 keyboards/ashpil/modelm_usbc/modelm_usbc.c delete mode 100644 keyboards/ashpil/modelm_usbc/readme.md delete mode 100644 keyboards/ashpil/modelm_usbc/rules.mk delete mode 100644 keyboards/converter/modelm101/config.h delete mode 100644 keyboards/converter/modelm101/info.json delete mode 100644 keyboards/converter/modelm101/keymaps/default/keymap.c delete mode 100644 keyboards/converter/modelm101/keymaps/default/readme.md delete mode 100644 keyboards/converter/modelm101/keymaps/iw0rm3r/config.h delete mode 100644 keyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c delete mode 100644 keyboards/converter/modelm101/keymaps/iw0rm3r/readme.md delete mode 100644 keyboards/converter/modelm101/modelm101.c delete mode 100644 keyboards/converter/modelm101/readme.md delete mode 100644 keyboards/converter/modelm101/rules.mk delete mode 100644 keyboards/converter/modelm101_teensy2/config.h delete mode 100644 keyboards/converter/modelm101_teensy2/info.json delete mode 100644 keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c delete mode 100644 keyboards/converter/modelm101_teensy2/keymaps/default/readme.md delete mode 100644 keyboards/converter/modelm101_teensy2/readme.md delete mode 100644 keyboards/converter/modelm101_teensy2/rules.mk delete mode 100644 keyboards/converter/modelm_ssk/config.h delete mode 100644 keyboards/converter/modelm_ssk/info.json delete mode 100644 keyboards/converter/modelm_ssk/keymaps/default/keymap.c delete mode 100644 keyboards/converter/modelm_ssk/keymaps/default/readme.md delete mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h delete mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c delete mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md delete mode 100644 keyboards/converter/modelm_ssk/readme.md delete mode 100644 keyboards/converter/modelm_ssk/rules.mk delete mode 100644 keyboards/handwired/ibm122m/config.h delete mode 100644 keyboards/handwired/ibm122m/info.json delete mode 100644 keyboards/handwired/ibm122m/keymaps/andresteare/keymap.c delete mode 100644 keyboards/handwired/ibm122m/keymaps/default/config.h delete mode 100644 keyboards/handwired/ibm122m/keymaps/default/keymap.c delete mode 100644 keyboards/handwired/ibm122m/keymaps/default/readme.md delete mode 100644 keyboards/handwired/ibm122m/keymaps/lukaus/config.h delete mode 100644 keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c delete mode 100644 keyboards/handwired/ibm122m/keymaps/lukaus/readme.md delete mode 100644 keyboards/handwired/ibm122m/keymaps/via/keymap.c delete mode 100644 keyboards/handwired/ibm122m/keymaps/via/rules.mk delete mode 100644 keyboards/handwired/ibm122m/readme.md delete mode 100644 keyboards/handwired/ibm122m/rules.mk create mode 100644 keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c create mode 100644 keyboards/ibm/model_m/ashpil_usbc/info.json create mode 100644 keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h create mode 100644 keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c create mode 100644 keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk create mode 100644 keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m/ashpil_usbc/readme.md create mode 100644 keyboards/ibm/model_m/ashpil_usbc/rules.mk create mode 100644 keyboards/ibm/model_m/modelm/readme.md create mode 100644 keyboards/ibm/model_m/mschwingen/config.h create mode 100644 keyboards/ibm/model_m/mschwingen/info.json create mode 100644 keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m/mschwingen/led_ffc/readme.md create mode 100644 keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk create mode 100644 keyboards/ibm/model_m/mschwingen/led_wired/readme.md create mode 100644 keyboards/ibm/model_m/mschwingen/led_wired/rules.mk create mode 100644 keyboards/ibm/model_m/mschwingen/led_ws2812/readme.md create mode 100644 keyboards/ibm/model_m/mschwingen/led_ws2812/rules.mk create mode 100644 keyboards/ibm/model_m/mschwingen/matrix.c create mode 100644 keyboards/ibm/model_m/mschwingen/mschwingen.c create mode 100644 keyboards/ibm/model_m/mschwingen/mschwingen.h create mode 100644 keyboards/ibm/model_m/mschwingen/post_rules.mk create mode 100644 keyboards/ibm/model_m/mschwingen/readme.md create mode 100644 keyboards/ibm/model_m/mschwingen/rules.mk create mode 100644 keyboards/ibm/model_m/teensy2/config.h create mode 100644 keyboards/ibm/model_m/teensy2/info.json create mode 100644 keyboards/ibm/model_m/teensy2/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m/teensy2/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m/teensy2/readme.md create mode 100644 keyboards/ibm/model_m/teensy2/rules.mk create mode 100644 keyboards/ibm/model_m/teensypp/config.h create mode 100644 keyboards/ibm/model_m/teensypp/info.json create mode 100644 keyboards/ibm/model_m/teensypp/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m/teensypp/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h create mode 100644 keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c create mode 100644 keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md create mode 100644 keyboards/ibm/model_m/teensypp/readme.md create mode 100644 keyboards/ibm/model_m/teensypp/rules.mk create mode 100644 keyboards/ibm/model_m/teensypp/teensypp.c create mode 100644 keyboards/ibm/model_m/yugo_m/config.h create mode 100644 keyboards/ibm/model_m/yugo_m/info.json create mode 100644 keyboards/ibm/model_m/yugo_m/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m/yugo_m/readme.md create mode 100644 keyboards/ibm/model_m/yugo_m/rules.mk create mode 100644 keyboards/ibm/model_m/yugo_m/yugo_m.c create mode 100644 keyboards/ibm/model_m_122/ibm122m/config.h create mode 100644 keyboards/ibm/model_m_122/ibm122m/info.json create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c create mode 100644 keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk create mode 100644 keyboards/ibm/model_m_122/ibm122m/readme.md create mode 100644 keyboards/ibm/model_m_122/ibm122m/rules.mk create mode 100644 keyboards/ibm/model_m_122/m122_3270/blackpill/info.json create mode 100644 keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md create mode 100644 keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk create mode 100644 keyboards/ibm/model_m_122/m122_3270/bluepill/info.json create mode 100644 keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md create mode 100644 keyboards/ibm/model_m_122/m122_3270/bluepill/rules.mk create mode 100644 keyboards/ibm/model_m_122/m122_3270/info.json create mode 100644 keyboards/ibm/model_m_122/m122_3270/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m_122/m122_3270/readme.md create mode 100644 keyboards/ibm/model_m_122/m122_3270/teensy/info.json create mode 100644 keyboards/ibm/model_m_122/m122_3270/teensy/readme.md create mode 100644 keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk create mode 100644 keyboards/ibm/model_m_122/readme.md create mode 100644 keyboards/ibm/model_m_ssk/readme.md create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/config.h create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/info.json create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md create mode 100644 keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk delete mode 100644 keyboards/mschwingen/modelm/config.h delete mode 100644 keyboards/mschwingen/modelm/info.json delete mode 100644 keyboards/mschwingen/modelm/keymaps/default/keymap.c delete mode 100644 keyboards/mschwingen/modelm/led_ffc/rules.mk delete mode 100644 keyboards/mschwingen/modelm/led_wired/rules.mk delete mode 100644 keyboards/mschwingen/modelm/led_ws2812/rules.mk delete mode 100644 keyboards/mschwingen/modelm/matrix.c delete mode 100644 keyboards/mschwingen/modelm/modelm.c delete mode 100644 keyboards/mschwingen/modelm/modelm.h delete mode 100644 keyboards/mschwingen/modelm/post_rules.mk delete mode 100644 keyboards/mschwingen/modelm/readme.md delete mode 100644 keyboards/mschwingen/modelm/rules.mk delete mode 100644 keyboards/tronguylabs/m122_3270/blackpill/info.json delete mode 100644 keyboards/tronguylabs/m122_3270/blackpill/readme.md delete mode 100644 keyboards/tronguylabs/m122_3270/blackpill/rules.mk delete mode 100644 keyboards/tronguylabs/m122_3270/bluepill/info.json delete mode 100644 keyboards/tronguylabs/m122_3270/bluepill/readme.md delete mode 100644 keyboards/tronguylabs/m122_3270/bluepill/rules.mk delete mode 100644 keyboards/tronguylabs/m122_3270/info.json delete mode 100644 keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c delete mode 100644 keyboards/tronguylabs/m122_3270/keymaps/default/readme.md delete mode 100644 keyboards/tronguylabs/m122_3270/readme.md delete mode 100644 keyboards/tronguylabs/m122_3270/teensy/info.json delete mode 100644 keyboards/tronguylabs/m122_3270/teensy/readme.md delete mode 100644 keyboards/tronguylabs/m122_3270/teensy/rules.mk delete mode 100644 keyboards/yugo_m/model_m_101/config.h delete mode 100644 keyboards/yugo_m/model_m_101/info.json delete mode 100644 keyboards/yugo_m/model_m_101/keymaps/default/keymap.c delete mode 100644 keyboards/yugo_m/model_m_101/keymaps/default/readme.md delete mode 100644 keyboards/yugo_m/model_m_101/model_m_101.c delete mode 100644 keyboards/yugo_m/model_m_101/readme.md delete mode 100644 keyboards/yugo_m/model_m_101/rules.mk delete mode 100644 keyboards/yugo_m/readme.md (limited to 'docs/ChangeLog') diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 7b27f3415b..a656288a8f 100644 --- 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 new file mode 100644 index 0000000000..d59b407e4c --- /dev/null +++ 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 deleted file mode 100644 index 4d8eec3167..0000000000 --- a/keyboards/ashpil/modelm_usbc/info.json +++ /dev/null @@ -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/keymaps/ashpil/config.h b/keyboards/ashpil/modelm_usbc/keymaps/ashpil/config.h deleted file mode 100644 index 59cec33010..0000000000 --- a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2019 ashpil - * - * 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 . - */ - -#pragma once - -// place overrides here - - -/* Add combos */ -#define COMBO_TERM 200 diff --git a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c b/keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c deleted file mode 100644 index e8df1f0c81..0000000000 --- a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/keymap.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2019 ashpil - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_fullsize_ansi_wkl( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MEDIA_PLAY_PAUSE, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_AUDIO_VOL_DOWN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), -}; - -enum combo_events { - CTRL_PAUS_RESET, -}; - -const uint16_t PROGMEM reset_combo[] = {KC_LCTL, KC_PAUS, COMBO_END}; - -combo_t key_combos[] = { - [CTRL_PAUS_RESET] = COMBO_ACTION(reset_combo), -}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - switch(combo_index) { - case CTRL_PAUS_RESET: - if (pressed) { - reset_keyboard(); - } - break; - } -} diff --git a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk b/keyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk deleted file mode 100644 index 23b7c173b8..0000000000 --- a/keyboards/ashpil/modelm_usbc/keymaps/ashpil/rules.mk +++ /dev/null @@ -1 +0,0 @@ -COMBO_ENABLE = yes # Reset combo \ No newline at end of file diff --git a/keyboards/ashpil/modelm_usbc/keymaps/default/keymap.c b/keyboards/ashpil/modelm_usbc/keymaps/default/keymap.c deleted file mode 100644 index d8f80a5c72..0000000000 --- a/keyboards/ashpil/modelm_usbc/keymaps/default/keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 ashpil - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_fullsize_ansi_wkl( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), -}; diff --git a/keyboards/ashpil/modelm_usbc/modelm_usbc.c b/keyboards/ashpil/modelm_usbc/modelm_usbc.c deleted file mode 100644 index 92b577635c..0000000000 --- a/keyboards/ashpil/modelm_usbc/modelm_usbc.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2019 ashpil - * - * 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 . - */ - -#include "quantum.h" - -void keyboard_pre_init_kb(void) { - /* Setting status LEDs pins to output and +5V (off) */ - setPinOutput(D5); - setPinOutput(D6); - setPinOutput(D7); - writePinHigh(D5); - writePinHigh(D6); - writePinHigh(D7); -} - -bool led_update_kb(led_t led_state) { - if(led_update_user(led_state)) { - writePin(D5, !led_state.num_lock); - writePin(D6, !led_state.caps_lock); - writePin(D7, !led_state.scroll_lock); - } - return true; -} diff --git a/keyboards/ashpil/modelm_usbc/readme.md b/keyboards/ashpil/modelm_usbc/readme.md deleted file mode 100644 index 261d97ab49..0000000000 --- a/keyboards/ashpil/modelm_usbc/readme.md +++ /dev/null @@ -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/ashpil/modelm_usbc/rules.mk b/keyboards/ashpil/modelm_usbc/rules.mk deleted file mode 100644 index 6fe874e748..0000000000 --- a/keyboards/ashpil/modelm_usbc/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # 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 diff --git a/keyboards/converter/modelm101/config.h b/keyboards/converter/modelm101/config.h deleted file mode 100644 index 764fb56f64..0000000000 --- a/keyboards/converter/modelm101/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2019 iw0rm3r - -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 . -*/ - -#pragma once - -/* The Model M has no diodes */ -#define MATRIX_HAS_GHOST - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT diff --git a/keyboards/converter/modelm101/info.json b/keyboards/converter/modelm101/info.json deleted file mode 100644 index c59df57e81..0000000000 --- a/keyboards/converter/modelm101/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/converter/modelm101/keymaps/default/keymap.c deleted file mode 100644 index fa8621e2e1..0000000000 --- a/keyboards/converter/modelm101/keymaps/default/keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 iw0rm3r - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), -}; diff --git a/keyboards/converter/modelm101/keymaps/default/readme.md b/keyboards/converter/modelm101/keymaps/default/readme.md deleted file mode 100644 index fb91a8ebe5..0000000000 --- a/keyboards/converter/modelm101/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for modelm101 \ No newline at end of file diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/config.h b/keyboards/converter/modelm101/keymaps/iw0rm3r/config.h deleted file mode 100644 index 779e5a858f..0000000000 --- a/keyboards/converter/modelm101/keymaps/iw0rm3r/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2019 iw0rm3r - * - * 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 . - */ - -#pragma once - -// place overrides here diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c b/keyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c deleted file mode 100644 index f4a1acb0ce..0000000000 --- a/keyboards/converter/modelm101/keymaps/iw0rm3r/keymap.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2019 iw0rm3r - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_CAPS, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_APP, KC_PDOT - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/converter/modelm101/keymaps/iw0rm3r/readme.md b/keyboards/converter/modelm101/keymaps/iw0rm3r/readme.md deleted file mode 100644 index 17b0f40da2..0000000000 --- a/keyboards/converter/modelm101/keymaps/iw0rm3r/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# This is my personal keymap for modelm101 - -Caps Lock is mapped as LGUI (Windows key). -Num Enter is mapped as Caps Lock. -Num0 is mapped as App key (context menu). \ No newline at end of file diff --git a/keyboards/converter/modelm101/modelm101.c b/keyboards/converter/modelm101/modelm101.c deleted file mode 100644 index fa8669dc81..0000000000 --- a/keyboards/converter/modelm101/modelm101.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2019 iw0rm3r - * - * 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 . - */ -#include "quantum.h" - -void led_init_ports(void) { - /* Setting status LEDs pins to output and +5V (off) */ - setPinOutput(B4); - setPinOutput(B5); - setPinOutput(B6); - writePinHigh(B4); - writePinHigh(B5); - writePinHigh(B6); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(B4, !led_state.num_lock); - writePin(B6, !led_state.caps_lock); - writePin(B5, !led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/converter/modelm101/readme.md b/keyboards/converter/modelm101/readme.md deleted file mode 100644 index 5355c80071..0000000000 --- a/keyboards/converter/modelm101/readme.md +++ /dev/null @@ -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/rules.mk b/keyboards/converter/modelm101/rules.mk deleted file mode 100644 index 1eeda920b4..0000000000 --- a/keyboards/converter/modelm101/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # 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 diff --git a/keyboards/converter/modelm101_teensy2/config.h b/keyboards/converter/modelm101_teensy2/config.h deleted file mode 100644 index 764fb56f64..0000000000 --- a/keyboards/converter/modelm101_teensy2/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2019 iw0rm3r - -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 . -*/ - -#pragma once - -/* The Model M has no diodes */ -#define MATRIX_HAS_GHOST - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT diff --git a/keyboards/converter/modelm101_teensy2/info.json b/keyboards/converter/modelm101_teensy2/info.json deleted file mode 100644 index 86dc44de0e..0000000000 --- a/keyboards/converter/modelm101_teensy2/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c deleted file mode 100644 index fa8621e2e1..0000000000 --- a/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 iw0rm3r - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), -}; diff --git a/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md b/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md deleted file mode 100644 index fb91a8ebe5..0000000000 --- a/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for modelm101 \ No newline at end of file diff --git a/keyboards/converter/modelm101_teensy2/readme.md b/keyboards/converter/modelm101_teensy2/readme.md deleted file mode 100644 index d65df72580..0000000000 --- a/keyboards/converter/modelm101_teensy2/readme.md +++ /dev/null @@ -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/modelm101_teensy2/rules.mk b/keyboards/converter/modelm101_teensy2/rules.mk deleted file mode 100644 index 6fe874e748..0000000000 --- a/keyboards/converter/modelm101_teensy2/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # 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 diff --git a/keyboards/converter/modelm_ssk/config.h b/keyboards/converter/modelm_ssk/config.h deleted file mode 100644 index 3b6e758833..0000000000 --- a/keyboards/converter/modelm_ssk/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2019-2021 iw0rm3r, tiltowait - -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 . -*/ - -#pragma once - -/* The Model M does not have NKRO */ -#define MATRIX_HAS_GHOST - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT diff --git a/keyboards/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json deleted file mode 100644 index ff2c6cc217..0000000000 --- a/keyboards/converter/modelm_ssk/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/converter/modelm_ssk/keymaps/default/keymap.c deleted file mode 100644 index 928d745f0d..0000000000 --- a/keyboards/converter/modelm_ssk/keymaps/default/keymap.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2019-2021 iw0rm3r, tiltowait - * - * 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 . - */ -#include QMK_KEYBOARD_H - -enum custom_layers { - _BASE, - _NUMPAD, -}; - -enum custom_keycodes { - NUM_SCRL = SAFE_RANGE -}; - -void toggle_numpad_layer(int set_state); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, NUM_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [_NUMPAD] = LAYOUT( /* Numpad Layer */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ - - switch (keycode) { - case NUM_SCRL: /* Numlock / Scroll Lock */ - if (record->event.pressed) { - if (get_mods() & MOD_MASK_SHIFT) { - /* Remove the shift modifiers */ - uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); - del_mods(MOD_MASK_SHIFT); - - last_num_scroll = KC_NUM_LOCK; - register_code(last_num_scroll); - toggle_numpad_layer(-1); - - /* Reset the shift modifiers */ - set_mods(shift_mods); - } else { - last_num_scroll = KC_SCROLL_LOCK; - register_code(last_num_scroll); - } - } else { - unregister_code(last_num_scroll); - } - break; - } - return true; -} - -void toggle_numpad_layer(int set_state) { - static uint8_t numlock_enabled = 0; - - /* set_state allows us to explicitly change the numlock state - rather than merely toggling it. */ - if (set_state == -1) { - numlock_enabled = !numlock_enabled; - } else { - numlock_enabled = set_state; - } - - if (numlock_enabled) { - layer_on(_NUMPAD); - } - else { - layer_off(_NUMPAD); - } -} - -bool led_update_user(led_t led_state) { - /* In rare and unlikely conditions, it's possible for numlock - state to change externally from the keyboard. If this happens, - we want to match the new state. - - On Windows and Linux, this means that the keyboard will technically - toggle the numpad layer twice. - */ - - static int8_t numlock_state = -1; /* Unknown state at default */ - - if (led_state.num_lock != numlock_state) { - numlock_state = led_state.num_lock; - toggle_numpad_layer(led_state.num_lock); - } - return true; -} - diff --git a/keyboards/converter/modelm_ssk/keymaps/default/readme.md b/keyboards/converter/modelm_ssk/keymaps/default/readme.md deleted file mode 100644 index bc829be266..0000000000 --- a/keyboards/converter/modelm_ssk/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for modelm_ssk diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h b/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h deleted file mode 100644 index 151118fdf6..0000000000 --- a/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 tiltowait - * - * 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 . - */ - -#pragma once - -// place overrides here - -#define PERMISSIVE_HOLD diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c b/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c deleted file mode 100644 index 4836ad329e..0000000000 --- a/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2021 tiltowait - * - * 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 . - */ -#include QMK_KEYBOARD_H - -enum custom_layers { - _BASE, - _SECOND, - _NUMPAD, -}; - -enum custom_keycodes { - NUM_SCRL = SAFE_RANGE /* Dual-purpose Scroll Lock / Numlock button as on original hardware */ -}; - -void toggle_numlock_layer(int set_state); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( /* Base layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_MUTE, KC_F10, KC_VOLD, KC_VOLU, S(G(KC_4)), NUM_SCRL, KC_PAUS, - - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_INS, KC_HOME, KC_PGUP, - LT(_SECOND,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LALT, LGUI_T(KC_ENT), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [_SECOND] = LAYOUT( /* Layer 1 */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(A(KC_MINS)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, C(KC_LEFT), C(KC_RGHT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, S(A(KC_M)), KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, C(KC_SPC), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [_NUMPAD] = LAYOUT( /* Numpad Layer */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ - - switch (keycode) { - case NUM_SCRL: - if (record->event.pressed) { - if (get_mods() & MOD_MASK_SHIFT) { - /* Remove the shift modifiers */ - uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); - set_mods(get_mods() & ~(MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) ); - - last_num_scroll = KC_NUM_LOCK; - register_code(last_num_scroll); - toggle_numlock_layer(-1); - - /* Reset the shift modifiers */ - set_mods(shift_mods); - } else { - last_num_scroll = KC_SCROLL_LOCK; - register_code(last_num_scroll); - } - } else { - unregister_code(last_num_scroll); - } - break; - } - return true; -} - -void toggle_numlock_layer(int set_state) { - static uint8_t numlock_enabled = 0; - - /* set_state allows us to explicitly change the numlock state - rather than merely toggling it. */ - if (set_state == -1) { - numlock_enabled = !numlock_enabled; - } else { - numlock_enabled = set_state; - } - - if (numlock_enabled) { - layer_on(_NUMPAD); - } - else { - layer_off(_NUMPAD); - } -} - -bool led_update_kb(led_t led_state) { - static int8_t numlock_state = -1; - - if (led_state.num_lock != numlock_state) { - numlock_state = led_state.num_lock; - toggle_numlock_layer(led_state.num_lock); - } - return true; -} diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md b/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md deleted file mode 100644 index aecdd89b82..0000000000 --- a/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# The maintainer's personal keymap for modelm_ssk - -This is a keymap suitable for macOS use. - -* Backspace and backslash have been swapped (HHKB style) -* Capslock is LCTRL -* LCTRL is LALT -* LALT is LGUI -* Tab shifts to layer 1 on hold -* Layer 1 has a couple of Mac shortcuts, plus Vim-style arrow keys -* Shift+Numlock enables numlock diff --git a/keyboards/converter/modelm_ssk/readme.md b/keyboards/converter/modelm_ssk/readme.md deleted file mode 100644 index 8105a0c2df..0000000000 --- a/keyboards/converter/modelm_ssk/readme.md +++ /dev/null @@ -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/converter/modelm_ssk/rules.mk b/keyboards/converter/modelm_ssk/rules.mk deleted file mode 100644 index 2904475d7d..0000000000 --- a/keyboards/converter/modelm_ssk/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # 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 diff --git a/keyboards/handwired/ibm122m/config.h b/keyboards/handwired/ibm122m/config.h deleted file mode 100644 index af3de54eb2..0000000000 --- a/keyboards/handwired/ibm122m/config.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2018 REPLACE_WITH_YOUR_NAME - -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 . -*/ - -#pragma once - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -#define AUDIO_PIN_ALT B6 -#define AUDIO_PIN C6 - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT diff --git a/keyboards/handwired/ibm122m/info.json b/keyboards/handwired/ibm122m/info.json deleted file mode 100644 index 8dbdbb9fb5..0000000000 --- a/keyboards/handwired/ibm122m/info.json +++ /dev/null @@ -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/keymaps/andresteare/keymap.c b/keyboards/handwired/ibm122m/keymaps/andresteare/keymap.c deleted file mode 100644 index 6d6d09a0a5..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/andresteare/keymap.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2018 andresteare - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Programmer's Dvorak - [0] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), -}; diff --git a/keyboards/handwired/ibm122m/keymaps/default/config.h b/keyboards/handwired/ibm122m/keymaps/default/config.h deleted file mode 100644 index 0453a72580..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/default/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2018 REPLACE_WITH_YOUR_NAME - * - * 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 . - */ - -#pragma once - -// place overrides below diff --git a/keyboards/handwired/ibm122m/keymaps/default/keymap.c b/keyboards/handwired/ibm122m/keymaps/default/keymap.c deleted file mode 100644 index 5a0754a655..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/default/keymap.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2018 REPLACE_WITH_YOUR_NAME - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Original Layer - [0] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), -}; diff --git a/keyboards/handwired/ibm122m/keymaps/default/readme.md b/keyboards/handwired/ibm122m/keymaps/default/readme.md deleted file mode 100644 index aa592c9739..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/default/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# The default keymap for ibm122m2 -The 10 keys to the left of the alphanumerics are unbound (other than Escape on the top-left one) as I have no idea what is supposed to go there. diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/config.h b/keyboards/handwired/ibm122m/keymaps/lukaus/config.h deleted file mode 100644 index bf338e196d..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/lukaus/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2018 REPLACE_WITH_YOUR_NAME - * - * 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 . - */ - -#pragma once -// place overrides here - diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c b/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c deleted file mode 100644 index 8b99267650..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/lukaus/keymap.c +++ /dev/null @@ -1,558 +0,0 @@ -/* Copyright 2018 REPLACE_WITH_YOUR_NAME - * - * 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 . - */ -#include QMK_KEYBOARD_H - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, - - DVP_ESC, // Grave escape basically i think - DVP_AMPR, - DVP_LBRACKET, - DVP_LCBR, - DVP_RCBR, - DVP_LPRN, - DVP_AT, - DVP_EQUAL, - DVP_ASTERISK, - DVP_RPRN, - DVP_PLUS, - DVP_RBRACKET, - DVP_EXLM, - DVP_HASH, - SHFT_DOT, - SHFT_COMMA -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Programmer's Dvorak - [0] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, TO(1), DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_EQUAL,DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, TO(2), KC_TAB, KC_SCLN, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, DVP_AT, KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, MO(4), - LCTL(KC_F), KC_LALT, KC_LSFT, KC_ESC, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_LEFT, KC_BTN3, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), - - // Qwerty layer + function - [1] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, TO(0), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_NO, KC_LALT,KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), - - // Orirginal Layer - [2] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, TO(1), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, TO(0), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_NO, KC_LALT,KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), - - // Function Layer - [3] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - MU_TOGG,KC_NO, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - MU_NEXT,KC_NO, KC_TAB, KC_NO, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_NO, KC_NO, KC_PGUP, KC_DEL, KC_NO, KC_NO, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_PPLS, - KC_NO, KC_NO, KC_TRNS, KC_NO, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, LSFT(KC_E), LSFT(KC_F), KC_NO, KC_BSPC, - KC_NO, KC_LALT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, LSFT(KC_B), LSFT(KC_C), LSFT(KC_D), KC_PENT, - KC_NO, KC_NO, KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_CAPS, KC_DOWN, LSFT(KC_A), KC_PDOT - ), - - // Literally just the numpad is different - [4] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, TO(1), DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_EQUAL,DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, TO(2), KC_TAB, KC_SCLN, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, DVP_AT, KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, - KC_NO, KC_NO, TO(0), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, KC_BSLS, KC_UP, KC_MS_L, KC_NO, KC_MS_R, KC_TRNS, - LCTL(KC_F), KC_LALT, KC_LSFT, KC_NO, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_LEFT, KC_BTN3, KC_RIGHT, KC_GT, KC_MS_D, KC_GT, KC_PENT, - LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_BTN1, KC_PDOT - - ), - - /* - [4] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - MU_TOGG,TO(0), KC_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - MU_NEXT,KC_NO, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_PPLS, - KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_BSLS, KC_UP, LSFT(KC_E), LSFT(KC_F), KC_NO, KC_BSPC, - KC_NO, KC_LALT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, LSFT(KC_B), LSFT(KC_C), LSFT(KC_D), KC_PENT, - KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, LSFT(KC_A), KC_PDOT - - ),*/ - /*[0] = LAYOUT( - KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_NO,TO(1),KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, - KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, TO(2),KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, - KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, - KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_BSPC,KC_4,KC_4,KC_4, KC_4, - KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, - KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, - KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, - KC_8, KC_SPC,KC_8,KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, TO(1) - - ), - [1] = LAYOUT( - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, TO(0),KC_NO,KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, TO(2),KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_BSPC,KC_Q,KC_R,KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, - KC_A, KC_SPC,KC_C,KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, TO(0) - ), - [2] = LAYOUT( - KC_LCTL, KC_LALT, KC_C, KC_RALT, KC_E, KC_F, KC_G, KC_G, KC_H, KC_J, TO(0), TO(1), KC_M, KC_N, KC_QUOT, KC_DOWN, KC_UP, KC_R, KC_S, KC_ENTER, - KC_PPLS, KC_B, KC_C, KC_D, KC_A, KC_S, KC_D, KC_F, KC_J, KC_J, KC_K, KC_NO, KC_K, KC_L, KC_SCLN, KC_P4, KC_DEL, KC_P5, KC_P6, KC_RIGHT, - KC_PMNS, KC_1, KC_C, KC_D, KC_1, KC_2, KC_3, KC_4, KC_7, KC_J, KC_K, KC_L, KC_8, KC_9, KC_0, KC_NUM, KC_PGUP,KC_PSLS, KC_PAST, KC_T, - KC_A, KC_ESC, TO(0),KC_D, KC_GRV, KC_F, KC_G, KC_5, KC_6, KC_J, KC_K, KC_L, KC_EQL, KC_N, KC_MINUS, KC_BSPC, KC_INS, KC_HOME, KC_S, KC_T, - KC_PPLS, KC_NO, KC_TAB, KC_D, KC_Q, KC_W, KC_E, KC_R, KC_U, KC_J, KC_K, KC_L, KC_I, KC_O, KC_P, KC_P7, KC_PGDN,KC_P8, KC_P9, KC_T, - KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_T, KC_Y, KC_J, KC_K, KC_L, KC_RBRC, KC_N, KC_LBRC, KC_P, KC_END, KC_R, KC_S, KC_T, - KC_LEFT, KC_P1, KC_CAPS, KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_M, KC_J, KC_K, KC_L, KC_COMMA, KC_DOT, KC_BSLS, KC_PENT, KC_Q, KC_P2, KC_P3, KC_T, - KC_LGUI, KC_SPACE, KC_RCTL, KC_LSFT, KC_E, KC_F, KC_G, KC_B, KC_N, KC_J, KC_K, KC_L, KC_M, KC_N, KC_SLSH, KC_P, KC_Q, KC_P0, KC_PDOT, KC_KP_ENTER - ),*/ -}; - -bool left_shift_down = false; -bool right_shift_down = false; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_LEFT_SHIFT: - if (record->event.pressed) - { - left_shift_down = true; - return true; - } - else - { - left_shift_down = false; - return true; - } - break; - case KC_RIGHT_SHIFT: - - if (record->event.pressed) - { - right_shift_down = true; - return true; - } - else - { - right_shift_down = false; - return true; - } - break; - - - case DVP_ESC: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - SEND_STRING("~"); - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("$"); - return false; - } - break; - - case DVP_AMPR: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - SEND_STRING("%"); - - } - } - else - { - if(record->event.pressed) - SEND_STRING("&"); - return false; - } - break; - - case DVP_LBRACKET: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_7); - unregister_code(KC_7); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("["); - return false; - } - break; - - case DVP_LCBR: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_5); - unregister_code(KC_5); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("{"); - return false; - } - break; - - case DVP_RCBR: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_3); - unregister_code(KC_3); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("}"); - return false; - } - break; - - - case DVP_LPRN: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_1); - unregister_code(KC_1); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("("); - return false; - } - break; -// - case DVP_AT: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_LEFT_SHIFT); - register_code(KC_6); - unregister_code(KC_6); - unregister_code(KC_LEFT_SHIFT); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("@"); - return false; - } - break; - - - case DVP_EQUAL: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_9); - unregister_code(KC_9); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("="); - return false; - } - break; - - case DVP_ASTERISK: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_0); - unregister_code(KC_0); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING("*"); - return false; - } - break; - - case DVP_RPRN: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_2); - unregister_code(KC_2); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - return false; - } - else - { - if(record->event.pressed) - SEND_STRING(")"); - return false; - } - break; - - case DVP_PLUS: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_4); - unregister_code(KC_4); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - } - else - { - if(record->event.pressed) - SEND_STRING("+"); - } - return false; - break; - - case DVP_RBRACKET: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_6); - unregister_code(KC_6); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - } - else - { - if(record->event.pressed) - SEND_STRING("]"); - } - return false; - break; - - case DVP_EXLM: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_8); - unregister_code(KC_8); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - } - else - { - if(record->event.pressed) - SEND_STRING("!"); - } - return false; - break; - - case DVP_HASH: - if (left_shift_down || right_shift_down) - { - if(record->event.pressed) - { - if(left_shift_down) - unregister_code(KC_LEFT_SHIFT); - if(right_shift_down) - unregister_code(KC_RIGHT_SHIFT); - - register_code(KC_GRAVE); - unregister_code(KC_GRAVE); - - if(left_shift_down) - register_code(KC_LEFT_SHIFT); - if(right_shift_down) - register_code(KC_RIGHT_SHIFT); - } - } - else - { - if(record->event.pressed) - SEND_STRING("#"); - } - return false; - break; - case SHFT_DOT: - if(record->event.pressed) - SEND_STRING(">"); - break; - - case SHFT_COMMA: - if(record->event.pressed) - SEND_STRING("<"); - break; - - } - - - - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/ibm122m/keymaps/lukaus/readme.md b/keyboards/handwired/ibm122m/keymaps/lukaus/readme.md deleted file mode 100644 index 5d3f6abe15..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/lukaus/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# Lukaus' for ibm122m2 -Programmer's Dvorak as the default layer with a Qwerty layer that can access a function layer. Also includes the default layout, slightly modified diff --git a/keyboards/handwired/ibm122m/keymaps/via/keymap.c b/keyboards/handwired/ibm122m/keymaps/via/keymap.c deleted file mode 100644 index 7f491def14..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/via/keymap.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2018 andresteare - * - * 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 . - */ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // Programmer's Dvorak - [0] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), - - // Qwerty layer + function - [1] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - // Orirginal Layer - [2] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - // Function Layer - [3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - -}; \ No newline at end of file diff --git a/keyboards/handwired/ibm122m/keymaps/via/rules.mk b/keyboards/handwired/ibm122m/keymaps/via/rules.mk deleted file mode 100644 index 1e5b99807c..0000000000 --- a/keyboards/handwired/ibm122m/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes diff --git a/keyboards/handwired/ibm122m/readme.md b/keyboards/handwired/ibm122m/readme.md deleted file mode 100644 index de89d7596e..0000000000 --- a/keyboards/handwired/ibm122m/readme.md +++ /dev/null @@ -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/handwired/ibm122m/rules.mk b/keyboards/handwired/ibm122m/rules.mk deleted file mode 100644 index 3b2469ecc8..0000000000 --- a/keyboards/handwired/ibm122m/rules.mk +++ /dev/null @@ -1,11 +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 = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c b/keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c new file mode 100644 index 0000000000..92b577635c --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/ashpil_usbc.c @@ -0,0 +1,36 @@ +/* Copyright 2019 ashpil + * + * 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 . + */ + +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + /* Setting status LEDs pins to output and +5V (off) */ + setPinOutput(D5); + setPinOutput(D6); + setPinOutput(D7); + writePinHigh(D5); + writePinHigh(D6); + writePinHigh(D7); +} + +bool led_update_kb(led_t led_state) { + if(led_update_user(led_state)) { + writePin(D5, !led_state.num_lock); + writePin(D6, !led_state.caps_lock); + writePin(D7, !led_state.scroll_lock); + } + return true; +} diff --git a/keyboards/ibm/model_m/ashpil_usbc/info.json b/keyboards/ibm/model_m/ashpil_usbc/info.json new file mode 100644 index 0000000000..ffdb608edc --- /dev/null +++ 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/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h new file mode 100644 index 0000000000..59cec33010 --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/config.h @@ -0,0 +1,23 @@ +/* Copyright 2019 ashpil + * + * 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 . + */ + +#pragma once + +// place overrides here + + +/* Add combos */ +#define COMBO_TERM 200 diff --git a/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c new file mode 100644 index 0000000000..e8df1f0c81 --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2019 ashpil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_fullsize_ansi_wkl( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MEDIA_PLAY_PAUSE, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_AUDIO_VOL_DOWN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), +}; + +enum combo_events { + CTRL_PAUS_RESET, +}; + +const uint16_t PROGMEM reset_combo[] = {KC_LCTL, KC_PAUS, COMBO_END}; + +combo_t key_combos[] = { + [CTRL_PAUS_RESET] = COMBO_ACTION(reset_combo), +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case CTRL_PAUS_RESET: + if (pressed) { + reset_keyboard(); + } + break; + } +} diff --git a/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk new file mode 100644 index 0000000000..23b7c173b8 --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/keymaps/ashpil/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes # Reset combo \ No newline at end of file diff --git a/keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c b/keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c new file mode 100644 index 0000000000..d8f80a5c72 --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 ashpil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_fullsize_ansi_wkl( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/ibm/model_m/ashpil_usbc/readme.md b/keyboards/ibm/model_m/ashpil_usbc/readme.md new file mode 100644 index 0000000000..801cb612fd --- /dev/null +++ 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/ibm/model_m/ashpil_usbc/rules.mk b/keyboards/ibm/model_m/ashpil_usbc/rules.mk new file mode 100644 index 0000000000..6fe874e748 --- /dev/null +++ b/keyboards/ibm/model_m/ashpil_usbc/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # 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 diff --git a/keyboards/ibm/model_m/modelm/readme.md b/keyboards/ibm/model_m/modelm/readme.md new file mode 100644 index 0000000000..048b02495a --- /dev/null +++ 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 new file mode 100644 index 0000000000..b1dc81b8c7 --- /dev/null +++ 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 . + */ + +#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 new file mode 100644 index 0000000000..1ba525de6c --- /dev/null +++ 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/ibm/model_m/mschwingen/keymaps/default/keymap.c b/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c new file mode 100644 index 0000000000..8e28b4e449 --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2019 ashpil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum layers { + _BL0, + _BL1, + _FL, + _MS +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL0] = LAYOUT( /* Base layer - Windows key instead of CapsLock, hold ESC for special functions */ + LT(_FL,KC_ESC), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV , KC_1, KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB , KC_Q, KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, KC_P7, KC_P8 , KC_P9 , KC_PPLS, + KC_LWIN, KC_A, KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_P4, KC_P5 , KC_P6 , + KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1, KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [_BL1] = LAYOUT( /* Base layer - standard layout without any special functions */ + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, KC_P7, KC_P8 , KC_P9 , KC_PPLS, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_P4, KC_P5 , KC_P6 , + KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1, KC_P2 , KC_P3 , KC_PENT, + KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [_FL] = LAYOUT( /* special functions layer */ + // F1: dyn. macro 1 play + // F2: dyn. macro 2 play + // F3: dyn. macro 1 record + // F4: dyn. macro 2 record + // F5: dyn. macro record stop + // Capslock: CapsLock (really!) + // ~: Key Lock + // Cursor: Media Pref / Next / Volume Up / Volume Down + // Space: Media Play / Pause + // m: enter mouse layer + _______, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_LOCK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, TG(_MS), _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, + _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______ + ), + + [_MS] = LAYOUT( /* mouse key layer */ + // Cursor: mouse, INS/HOME/PgUp: Mouse Accel, Del, End, PageDn: mouse buttons + TG(_MS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______ + ) +}; + +void keyboard_post_init_user(void) { + // Customise these values to desired behaviour + //debug_enable=true; + //debug_matrix=true; + //debug_keyboard=true; + //debug_mouse=true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed + dprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); + return true; +} diff --git a/keyboards/ibm/model_m/mschwingen/led_ffc/readme.md b/keyboards/ibm/model_m/mschwingen/led_ffc/readme.md new file mode 100644 index 0000000000..722567c18f --- /dev/null +++ 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/ibm/model_m/mschwingen/led_ffc/rules.mk b/keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/led_ffc/rules.mk @@ -0,0 +1 @@ + diff --git a/keyboards/ibm/model_m/mschwingen/led_wired/readme.md b/keyboards/ibm/model_m/mschwingen/led_wired/readme.md new file mode 100644 index 0000000000..073c75c10d --- /dev/null +++ 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/ibm/model_m/mschwingen/led_wired/rules.mk b/keyboards/ibm/model_m/mschwingen/led_wired/rules.mk new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/led_wired/rules.mk @@ -0,0 +1 @@ + diff --git a/keyboards/ibm/model_m/mschwingen/led_ws2812/readme.md b/keyboards/ibm/model_m/mschwingen/led_ws2812/readme.md new file mode 100644 index 0000000000..669f7f37a1 --- /dev/null +++ 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/ibm/model_m/mschwingen/led_ws2812/rules.mk b/keyboards/ibm/model_m/mschwingen/led_ws2812/rules.mk new file mode 100644 index 0000000000..9a69649289 --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/led_ws2812/rules.mk @@ -0,0 +1 @@ +WS2812_DRIVER_REQUIRED = yes diff --git a/keyboards/ibm/model_m/mschwingen/matrix.c b/keyboards/ibm/model_m/mschwingen/matrix.c new file mode 100644 index 0000000000..9997b65975 --- /dev/null +++ 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 . + */ +#include +#include +#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 new file mode 100644 index 0000000000..b764660e21 --- /dev/null +++ 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 . + */ +#include +#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/ibm/model_m/mschwingen/mschwingen.h b/keyboards/ibm/model_m/mschwingen/mschwingen.h new file mode 100644 index 0000000000..d842793ccd --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/mschwingen.h @@ -0,0 +1,22 @@ +/* + * 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 . + */ + +#pragma once + +extern void update_layer_leds(void); + +#include "quantum.h" diff --git a/keyboards/ibm/model_m/mschwingen/post_rules.mk b/keyboards/ibm/model_m/mschwingen/post_rules.mk new file mode 100644 index 0000000000..a1c2040f4c --- /dev/null +++ b/keyboards/ibm/model_m/mschwingen/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(UART_DEBUG)), yes) + OPT_DEFS += -DUART_DEBUG +endif diff --git a/keyboards/ibm/model_m/mschwingen/readme.md b/keyboards/ibm/model_m/mschwingen/readme.md new file mode 100644 index 0000000000..69c5c8b268 --- /dev/null +++ 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 new file mode 100644 index 0000000000..5ccab87d9b --- /dev/null +++ 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/ibm/model_m/teensy2/config.h b/keyboards/ibm/model_m/teensy2/config.h new file mode 100644 index 0000000000..764fb56f64 --- /dev/null +++ b/keyboards/ibm/model_m/teensy2/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2019 iw0rm3r + +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 . +*/ + +#pragma once + +/* The Model M has no diodes */ +#define MATRIX_HAS_GHOST + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/ibm/model_m/teensy2/info.json b/keyboards/ibm/model_m/teensy2/info.json new file mode 100644 index 0000000000..19603adb7a --- /dev/null +++ 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/ibm/model_m/teensy2/keymaps/default/keymap.c b/keyboards/ibm/model_m/teensy2/keymaps/default/keymap.c new file mode 100644 index 0000000000..fa8621e2e1 --- /dev/null +++ b/keyboards/ibm/model_m/teensy2/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 iw0rm3r + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/ibm/model_m/teensy2/keymaps/default/readme.md b/keyboards/ibm/model_m/teensy2/keymaps/default/readme.md new file mode 100644 index 0000000000..fb91a8ebe5 --- /dev/null +++ b/keyboards/ibm/model_m/teensy2/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for modelm101 \ No newline at end of file diff --git a/keyboards/ibm/model_m/teensy2/readme.md b/keyboards/ibm/model_m/teensy2/readme.md new file mode 100644 index 0000000000..20f10d4791 --- /dev/null +++ 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/ibm/model_m/teensy2/rules.mk b/keyboards/ibm/model_m/teensy2/rules.mk new file mode 100644 index 0000000000..6fe874e748 --- /dev/null +++ b/keyboards/ibm/model_m/teensy2/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # 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 diff --git a/keyboards/ibm/model_m/teensypp/config.h b/keyboards/ibm/model_m/teensypp/config.h new file mode 100644 index 0000000000..764fb56f64 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2019 iw0rm3r + +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 . +*/ + +#pragma once + +/* The Model M has no diodes */ +#define MATRIX_HAS_GHOST + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/ibm/model_m/teensypp/info.json b/keyboards/ibm/model_m/teensypp/info.json new file mode 100644 index 0000000000..dcbed72aeb --- /dev/null +++ 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/ibm/model_m/teensypp/keymaps/default/keymap.c b/keyboards/ibm/model_m/teensypp/keymaps/default/keymap.c new file mode 100644 index 0000000000..fa8621e2e1 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 iw0rm3r + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/ibm/model_m/teensypp/keymaps/default/readme.md b/keyboards/ibm/model_m/teensypp/keymaps/default/readme.md new file mode 100644 index 0000000000..fb91a8ebe5 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for modelm101 \ No newline at end of file diff --git a/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h new file mode 100644 index 0000000000..779e5a858f --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h @@ -0,0 +1,19 @@ +/* Copyright 2019 iw0rm3r + * + * 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 . + */ + +#pragma once + +// place overrides here diff --git a/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c new file mode 100644 index 0000000000..f4a1acb0ce --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2019 iw0rm3r + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_CAPS, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_APP, KC_PDOT + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md new file mode 100644 index 0000000000..17b0f40da2 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/readme.md @@ -0,0 +1,5 @@ +# This is my personal keymap for modelm101 + +Caps Lock is mapped as LGUI (Windows key). +Num Enter is mapped as Caps Lock. +Num0 is mapped as App key (context menu). \ No newline at end of file diff --git a/keyboards/ibm/model_m/teensypp/readme.md b/keyboards/ibm/model_m/teensypp/readme.md new file mode 100644 index 0000000000..e05d68b81c --- /dev/null +++ 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/ibm/model_m/teensypp/rules.mk b/keyboards/ibm/model_m/teensypp/rules.mk new file mode 100644 index 0000000000..1eeda920b4 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # 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 diff --git a/keyboards/ibm/model_m/teensypp/teensypp.c b/keyboards/ibm/model_m/teensypp/teensypp.c new file mode 100644 index 0000000000..fa8669dc81 --- /dev/null +++ b/keyboards/ibm/model_m/teensypp/teensypp.c @@ -0,0 +1,36 @@ +/* Copyright 2019 iw0rm3r + * + * 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 . + */ +#include "quantum.h" + +void led_init_ports(void) { + /* Setting status LEDs pins to output and +5V (off) */ + setPinOutput(B4); + setPinOutput(B5); + setPinOutput(B6); + writePinHigh(B4); + writePinHigh(B5); + writePinHigh(B6); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + writePin(B4, !led_state.num_lock); + writePin(B6, !led_state.caps_lock); + writePin(B5, !led_state.scroll_lock); + } + return res; +} diff --git a/keyboards/ibm/model_m/yugo_m/config.h b/keyboards/ibm/model_m/yugo_m/config.h new file mode 100644 index 0000000000..2b7fc4d157 --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2020 Nidzo Tomic +Copyright 2022 an_achronism <87213873+an-achronism@users.noreply.github.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 . +*/ + +#pragma once + +/* define if matrix has ghost */ +#define MATRIX_HAS_GHOST + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* redefine available (emulated) EEPROM as 4 kB rather than the default 2 kB to let VIA use more of the on-chip Flash of the STM32F303 to store 4 layers (since 4 layers * 8 rows * 16 columns * 2 = 1024 bytes but the default max available is 1023 bytes due to ATMEGA32U4 etc. only having 1 kB of EEPROM) */ +#define WEAR_LEVELING_BACKING_SIZE 4096 +#define WEAR_LEVELING_LOGICAL_SIZE 2048 diff --git a/keyboards/ibm/model_m/yugo_m/info.json b/keyboards/ibm/model_m/yugo_m/info.json new file mode 100644 index 0000000000..6e3a0b39c6 --- /dev/null +++ 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/ibm/model_m/yugo_m/keymaps/default/keymap.c b/keyboards/ibm/model_m/yugo_m/keymaps/default/keymap.c new file mode 100644 index 0000000000..2759790e4f --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2020 Nidzo Tomic + * Copyright 2022 an_achronism <87213873+an-achronism@users.noreply.github.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 . + */ +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL, // Base Layer +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-------------------------------------------------------------------------------------------------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PSc|ScL|Pse| | + * | | + * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |¥ |BSp| |Ins|Hom|PgU| |Num|/ |* |- | + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ | |Del|End|PgD| |7 |8 |9 |+ | + * |-----------------------------------------------------------| |---------------| + * |CapsLk|A |S |D |F |G |H |J |K |L |; |' |# |Ent | |4 |5 |6 |= | + * |-----------------------------------------------------------| |---------------| + * |Shift|\ |Z |X |C |V |B |N |M |, |. |/ |\ |Shift| |Up | |1 |2 |3 |Ent| + * |-----------------------------------------------------------| |---| |---------------| + * |Ctrl | |Alt | Space |Alt Gr| |Ctrl | |Lt |Dn |Rt | |0 |, |. |GUI| + * `-------------------------------------------------------------------------------------------------' + */ + [_BL] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_INT6, KC_PDOT, KC_LGUI), +}; diff --git a/keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md b/keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md new file mode 100644 index 0000000000..3d983cc1e7 --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for IBM/Lexmark/Unicomp Enhanced Keyboards (a.k.a. "Keyboard M", "Model M") with arrays comprising between 101 and 108 keys (unused keys can simply be ignored as they will be physically blocked by keycap stabiliser posts). As of February 2022, ANSI, ISO, and JIS key positions are all supported and mapped to the appropriate default functions. diff --git a/keyboards/ibm/model_m/yugo_m/readme.md b/keyboards/ibm/model_m/yugo_m/readme.md new file mode 100644 index 0000000000..87ca8354fb --- /dev/null +++ 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/ibm/model_m/yugo_m/rules.mk b/keyboards/ibm/model_m/yugo_m/rules.mk new file mode 100644 index 0000000000..ab2c49da70 --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # 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 diff --git a/keyboards/ibm/model_m/yugo_m/yugo_m.c b/keyboards/ibm/model_m/yugo_m/yugo_m.c new file mode 100644 index 0000000000..542043d5dc --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/yugo_m.c @@ -0,0 +1,35 @@ +/* Copyright 2020 Nidzo Tomic + * + * 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 . + */ +#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/ibm/model_m_122/ibm122m/config.h b/keyboards/ibm/model_m_122/ibm122m/config.h new file mode 100644 index 0000000000..af3de54eb2 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2018 REPLACE_WITH_YOUR_NAME + +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 . +*/ + +#pragma once + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define AUDIO_PIN_ALT B6 +#define AUDIO_PIN C6 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/ibm/model_m_122/ibm122m/info.json b/keyboards/ibm/model_m_122/ibm122m/info.json new file mode 100644 index 0000000000..54b0e9bade --- /dev/null +++ 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/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c new file mode 100644 index 0000000000..6d6d09a0a5 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/andresteare/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2018 andresteare + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Programmer's Dvorak + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h new file mode 100644 index 0000000000..0453a72580 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * 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 . + */ + +#pragma once + +// place overrides below diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c new file mode 100644 index 0000000000..5a0754a655 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Original Layer + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md new file mode 100644 index 0000000000..aa592c9739 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The default keymap for ibm122m2 +The 10 keys to the left of the alphanumerics are unbound (other than Escape on the top-left one) as I have no idea what is supposed to go there. diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h new file mode 100644 index 0000000000..bf338e196d --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h @@ -0,0 +1,19 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * 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 . + */ + +#pragma once +// place overrides here + diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c new file mode 100644 index 0000000000..8b99267650 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/keymap.c @@ -0,0 +1,558 @@ +/* Copyright 2018 REPLACE_WITH_YOUR_NAME + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, + + DVP_ESC, // Grave escape basically i think + DVP_AMPR, + DVP_LBRACKET, + DVP_LCBR, + DVP_RCBR, + DVP_LPRN, + DVP_AT, + DVP_EQUAL, + DVP_ASTERISK, + DVP_RPRN, + DVP_PLUS, + DVP_RBRACKET, + DVP_EXLM, + DVP_HASH, + SHFT_DOT, + SHFT_COMMA +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Programmer's Dvorak + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, TO(1), DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_EQUAL,DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, TO(2), KC_TAB, KC_SCLN, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, DVP_AT, KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, MO(4), + LCTL(KC_F), KC_LALT, KC_LSFT, KC_ESC, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_LEFT, KC_BTN3, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // Qwerty layer + function + [1] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, TO(0), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_NO, KC_LALT,KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // Orirginal Layer + [2] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, TO(1), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, TO(0), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_NO, KC_LALT,KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // Function Layer + [3] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + MU_TOGG,KC_NO, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + MU_NEXT,KC_NO, KC_TAB, KC_NO, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_NO, KC_NO, KC_PGUP, KC_DEL, KC_NO, KC_NO, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_PPLS, + KC_NO, KC_NO, KC_TRNS, KC_NO, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, LSFT(KC_E), LSFT(KC_F), KC_NO, KC_BSPC, + KC_NO, KC_LALT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, LSFT(KC_B), LSFT(KC_C), LSFT(KC_D), KC_PENT, + KC_NO, KC_NO, KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_CAPS, KC_DOWN, LSFT(KC_A), KC_PDOT + ), + + // Literally just the numpad is different + [4] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, TO(1), DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_EQUAL,DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, TO(2), KC_TAB, KC_SCLN, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, DVP_AT, KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, + KC_NO, KC_NO, TO(0), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, KC_BSLS, KC_UP, KC_MS_L, KC_NO, KC_MS_R, KC_TRNS, + LCTL(KC_F), KC_LALT, KC_LSFT, KC_NO, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_LEFT, KC_BTN3, KC_RIGHT, KC_GT, KC_MS_D, KC_GT, KC_PENT, + LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_BTN1, KC_PDOT + + ), + + /* + [4] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + MU_TOGG,TO(0), KC_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + MU_NEXT,KC_NO, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_RBRC,KC_ENTER, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_PPLS, + KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_BSLS, KC_UP, LSFT(KC_E), LSFT(KC_F), KC_NO, KC_BSPC, + KC_NO, KC_LALT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_WH_D, KC_RIGHT, LSFT(KC_B), LSFT(KC_C), LSFT(KC_D), KC_PENT, + KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, LSFT(KC_A), KC_PDOT + + ),*/ + /*[0] = LAYOUT( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_NO,TO(1),KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, + KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, TO(2),KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, KC_2, + KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, KC_3, + KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_4, KC_BSPC,KC_4,KC_4,KC_4, KC_4, + KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, KC_5, + KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, KC_6, + KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, KC_7, + KC_8, KC_SPC,KC_8,KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, KC_8, TO(1) + + ), + [1] = LAYOUT( + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, TO(0),KC_NO,KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, TO(2),KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_BSPC,KC_Q,KC_R,KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, KC_T, + KC_A, KC_SPC,KC_C,KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, KC_P, KC_Q, KC_R, KC_S, TO(0) + ), + [2] = LAYOUT( + KC_LCTL, KC_LALT, KC_C, KC_RALT, KC_E, KC_F, KC_G, KC_G, KC_H, KC_J, TO(0), TO(1), KC_M, KC_N, KC_QUOT, KC_DOWN, KC_UP, KC_R, KC_S, KC_ENTER, + KC_PPLS, KC_B, KC_C, KC_D, KC_A, KC_S, KC_D, KC_F, KC_J, KC_J, KC_K, KC_NO, KC_K, KC_L, KC_SCLN, KC_P4, KC_DEL, KC_P5, KC_P6, KC_RIGHT, + KC_PMNS, KC_1, KC_C, KC_D, KC_1, KC_2, KC_3, KC_4, KC_7, KC_J, KC_K, KC_L, KC_8, KC_9, KC_0, KC_NUM, KC_PGUP,KC_PSLS, KC_PAST, KC_T, + KC_A, KC_ESC, TO(0),KC_D, KC_GRV, KC_F, KC_G, KC_5, KC_6, KC_J, KC_K, KC_L, KC_EQL, KC_N, KC_MINUS, KC_BSPC, KC_INS, KC_HOME, KC_S, KC_T, + KC_PPLS, KC_NO, KC_TAB, KC_D, KC_Q, KC_W, KC_E, KC_R, KC_U, KC_J, KC_K, KC_L, KC_I, KC_O, KC_P, KC_P7, KC_PGDN,KC_P8, KC_P9, KC_T, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_T, KC_Y, KC_J, KC_K, KC_L, KC_RBRC, KC_N, KC_LBRC, KC_P, KC_END, KC_R, KC_S, KC_T, + KC_LEFT, KC_P1, KC_CAPS, KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_M, KC_J, KC_K, KC_L, KC_COMMA, KC_DOT, KC_BSLS, KC_PENT, KC_Q, KC_P2, KC_P3, KC_T, + KC_LGUI, KC_SPACE, KC_RCTL, KC_LSFT, KC_E, KC_F, KC_G, KC_B, KC_N, KC_J, KC_K, KC_L, KC_M, KC_N, KC_SLSH, KC_P, KC_Q, KC_P0, KC_PDOT, KC_KP_ENTER + ),*/ +}; + +bool left_shift_down = false; +bool right_shift_down = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LEFT_SHIFT: + if (record->event.pressed) + { + left_shift_down = true; + return true; + } + else + { + left_shift_down = false; + return true; + } + break; + case KC_RIGHT_SHIFT: + + if (record->event.pressed) + { + right_shift_down = true; + return true; + } + else + { + right_shift_down = false; + return true; + } + break; + + + case DVP_ESC: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + SEND_STRING("~"); + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("$"); + return false; + } + break; + + case DVP_AMPR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + SEND_STRING("%"); + + } + } + else + { + if(record->event.pressed) + SEND_STRING("&"); + return false; + } + break; + + case DVP_LBRACKET: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_7); + unregister_code(KC_7); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("["); + return false; + } + break; + + case DVP_LCBR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_5); + unregister_code(KC_5); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("{"); + return false; + } + break; + + case DVP_RCBR: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_3); + unregister_code(KC_3); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("}"); + return false; + } + break; + + + case DVP_LPRN: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_1); + unregister_code(KC_1); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("("); + return false; + } + break; +// + case DVP_AT: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_LEFT_SHIFT); + register_code(KC_6); + unregister_code(KC_6); + unregister_code(KC_LEFT_SHIFT); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("@"); + return false; + } + break; + + + case DVP_EQUAL: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_9); + unregister_code(KC_9); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("="); + return false; + } + break; + + case DVP_ASTERISK: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_0); + unregister_code(KC_0); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING("*"); + return false; + } + break; + + case DVP_RPRN: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_2); + unregister_code(KC_2); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + return false; + } + else + { + if(record->event.pressed) + SEND_STRING(")"); + return false; + } + break; + + case DVP_PLUS: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_4); + unregister_code(KC_4); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("+"); + } + return false; + break; + + case DVP_RBRACKET: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_6); + unregister_code(KC_6); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("]"); + } + return false; + break; + + case DVP_EXLM: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_8); + unregister_code(KC_8); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("!"); + } + return false; + break; + + case DVP_HASH: + if (left_shift_down || right_shift_down) + { + if(record->event.pressed) + { + if(left_shift_down) + unregister_code(KC_LEFT_SHIFT); + if(right_shift_down) + unregister_code(KC_RIGHT_SHIFT); + + register_code(KC_GRAVE); + unregister_code(KC_GRAVE); + + if(left_shift_down) + register_code(KC_LEFT_SHIFT); + if(right_shift_down) + register_code(KC_RIGHT_SHIFT); + } + } + else + { + if(record->event.pressed) + SEND_STRING("#"); + } + return false; + break; + case SHFT_DOT: + if(record->event.pressed) + SEND_STRING(">"); + break; + + case SHFT_COMMA: + if(record->event.pressed) + SEND_STRING("<"); + break; + + } + + + + return true; +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md new file mode 100644 index 0000000000..5d3f6abe15 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/readme.md @@ -0,0 +1,2 @@ +# Lukaus' for ibm122m2 +Programmer's Dvorak as the default layer with a Qwerty layer that can access a function layer. Also includes the default layout, slightly modified diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c new file mode 100644 index 0000000000..7f491def14 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2018 andresteare + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Programmer's Dvorak + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_ESC, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_NO, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // Qwerty layer + function + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Orirginal Layer + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Function Layer + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ibm/model_m_122/ibm122m/readme.md b/keyboards/ibm/model_m_122/ibm122m/readme.md new file mode 100644 index 0000000000..87b145cd5b --- /dev/null +++ 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/ibm/model_m_122/ibm122m/rules.mk b/keyboards/ibm/model_m_122/ibm122m/rules.mk new file mode 100644 index 0000000000..3b2469ecc8 --- /dev/null +++ b/keyboards/ibm/model_m_122/ibm122m/rules.mk @@ -0,0 +1,11 @@ +# 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 = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/ibm/model_m_122/m122_3270/blackpill/info.json b/keyboards/ibm/model_m_122/m122_3270/blackpill/info.json new file mode 100644 index 0000000000..b17554b7e0 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/blackpill/info.json @@ -0,0 +1,13 @@ +{ + "usb": { + "device_version": "0.0.2" + }, + "matrix_pins": { + "cols": ["B0", "B1", "B10", "B12", "B13", "B14", "B15", "A8", "A7", "A10", "A6", "A5", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9"], + "rows": ["C13", "C14", "C15", "A0", "A1", "A2", "A3", "A4"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F411", + "bootloader": "stm32-dfu", + "board": "BLACKPILL_STM32_F411" +} diff --git a/keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md b/keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md new file mode 100644 index 0000000000..1e47a447a3 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/blackpill/readme.md @@ -0,0 +1,3 @@ +# BlackPill controller for m122-3270 + +This directory contains the BlackPill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk b/keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk new file mode 100644 index 0000000000..0a85fffb85 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/blackpill/rules.mk @@ -0,0 +1,12 @@ +# 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 = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ibm/model_m_122/m122_3270/bluepill/info.json b/keyboards/ibm/model_m_122/m122_3270/bluepill/info.json new file mode 100644 index 0000000000..e2f18d06e4 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/bluepill/info.json @@ -0,0 +1,12 @@ +{ + "usb": { + "device_version": "0.0.3" + }, + "matrix_pins": { + "cols": ["B1", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "B0", "A10", "A7", "A6", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9"], + "rows": ["C13", "C14", "C15", "A1", "A2", "A3", "A4", "A5"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F103", + "bootloader": "stm32duino" +} diff --git a/keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md b/keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md new file mode 100644 index 0000000000..a8d92432d4 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/bluepill/readme.md @@ -0,0 +1,2 @@ +# BluePill controller for m122-3270 +This directory contains the BluePill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/ibm/model_m_122/m122_3270/bluepill/rules.mk b/keyboards/ibm/model_m_122/m122_3270/bluepill/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/ibm/model_m_122/m122_3270/info.json b/keyboards/ibm/model_m_122/m122_3270/info.json new file mode 100644 index 0000000000..9b7a78c7f7 --- /dev/null +++ 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/ibm/model_m_122/m122_3270/keymaps/default/keymap.c b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/keymap.c new file mode 100644 index 0000000000..4ade8fe6ee --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/keymap.c @@ -0,0 +1,214 @@ +/* Copyright 2021 James R. Maynard III + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + JM_DOT = SAFE_RANGE, // . both shifted and unshifted + JM_COMM, // , both shifted and unshifted + JM_GRLS, // < and > on one key + JM_CBRC, // { and } on one key + JM_CENT, // cent sign and ! on one key + JM_DPA1, // DUP/PA1, + JM_FPA2, // FldMk/PA2, + JM_JUMP, // JUMP/PA3, + JM_DEL, // Delete + JM_NSLC // NumLock/ScrollLock on one key +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // PC/3270 layout: PC legends (blue) + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + + KC_NO, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_PGUP, KC_PGDN, KC_ESC, JM_NSLC, KC_PAST, KC_PSLS, + KC_NO, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, KC_INS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, + KC_PSCR, KC_NO, KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(2), KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // PC/3270 layout: 3270 legends (black), with x3270 keycodes + [1] = LAYOUT( + A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), A(KC_F5), A(KC_F6), A(KC_F7), A(KC_F8), A(KC_F9), A(KC_F10), A(KC_F11), A(KC_F12), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + + A(KC_A), A(KC_C), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, JM_DPA1, JM_FPA2, JM_JUMP, KC_ESC, JM_NSLC, KC_PCMM, KC_SPC, + KC_CRSEL, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JM_CENT, KC_BSLS, S(KC_ENT), S(KC_TAB), KC_INS, JM_DEL, KC_P7, KC_P8, KC_P9, KC_TAB, + KC_EXSEL, A(KC_E), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, JM_CBRC, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, + A(KC_B), C(KC_C), KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JM_COMM, JM_DOT, KC_SLSH, KC_RSFT, KC_LEFT, A(KC_H), KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(2), KC_LGUI, A(KC_R), KC_LALT, KC_SPC, KC_RALT, KC_ENT, KC_DOWN, KC_P0, KC_PDOT + ), + + // Function layer, accessed by the Zoom key + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + DF(0), DF(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______ + ), + + // Firmware layer, accessed by the Zoom/Space key pair (hold both down) + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +bool left_shift_down = false; +bool right_shift_down = false; +bool left_alt_down = false; +bool right_alt_down = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LSFT: + left_shift_down = record->event.pressed; + break; + case KC_RSFT: + right_shift_down = record->event.pressed; + break; + case KC_LALT: + left_alt_down = record->event.pressed; + break; + case KC_RALT: + right_alt_down = record->event.pressed; + break; + case JM_GRLS: + if (left_shift_down || right_shift_down) { + if(record->event.pressed) { + SEND_STRING(">"); + } + } else { + if(record->event.pressed) { + SEND_STRING("<"); + } + } + return false; + case JM_CBRC: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + SEND_STRING("}"); + } + } else { + if(record->event.pressed) { + SEND_STRING("{"); + } + } + return false; + case JM_CENT: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + SEND_STRING("!"); + } + } else { // This assumes that the Linux Compose has been set to Scroll Lock + if (record->event.pressed) { + tap_code16(KC_SCRL); + SEND_STRING("c/"); + } + } + return false; + case JM_COMM: + if (record->event.pressed){ + SEND_STRING(","); + } + return false; + case JM_DOT: + if (record->event.pressed) { + SEND_STRING("."); + } + return false; + case JM_DPA1: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + tap_code16(C(KC_D)); + } + return false; + } else { + if(record->event.pressed) { + tap_code16(A(KC_1)); + } + return false; + } + break; + case JM_FPA2: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + tap_code16(C(KC_F)); + } + return false; + } else { + if(record->event.pressed) { + tap_code16(A(KC_2)); + } + return false; + } + break; + case JM_JUMP: + if (record->event.pressed) { + if (left_alt_down || right_alt_down) { + SEND_STRING("3"); + } + } + return false; + case JM_DEL: + if (record->event.pressed) { + if (left_alt_down || right_alt_down) { + unregister_code(KC_LALT); + unregister_code(KC_RALT); + tap_code16(C(KC_W)); + if (left_alt_down) { + register_code(KC_LALT); + } + if (right_alt_down) { + register_code(KC_RALT); + } + } else { + tap_code16(KC_DEL); + } + } + return false; + case JM_NSLC: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + register_code(KC_NUM_LOCK); + } + else { + unregister_code(KC_NUM_LOCK); + } + } else { + if (record->event.pressed) { + register_code(KC_SCRL); + } + else { + unregister_code(KC_SCRL); + } + } + return false; + } + + return true; +} diff --git a/keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md new file mode 100644 index 0000000000..cab833dd30 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/keymaps/default/readme.md @@ -0,0 +1,35 @@ +# Default keymap for m122-3270 + +This keymap is intended to make the PC/3270 122-key IBM keyboard work as closely as possible to the standard +PC/3270 keyboard's (part number 1397000) original mapping. Two layers are defined: layer 0 is the PC layout, +using the blue legends on the PC/3270 keys (as shipped by Unicomp; I don't have the original keycaps, and I +know there are a few differences), while layer 1 is the 3270 layout, with keycodes selected to make the `x3270` +suite do the right thing with each key as pressed. The idea here is, eventually, to get `x3270` to +automatically shift the keyboard to layer 1 when it gains focus. + +When layer 0 is active, the upper left key of the 10-key pad is Escape, the Reset and Enter keys are Control, and +the comma and dot keys act like normal PC keys (< and >, repectively, when shifted). The Ctrl key (bottom right +of the left-side 10-key cluster) is always the left GUI key. PA2 and Jump/PA3 are PgUp and PgDn, respectively, +and the backtab key is End. The Rule/Home key is Home. The key next to the Escape key is Scroll Lock when unshifted, +and Num Lock when shifted. + +When layer 1 is active, the keys do their labeled functions. The only keys that don't do anything are CrSel, +ExSel, and Jump, though only a few of the alternate functions (on the front of the keys) work: left/right/delete +word and PA3. The rest aren't emulated by x3270. Many of the keys that have function in PC mode will *not* have +that same function in 3270 mode, since x3270 uses different keystrokes to accomplish the same function. + +To manually switch to layer 1, hold the Zoom key (the one on the far lower left of the keyboard) and press Clear +(the one at the top right of that same block of 10 keys); to switch back to layer 0, hold the Zoom key and hit +Attn (the one at the top left of that block of 10). Holding the Zoom key and the spacebar gets you to keys that +control QMK itself: Zoom-space-R resets to the bootloader, Zoom-space-E erases the EEPROM (which currently does +nothing), and Zoom-space-D turns the debugger on and off. + +Note that you need to set your Linux system to use the Scroll Lock key as the Compose key in order to get the +cent sign to register as intended, and add the following lines to a file in your home directory named `.x3270pro` +to make Dup and Field Mark work: +``` +x3270.keymap.m122: #override \ + CtrlF: FieldMark()\n\ + CtrlD: Dup() +``` +You need to then invoke `x3270` with the parameter `-keymap m122` to activate those definitions. diff --git a/keyboards/ibm/model_m_122/m122_3270/readme.md b/keyboards/ibm/model_m_122/m122_3270/readme.md new file mode 100644 index 0000000000..14b8684897 --- /dev/null +++ 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/ibm/model_m_122/m122_3270/teensy/info.json b/keyboards/ibm/model_m_122/m122_3270/teensy/info.json new file mode 100644 index 0000000000..7596f5fc15 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/teensy/info.json @@ -0,0 +1,12 @@ +{ + "usb": { + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["B5", "B6", "B7", "D0", "D1", "D2", "D3", "D4", "D5", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"], + "rows": ["F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7"] + }, + "diode_direction": "ROW2COL", + "processor": "at90usb1286", + "bootloader": "halfkay" +} diff --git a/keyboards/ibm/model_m_122/m122_3270/teensy/readme.md b/keyboards/ibm/model_m_122/m122_3270/teensy/readme.md new file mode 100644 index 0000000000..43357ea610 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/teensy/readme.md @@ -0,0 +1,3 @@ +# Teensy controller for m122-3270 + +This directory contains the Teensy++ 2.0-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk b/keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk new file mode 100644 index 0000000000..0a85fffb85 --- /dev/null +++ b/keyboards/ibm/model_m_122/m122_3270/teensy/rules.mk @@ -0,0 +1,12 @@ +# 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 = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ibm/model_m_122/readme.md b/keyboards/ibm/model_m_122/readme.md new file mode 100644 index 0000000000..0f11f3cf99 --- /dev/null +++ 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 new file mode 100644 index 0000000000..aa9ee490c4 --- /dev/null +++ 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/ibm/model_m_ssk/teensypp_ssk/config.h b/keyboards/ibm/model_m_ssk/teensypp_ssk/config.h new file mode 100644 index 0000000000..3b6e758833 --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2019-2021 iw0rm3r, tiltowait + +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 . +*/ + +#pragma once + +/* The Model M does not have NKRO */ +#define MATRIX_HAS_GHOST + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/info.json b/keyboards/ibm/model_m_ssk/teensypp_ssk/info.json new file mode 100644 index 0000000000..fbc3076c47 --- /dev/null +++ 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/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c new file mode 100644 index 0000000000..928d745f0d --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/keymap.c @@ -0,0 +1,114 @@ +/* Copyright 2019-2021 iw0rm3r, tiltowait + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _NUMPAD, +}; + +enum custom_keycodes { + NUM_SCRL = SAFE_RANGE +}; + +void toggle_numpad_layer(int set_state); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, NUM_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_NUMPAD] = LAYOUT( /* Numpad Layer */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ + + switch (keycode) { + case NUM_SCRL: /* Numlock / Scroll Lock */ + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + /* Remove the shift modifiers */ + uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + del_mods(MOD_MASK_SHIFT); + + last_num_scroll = KC_NUM_LOCK; + register_code(last_num_scroll); + toggle_numpad_layer(-1); + + /* Reset the shift modifiers */ + set_mods(shift_mods); + } else { + last_num_scroll = KC_SCROLL_LOCK; + register_code(last_num_scroll); + } + } else { + unregister_code(last_num_scroll); + } + break; + } + return true; +} + +void toggle_numpad_layer(int set_state) { + static uint8_t numlock_enabled = 0; + + /* set_state allows us to explicitly change the numlock state + rather than merely toggling it. */ + if (set_state == -1) { + numlock_enabled = !numlock_enabled; + } else { + numlock_enabled = set_state; + } + + if (numlock_enabled) { + layer_on(_NUMPAD); + } + else { + layer_off(_NUMPAD); + } +} + +bool led_update_user(led_t led_state) { + /* In rare and unlikely conditions, it's possible for numlock + state to change externally from the keyboard. If this happens, + we want to match the new state. + + On Windows and Linux, this means that the keyboard will technically + toggle the numpad layer twice. + */ + + static int8_t numlock_state = -1; /* Unknown state at default */ + + if (led_state.num_lock != numlock_state) { + numlock_state = led_state.num_lock; + toggle_numpad_layer(led_state.num_lock); + } + return true; +} + diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md new file mode 100644 index 0000000000..bc829be266 --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for modelm_ssk diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h new file mode 100644 index 0000000000..151118fdf6 --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 tiltowait + * + * 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 . + */ + +#pragma once + +// place overrides here + +#define PERMISSIVE_HOLD diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c new file mode 100644 index 0000000000..4836ad329e --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/keymap.c @@ -0,0 +1,116 @@ +/* Copyright 2021 tiltowait + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _SECOND, + _NUMPAD, +}; + +enum custom_keycodes { + NUM_SCRL = SAFE_RANGE /* Dual-purpose Scroll Lock / Numlock button as on original hardware */ +}; + +void toggle_numlock_layer(int set_state); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_MUTE, KC_F10, KC_VOLD, KC_VOLU, S(G(KC_4)), NUM_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_INS, KC_HOME, KC_PGUP, + LT(_SECOND,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LALT, LGUI_T(KC_ENT), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_SECOND] = LAYOUT( /* Layer 1 */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(A(KC_MINS)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, C(KC_LEFT), C(KC_RGHT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, S(A(KC_M)), KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, C(KC_SPC), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_NUMPAD] = LAYOUT( /* Numpad Layer */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ + + switch (keycode) { + case NUM_SCRL: + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + /* Remove the shift modifiers */ + uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + set_mods(get_mods() & ~(MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) ); + + last_num_scroll = KC_NUM_LOCK; + register_code(last_num_scroll); + toggle_numlock_layer(-1); + + /* Reset the shift modifiers */ + set_mods(shift_mods); + } else { + last_num_scroll = KC_SCROLL_LOCK; + register_code(last_num_scroll); + } + } else { + unregister_code(last_num_scroll); + } + break; + } + return true; +} + +void toggle_numlock_layer(int set_state) { + static uint8_t numlock_enabled = 0; + + /* set_state allows us to explicitly change the numlock state + rather than merely toggling it. */ + if (set_state == -1) { + numlock_enabled = !numlock_enabled; + } else { + numlock_enabled = set_state; + } + + if (numlock_enabled) { + layer_on(_NUMPAD); + } + else { + layer_off(_NUMPAD); + } +} + +bool led_update_kb(led_t led_state) { + static int8_t numlock_state = -1; + + if (led_state.num_lock != numlock_state) { + numlock_state = led_state.num_lock; + toggle_numlock_layer(led_state.num_lock); + } + return true; +} diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md new file mode 100644 index 0000000000..aecdd89b82 --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keymaps/tiltowait/readme.md @@ -0,0 +1,11 @@ +# The maintainer's personal keymap for modelm_ssk + +This is a keymap suitable for macOS use. + +* Backspace and backslash have been swapped (HHKB style) +* Capslock is LCTRL +* LCTRL is LALT +* LALT is LGUI +* Tab shifts to layer 1 on hold +* Layer 1 has a couple of Mac shortcuts, plus Vim-style arrow keys +* Shift+Numlock enables numlock diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md b/keyboards/ibm/model_m_ssk/teensypp_ssk/readme.md new file mode 100644 index 0000000000..14c0e93dbd --- /dev/null +++ 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/ibm/model_m_ssk/teensypp_ssk/rules.mk b/keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk new file mode 100644 index 0000000000..2904475d7d --- /dev/null +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # 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 diff --git a/keyboards/mschwingen/modelm/config.h b/keyboards/mschwingen/modelm/config.h deleted file mode 100644 index c828bd36ff..0000000000 --- a/keyboards/mschwingen/modelm/config.h +++ /dev/null @@ -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 . - */ - -#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 deleted file mode 100644 index 8005f5e7f7..0000000000 --- a/keyboards/mschwingen/modelm/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/mschwingen/modelm/keymaps/default/keymap.c deleted file mode 100644 index 8e28b4e449..0000000000 --- a/keyboards/mschwingen/modelm/keymaps/default/keymap.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright 2019 ashpil - * - * 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 . - */ -#include QMK_KEYBOARD_H - -enum layers { - _BL0, - _BL1, - _FL, - _MS -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BL0] = LAYOUT( /* Base layer - Windows key instead of CapsLock, hold ESC for special functions */ - LT(_FL,KC_ESC), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV , KC_1, KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB , KC_Q, KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, KC_P7, KC_P8 , KC_P9 , KC_PPLS, - KC_LWIN, KC_A, KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_P4, KC_P5 , KC_P6 , - KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1, KC_P2 , KC_P3 , KC_PENT, - KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), - - [_BL1] = LAYOUT( /* Base layer - standard layout without any special functions */ - KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN, KC_P7, KC_P8 , KC_P9 , KC_PPLS, - KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_P4, KC_P5 , KC_P6 , - KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1, KC_P2 , KC_P3 , KC_PENT, - KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT - ), - - [_FL] = LAYOUT( /* special functions layer */ - // F1: dyn. macro 1 play - // F2: dyn. macro 2 play - // F3: dyn. macro 1 record - // F4: dyn. macro 2 record - // F5: dyn. macro record stop - // Capslock: CapsLock (really!) - // ~: Key Lock - // Cursor: Media Pref / Next / Volume Up / Volume Down - // Space: Media Play / Pause - // m: enter mouse layer - _______, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - QK_LOCK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, TG(_MS), _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, - _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______ - ), - - [_MS] = LAYOUT( /* mouse key layer */ - // Cursor: mouse, INS/HOME/PgUp: Mouse Accel, Del, End, PageDn: mouse buttons - TG(_MS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______ - ) -}; - -void keyboard_post_init_user(void) { - // Customise these values to desired behaviour - //debug_enable=true; - //debug_matrix=true; - //debug_keyboard=true; - //debug_mouse=true; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - // If console is enabled, it will print the matrix position and status of each key pressed - dprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); - return true; -} diff --git a/keyboards/mschwingen/modelm/led_ffc/rules.mk b/keyboards/mschwingen/modelm/led_ffc/rules.mk deleted file mode 100644 index 8b13789179..0000000000 --- a/keyboards/mschwingen/modelm/led_ffc/rules.mk +++ /dev/null @@ -1 +0,0 @@ - diff --git a/keyboards/mschwingen/modelm/led_wired/rules.mk b/keyboards/mschwingen/modelm/led_wired/rules.mk deleted file mode 100644 index 8b13789179..0000000000 --- a/keyboards/mschwingen/modelm/led_wired/rules.mk +++ /dev/null @@ -1 +0,0 @@ - diff --git a/keyboards/mschwingen/modelm/led_ws2812/rules.mk b/keyboards/mschwingen/modelm/led_ws2812/rules.mk deleted file mode 100644 index 9a69649289..0000000000 --- a/keyboards/mschwingen/modelm/led_ws2812/rules.mk +++ /dev/null @@ -1 +0,0 @@ -WS2812_DRIVER_REQUIRED = yes diff --git a/keyboards/mschwingen/modelm/matrix.c b/keyboards/mschwingen/modelm/matrix.c deleted file mode 100644 index 7ea20b5a11..0000000000 --- a/keyboards/mschwingen/modelm/matrix.c +++ /dev/null @@ -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 . - */ -#include -#include -#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 deleted file mode 100644 index 23d1b1484a..0000000000 --- a/keyboards/mschwingen/modelm/modelm.c +++ /dev/null @@ -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 . - */ -#include -#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/modelm.h b/keyboards/mschwingen/modelm/modelm.h deleted file mode 100644 index d842793ccd..0000000000 --- a/keyboards/mschwingen/modelm/modelm.h +++ /dev/null @@ -1,22 +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 . - */ - -#pragma once - -extern void update_layer_leds(void); - -#include "quantum.h" diff --git a/keyboards/mschwingen/modelm/post_rules.mk b/keyboards/mschwingen/modelm/post_rules.mk deleted file mode 100644 index a1c2040f4c..0000000000 --- a/keyboards/mschwingen/modelm/post_rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -ifeq ($(strip $(UART_DEBUG)), yes) - OPT_DEFS += -DUART_DEBUG -endif diff --git a/keyboards/mschwingen/modelm/readme.md b/keyboards/mschwingen/modelm/readme.md deleted file mode 100644 index f4cb360625..0000000000 --- a/keyboards/mschwingen/modelm/readme.md +++ /dev/null @@ -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 deleted file mode 100644 index 94830f7a75..0000000000 --- a/keyboards/mschwingen/modelm/rules.mk +++ /dev/null @@ -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/blackpill/info.json b/keyboards/tronguylabs/m122_3270/blackpill/info.json deleted file mode 100644 index b17554b7e0..0000000000 --- a/keyboards/tronguylabs/m122_3270/blackpill/info.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "usb": { - "device_version": "0.0.2" - }, - "matrix_pins": { - "cols": ["B0", "B1", "B10", "B12", "B13", "B14", "B15", "A8", "A7", "A10", "A6", "A5", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9"], - "rows": ["C13", "C14", "C15", "A0", "A1", "A2", "A3", "A4"] - }, - "diode_direction": "ROW2COL", - "processor": "STM32F411", - "bootloader": "stm32-dfu", - "board": "BLACKPILL_STM32_F411" -} diff --git a/keyboards/tronguylabs/m122_3270/blackpill/readme.md b/keyboards/tronguylabs/m122_3270/blackpill/readme.md deleted file mode 100644 index 1e47a447a3..0000000000 --- a/keyboards/tronguylabs/m122_3270/blackpill/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# BlackPill controller for m122-3270 - -This directory contains the BlackPill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk deleted file mode 100644 index 0a85fffb85..0000000000 --- a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk +++ /dev/null @@ -1,12 +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 = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output diff --git a/keyboards/tronguylabs/m122_3270/bluepill/info.json b/keyboards/tronguylabs/m122_3270/bluepill/info.json deleted file mode 100644 index e2f18d06e4..0000000000 --- a/keyboards/tronguylabs/m122_3270/bluepill/info.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "usb": { - "device_version": "0.0.3" - }, - "matrix_pins": { - "cols": ["B1", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "B0", "A10", "A7", "A6", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9"], - "rows": ["C13", "C14", "C15", "A1", "A2", "A3", "A4", "A5"] - }, - "diode_direction": "ROW2COL", - "processor": "STM32F103", - "bootloader": "stm32duino" -} diff --git a/keyboards/tronguylabs/m122_3270/bluepill/readme.md b/keyboards/tronguylabs/m122_3270/bluepill/readme.md deleted file mode 100644 index a8d92432d4..0000000000 --- a/keyboards/tronguylabs/m122_3270/bluepill/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# BluePill controller for m122-3270 -This directory contains the BluePill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/bluepill/rules.mk b/keyboards/tronguylabs/m122_3270/bluepill/rules.mk deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/keyboards/tronguylabs/m122_3270/info.json b/keyboards/tronguylabs/m122_3270/info.json deleted file mode 100644 index 364ab250dc..0000000000 --- a/keyboards/tronguylabs/m122_3270/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c deleted file mode 100644 index 4ade8fe6ee..0000000000 --- a/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c +++ /dev/null @@ -1,214 +0,0 @@ -/* Copyright 2021 James R. Maynard III - * - * 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 . - */ -#include QMK_KEYBOARD_H - -enum custom_keycodes { - JM_DOT = SAFE_RANGE, // . both shifted and unshifted - JM_COMM, // , both shifted and unshifted - JM_GRLS, // < and > on one key - JM_CBRC, // { and } on one key - JM_CENT, // cent sign and ! on one key - JM_DPA1, // DUP/PA1, - JM_FPA2, // FldMk/PA2, - JM_JUMP, // JUMP/PA3, - JM_DEL, // Delete - JM_NSLC // NumLock/ScrollLock on one key -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // PC/3270 layout: PC legends (blue) - [0] = LAYOUT( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - - KC_NO, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_PGUP, KC_PGDN, KC_ESC, JM_NSLC, KC_PAST, KC_PSLS, - KC_NO, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, KC_INS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, - KC_PSCR, KC_NO, KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - MO(2), KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT - ), - - // PC/3270 layout: 3270 legends (black), with x3270 keycodes - [1] = LAYOUT( - A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), A(KC_F5), A(KC_F6), A(KC_F7), A(KC_F8), A(KC_F9), A(KC_F10), A(KC_F11), A(KC_F12), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - - A(KC_A), A(KC_C), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, JM_DPA1, JM_FPA2, JM_JUMP, KC_ESC, JM_NSLC, KC_PCMM, KC_SPC, - KC_CRSEL, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JM_CENT, KC_BSLS, S(KC_ENT), S(KC_TAB), KC_INS, JM_DEL, KC_P7, KC_P8, KC_P9, KC_TAB, - KC_EXSEL, A(KC_E), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, JM_CBRC, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, - A(KC_B), C(KC_C), KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JM_COMM, JM_DOT, KC_SLSH, KC_RSFT, KC_LEFT, A(KC_H), KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, - MO(2), KC_LGUI, A(KC_R), KC_LALT, KC_SPC, KC_RALT, KC_ENT, KC_DOWN, KC_P0, KC_PDOT - ), - - // Function layer, accessed by the Zoom key - [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - DF(0), DF(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______ - ), - - // Firmware layer, accessed by the Zoom/Space key pair (hold both down) - [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - -bool left_shift_down = false; -bool right_shift_down = false; -bool left_alt_down = false; -bool right_alt_down = false; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_LSFT: - left_shift_down = record->event.pressed; - break; - case KC_RSFT: - right_shift_down = record->event.pressed; - break; - case KC_LALT: - left_alt_down = record->event.pressed; - break; - case KC_RALT: - right_alt_down = record->event.pressed; - break; - case JM_GRLS: - if (left_shift_down || right_shift_down) { - if(record->event.pressed) { - SEND_STRING(">"); - } - } else { - if(record->event.pressed) { - SEND_STRING("<"); - } - } - return false; - case JM_CBRC: - if (left_shift_down || right_shift_down) { - if (record->event.pressed) { - SEND_STRING("}"); - } - } else { - if(record->event.pressed) { - SEND_STRING("{"); - } - } - return false; - case JM_CENT: - if (left_shift_down || right_shift_down) { - if (record->event.pressed) { - SEND_STRING("!"); - } - } else { // This assumes that the Linux Compose has been set to Scroll Lock - if (record->event.pressed) { - tap_code16(KC_SCRL); - SEND_STRING("c/"); - } - } - return false; - case JM_COMM: - if (record->event.pressed){ - SEND_STRING(","); - } - return false; - case JM_DOT: - if (record->event.pressed) { - SEND_STRING("."); - } - return false; - case JM_DPA1: - if (left_shift_down || right_shift_down) { - if (record->event.pressed) { - tap_code16(C(KC_D)); - } - return false; - } else { - if(record->event.pressed) { - tap_code16(A(KC_1)); - } - return false; - } - break; - case JM_FPA2: - if (left_shift_down || right_shift_down) { - if (record->event.pressed) { - tap_code16(C(KC_F)); - } - return false; - } else { - if(record->event.pressed) { - tap_code16(A(KC_2)); - } - return false; - } - break; - case JM_JUMP: - if (record->event.pressed) { - if (left_alt_down || right_alt_down) { - SEND_STRING("3"); - } - } - return false; - case JM_DEL: - if (record->event.pressed) { - if (left_alt_down || right_alt_down) { - unregister_code(KC_LALT); - unregister_code(KC_RALT); - tap_code16(C(KC_W)); - if (left_alt_down) { - register_code(KC_LALT); - } - if (right_alt_down) { - register_code(KC_RALT); - } - } else { - tap_code16(KC_DEL); - } - } - return false; - case JM_NSLC: - if (left_shift_down || right_shift_down) { - if (record->event.pressed) { - register_code(KC_NUM_LOCK); - } - else { - unregister_code(KC_NUM_LOCK); - } - } else { - if (record->event.pressed) { - register_code(KC_SCRL); - } - else { - unregister_code(KC_SCRL); - } - } - return false; - } - - return true; -} diff --git a/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md b/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md deleted file mode 100644 index cab833dd30..0000000000 --- a/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md +++ /dev/null @@ -1,35 +0,0 @@ -# Default keymap for m122-3270 - -This keymap is intended to make the PC/3270 122-key IBM keyboard work as closely as possible to the standard -PC/3270 keyboard's (part number 1397000) original mapping. Two layers are defined: layer 0 is the PC layout, -using the blue legends on the PC/3270 keys (as shipped by Unicomp; I don't have the original keycaps, and I -know there are a few differences), while layer 1 is the 3270 layout, with keycodes selected to make the `x3270` -suite do the right thing with each key as pressed. The idea here is, eventually, to get `x3270` to -automatically shift the keyboard to layer 1 when it gains focus. - -When layer 0 is active, the upper left key of the 10-key pad is Escape, the Reset and Enter keys are Control, and -the comma and dot keys act like normal PC keys (< and >, repectively, when shifted). The Ctrl key (bottom right -of the left-side 10-key cluster) is always the left GUI key. PA2 and Jump/PA3 are PgUp and PgDn, respectively, -and the backtab key is End. The Rule/Home key is Home. The key next to the Escape key is Scroll Lock when unshifted, -and Num Lock when shifted. - -When layer 1 is active, the keys do their labeled functions. The only keys that don't do anything are CrSel, -ExSel, and Jump, though only a few of the alternate functions (on the front of the keys) work: left/right/delete -word and PA3. The rest aren't emulated by x3270. Many of the keys that have function in PC mode will *not* have -that same function in 3270 mode, since x3270 uses different keystrokes to accomplish the same function. - -To manually switch to layer 1, hold the Zoom key (the one on the far lower left of the keyboard) and press Clear -(the one at the top right of that same block of 10 keys); to switch back to layer 0, hold the Zoom key and hit -Attn (the one at the top left of that block of 10). Holding the Zoom key and the spacebar gets you to keys that -control QMK itself: Zoom-space-R resets to the bootloader, Zoom-space-E erases the EEPROM (which currently does -nothing), and Zoom-space-D turns the debugger on and off. - -Note that you need to set your Linux system to use the Scroll Lock key as the Compose key in order to get the -cent sign to register as intended, and add the following lines to a file in your home directory named `.x3270pro` -to make Dup and Field Mark work: -``` -x3270.keymap.m122: #override \ - CtrlF: FieldMark()\n\ - CtrlD: Dup() -``` -You need to then invoke `x3270` with the parameter `-keymap m122` to activate those definitions. diff --git a/keyboards/tronguylabs/m122_3270/readme.md b/keyboards/tronguylabs/m122_3270/readme.md deleted file mode 100644 index 1dd1580bcd..0000000000 --- a/keyboards/tronguylabs/m122_3270/readme.md +++ /dev/null @@ -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/tronguylabs/m122_3270/teensy/info.json b/keyboards/tronguylabs/m122_3270/teensy/info.json deleted file mode 100644 index 7596f5fc15..0000000000 --- a/keyboards/tronguylabs/m122_3270/teensy/info.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "usb": { - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["B5", "B6", "B7", "D0", "D1", "D2", "D3", "D4", "D5", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"], - "rows": ["F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7"] - }, - "diode_direction": "ROW2COL", - "processor": "at90usb1286", - "bootloader": "halfkay" -} diff --git a/keyboards/tronguylabs/m122_3270/teensy/readme.md b/keyboards/tronguylabs/m122_3270/teensy/readme.md deleted file mode 100644 index 43357ea610..0000000000 --- a/keyboards/tronguylabs/m122_3270/teensy/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Teensy controller for m122-3270 - -This directory contains the Teensy++ 2.0-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/teensy/rules.mk b/keyboards/tronguylabs/m122_3270/teensy/rules.mk deleted file mode 100644 index 0a85fffb85..0000000000 --- a/keyboards/tronguylabs/m122_3270/teensy/rules.mk +++ /dev/null @@ -1,12 +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 = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output diff --git a/keyboards/yugo_m/model_m_101/config.h b/keyboards/yugo_m/model_m_101/config.h deleted file mode 100644 index 2b7fc4d157..0000000000 --- a/keyboards/yugo_m/model_m_101/config.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2020 Nidzo Tomic -Copyright 2022 an_achronism <87213873+an-achronism@users.noreply.github.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 . -*/ - -#pragma once - -/* define if matrix has ghost */ -#define MATRIX_HAS_GHOST - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -/* redefine available (emulated) EEPROM as 4 kB rather than the default 2 kB to let VIA use more of the on-chip Flash of the STM32F303 to store 4 layers (since 4 layers * 8 rows * 16 columns * 2 = 1024 bytes but the default max available is 1023 bytes due to ATMEGA32U4 etc. only having 1 kB of EEPROM) */ -#define WEAR_LEVELING_BACKING_SIZE 4096 -#define WEAR_LEVELING_LOGICAL_SIZE 2048 diff --git a/keyboards/yugo_m/model_m_101/info.json b/keyboards/yugo_m/model_m_101/info.json deleted file mode 100644 index 9c1aeb0ac9..0000000000 --- a/keyboards/yugo_m/model_m_101/info.json +++ /dev/null @@ -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/keymaps/default/keymap.c b/keyboards/yugo_m/model_m_101/keymaps/default/keymap.c deleted file mode 100644 index 2759790e4f..0000000000 --- a/keyboards/yugo_m/model_m_101/keymaps/default/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2020 Nidzo Tomic - * Copyright 2022 an_achronism <87213873+an-achronism@users.noreply.github.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 . - */ -#include QMK_KEYBOARD_H - -enum keyboard_layers { - _BL, // Base Layer -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-------------------------------------------------------------------------------------------------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PSc|ScL|Pse| | - * | | - * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |¥ |BSp| |Ins|Hom|PgU| |Num|/ |* |- | - * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |\ | |Del|End|PgD| |7 |8 |9 |+ | - * |-----------------------------------------------------------| |---------------| - * |CapsLk|A |S |D |F |G |H |J |K |L |; |' |# |Ent | |4 |5 |6 |= | - * |-----------------------------------------------------------| |---------------| - * |Shift|\ |Z |X |C |V |B |N |M |, |. |/ |\ |Shift| |Up | |1 |2 |3 |Ent| - * |-----------------------------------------------------------| |---| |---------------| - * |Ctrl | |Alt | Space |Alt Gr| |Ctrl | |Lt |Dn |Rt | |0 |, |. |GUI| - * `-------------------------------------------------------------------------------------------------' - */ - [_BL] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_INT6, KC_PDOT, KC_LGUI), -}; diff --git a/keyboards/yugo_m/model_m_101/keymaps/default/readme.md b/keyboards/yugo_m/model_m_101/keymaps/default/readme.md deleted file mode 100644 index 3d983cc1e7..0000000000 --- a/keyboards/yugo_m/model_m_101/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for IBM/Lexmark/Unicomp Enhanced Keyboards (a.k.a. "Keyboard M", "Model M") with arrays comprising between 101 and 108 keys (unused keys can simply be ignored as they will be physically blocked by keycap stabiliser posts). As of February 2022, ANSI, ISO, and JIS key positions are all supported and mapped to the appropriate default functions. diff --git a/keyboards/yugo_m/model_m_101/model_m_101.c b/keyboards/yugo_m/model_m_101/model_m_101.c deleted file mode 100644 index 87e681d8e0..0000000000 --- a/keyboards/yugo_m/model_m_101/model_m_101.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Nidzo Tomic - * - * 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 . - */ -#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 deleted file mode 100644 index 7c14dea804..0000000000 --- a/keyboards/yugo_m/model_m_101/readme.md +++ /dev/null @@ -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/model_m_101/rules.mk b/keyboards/yugo_m/model_m_101/rules.mk deleted file mode 100644 index ab2c49da70..0000000000 --- a/keyboards/yugo_m/model_m_101/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # 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 diff --git a/keyboards/yugo_m/readme.md b/keyboards/yugo_m/readme.md deleted file mode 100644 index 40c7b64073..0000000000 --- a/keyboards/yugo_m/readme.md +++ /dev/null @@ -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 -- cgit v1.3.1 From 32d865572cd87a5f68ac9b09e20dffc1bcba69dd Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 29 May 2023 06:02:11 +1000 Subject: `develop` 2023q2 changelog (#21049) Co-authored-by: Ryan --- docs/ChangeLog/20230528.md | 551 ++++++++++++++++++++++++++++++++++ docs/ChangeLog/20230528/PR14996.md | 21 -- docs/ChangeLog/20230528/PR20584.md | 3 - docs/breaking_changes.md | 24 +- docs/breaking_changes_history.md | 1 + docs/breaking_changes_instructions.md | 8 - docs/pr_checklist.md | 4 +- 7 files changed, 565 insertions(+), 47 deletions(-) create mode 100644 docs/ChangeLog/20230528.md delete mode 100644 docs/ChangeLog/20230528/PR14996.md delete mode 100644 docs/ChangeLog/20230528/PR20584.md (limited to 'docs/ChangeLog') diff --git a/docs/ChangeLog/20230528.md b/docs/ChangeLog/20230528.md new file mode 100644 index 0000000000..b4044d3109 --- /dev/null +++ b/docs/ChangeLog/20230528.md @@ -0,0 +1,551 @@ +# QMK Breaking Changes - 2023 May 28 Changelog + +## Notable Changes :id=notable-changes + +As per last breaking changes cycle, there has been _a lot_ of emphasis on behind-the-scenes changes, mainly around migration of configurables into `info.json` files, cleanup of `info.json` files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt. + +Of note for keyboard designers: + +* Layout and matrix definitions in `info.json` are now _mandatory_ for merge into QMK. + * Layout macros in `.h` are no longer accepted into QMK Firmware. + * Existing keyboards have been meticulously converted by the QMK collaborators + * Layouts missing from keyboard definitions have been added in the process + * Keys within layouts should not specify `"w":1` or `"h":1` if the key size is 1 -- `w`/`h` should only be present for sizes other than 1 +* `config_common.h` has been removed and should not be present anywhere in your keyboard code. +* `RGB_DI_PIN` will now cause an error during build: + * For WS2812-like LEDs, this should be moved to `info.json`: `"ws2812": { "pin": "xxx" }` + * For APA102 LEDs, this should be moved to `info.json`: `"apa102": { "data_pin": "xxx" }` +* Other mandatory data-driven changes should be automatically flagged during build +* Keymaps with `encoder_map` should now have the following change made: + * `encoder_map[][NUM_ENCODERS][2]` => `encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS]` + * Users assumed the `2` referred to the number of encoders, rather than the number of directions (which is always 2) + +### Repeat last key ([#19700](https://github.com/qmk/qmk_firmware/pull/19700)) :id=repeat-last-key + +A new pair of keys has been added to QMK -- namely `QK_REPEAT_KEY` and `QK_ALT_REPEAT_KEY` (shortened: `QK_REP`/`QK_AREP`). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press `KC_LEFT`, pressing `QK_REPEAT_KEY` afterwards repeats `KC_LEFT`, but pressing `QK_ALT_REPEAT_KEY` instead sends `KC_RIGHT`. + +The full list of default alternate keys is available on the [Repeat Key](feature_repeat_key.md) documentation. + +To enable these keys, in your keymap's `rules.mk`, add: + +```make +REPEAT_KEY_ENABLE = yes +``` + +...and add them to your keymap. + +### User callback for pre process record ([#20584](https://github.com/qmk/qmk_firmware/pull/20584)) :id=user-callback-for-pre-process-record + +Two new boolean callback functions, `pre_process_record_kb` and `pre_process_record_user`, have been added. They are called at the beginning of `process_record`, right before `process_combo`. + +Similar to existing `*_kb` and `*_user` callback functions, returning `false` will halt further processing of key events. The `pre_process_record_user` function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, `pre_process_record_user` can capture the next key record of an input event that follows. That key record can be used to influence the [decision of the mod-tap](https://docs.qmk.fm/#/tap_hold) key that is currently undergoing quantum processing. + +### Consolidate modelm ([#14996](https://github.com/qmk/qmk_firmware/pull/14996) :id=consolidate-modelm + +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. + +The list of all moved keyboard locations is listed [below](20230528.md#updated-keyboard-codebases). + +## Changes Requiring User Action :id=changes-requiring-user-action + +### `IGNORE_MOD_TAP_INTERRUPT` behaviour changes ([#20211](https://github.com/qmk/qmk_firmware/pull/20211)) :id=i-m-t-i + +Following up from the last breaking changes cycle, `IGNORE_MOD_TAP_INTERRUPT` has been removed and if present in keymap code, will now fail to build. The previous functionality for `IGNORE_MOD_TAP_INTERRUPT` is now default, and should you wish to revert to the old behaviour, you can use `HOLD_ON_OTHER_KEY_PRESS` instead. + +For more information, you are invited to read the section on [HOLD_ON_OTHER_KEY_PRESS](tap_hold.md#hold-on-other-key-press) in the page on [Tap-Hold configuration options](tap_hold.md). + +### Updated Keyboard Codebases :id=updated-keyboard-codebases + +| Old Keyboard Name | New Keyboard Name | +|---------------------------------|-------------------------------------| +| ashpil/modelm_usbc | ibm/model_m/ashpil_usbc | +| binepad/bn009r2 | binepad/bn009/r2 | +| converter/modelm101 | ibm/model_m/teensypp | +| converter/modelm101_teensy2 | ibm/model_m/teensy2 | +| converter/modelm_ssk | ibm/model_m_ssk/teensypp_ssk | +| durgod/dgk6x/hades | durgod/dgk6x/hades_ansi | +| handwired/ibm122m | ibm/model_m_122/ibm122m | +| jacky_studio/piggy60/hotswap | jacky_studio/piggy60/rev1/hotswap | +| jacky_studio/piggy60/solder | jacky_studio/piggy60/rev1/solder | +| kamigakushi | jaykeeb/kamigakushi | +| massdrop/thekey | drop/thekey/v1 | +| massdrop/thekey_v2 | drop/thekey/v2 | +| mschwingen/modelm | ibm/model_m/mschwingen | +| tronguylabs/m122_3270 | ibm/model_m_122/m122_3270 | +| tronguylabs/m122_3270/blackpill | ibm/model_m_122/m122_3270/blackpill | +| tronguylabs/m122_3270/bluepill | ibm/model_m_122/m122_3270/bluepill | +| tronguylabs/m122_3270/teensy | ibm/model_m_122/m122_3270/teensy | +| yugo_m/model_m_101 | ibm/model_m/yugo_m | + +## Notable core changes :id=notable-core + +### Encoder functionality fallback ([#20320](https://github.com/qmk/qmk_firmware/pull/20320)) :id=encoder-functionality-fallback + +For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard: + +* If `EXTRAKEY_ENABLE` is enabled by the keyboard, the encoder will be mapped to `KC_VOLU`/`KC_VOLD` +* If `MOUSEKEY_ENABLE` is enabled by the keyboard, the encoder will be mapped to `KC_MS_WH_UP`/`KC_MS_WH_DOWN` +* Otherwise, `KC_PGDN`/`KC_PGUP` will be used + +Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping. + +### OLED Driver Improvements ([#20331](https://github.com/qmk/qmk_firmware/pull/20331)) :id=oled-driver-improvements + +The "classic" OLED driver picked up support for additional sizes of OLED displays, support for the SH1107 controller, and SPI-based OLED support. + +Other configurable items are available and can be found on the [OLED Driver page](https://docs.qmk.fm/#/feature_oled_driver). + +## Full changelist :id=full-changelist + +Core: +* Refactor `keyevent_t` for 1ms timing resolution ([#15847](https://github.com/qmk/qmk_firmware/pull/15847)) +* PS/2 PIO Driver for RP2040 ([#17893](https://github.com/qmk/qmk_firmware/pull/17893)) +* Relocate various modifier defines ([#18638](https://github.com/qmk/qmk_firmware/pull/18638)) +* Added PMW3320 driver ([#19543](https://github.com/qmk/qmk_firmware/pull/19543)) +* Keymap introspection for combos. ([#19670](https://github.com/qmk/qmk_firmware/pull/19670)) +* Add direction to dynamic_macro_record_start_user ([#19689](https://github.com/qmk/qmk_firmware/pull/19689)) +* Add Repeat Key ("repeat last key") as a core feature. ([#19700](https://github.com/qmk/qmk_firmware/pull/19700)) +* [Cleanup] Quantum Painter ([#19825](https://github.com/qmk/qmk_firmware/pull/19825)) +* Improve robustness of AW20216 driver ([#19849](https://github.com/qmk/qmk_firmware/pull/19849)) +* Make "detected_host_os()" available on the SLAVE side of the split keyboard ([#19854](https://github.com/qmk/qmk_firmware/pull/19854)) +* Add RP2040 Community Edition alias for splitkb.com's Liatris controller ([#19966](https://github.com/qmk/qmk_firmware/pull/19966)) +* Remove some use of keymap.h ([#19980](https://github.com/qmk/qmk_firmware/pull/19980)) +* Merge upstream changes to uf2conv ([#19993](https://github.com/qmk/qmk_firmware/pull/19993)) +* Remove keymap.h ([#20004](https://github.com/qmk/qmk_firmware/pull/20004)) +* Remove some use of keymap.h ([#20006](https://github.com/qmk/qmk_firmware/pull/20006)) +* Quantum Painter QoL enhancements -- auto-poweroff, auto-flush, buffer sizing ([#20013](https://github.com/qmk/qmk_firmware/pull/20013)) +* Make Pointing Device Auto Layer more configurable ([#20061](https://github.com/qmk/qmk_firmware/pull/20061)) +* Add last activity functions for pointing device ([#20079](https://github.com/qmk/qmk_firmware/pull/20079)) +* Caps Word "Invert on shift" option: pressing Shift inverts the shift state. ([#20092](https://github.com/qmk/qmk_firmware/pull/20092)) +* Remove bootloader logic from `mcu_selection.mk` ([#20150](https://github.com/qmk/qmk_firmware/pull/20150)) +* Update qmk_cli container references ([#20154](https://github.com/qmk/qmk_firmware/pull/20154)) +* Clean up APA102 config and add DD mapping ([#20159](https://github.com/qmk/qmk_firmware/pull/20159)) +* Sync activity timestamps between sides. ([#20192](https://github.com/qmk/qmk_firmware/pull/20192)) +* Update Doxygen comments for some headers ([#20194](https://github.com/qmk/qmk_firmware/pull/20194)) +* Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps ([#20211](https://github.com/qmk/qmk_firmware/pull/20211)) +* Add some helpers to tidy up XAP ([#20235](https://github.com/qmk/qmk_firmware/pull/20235)) +* Tidy up duplication of MIN/MAX fallback implementations ([#20236](https://github.com/qmk/qmk_firmware/pull/20236)) +* Optionally keep intermediate file listings in order to do comparisons between builds. ([#20237](https://github.com/qmk/qmk_firmware/pull/20237)) +* Add basic profiler. ([#20238](https://github.com/qmk/qmk_firmware/pull/20238)) +* WS2812 driver improvements ([#20262](https://github.com/qmk/qmk_firmware/pull/20262)) +* typing_heatmap: Add macro to configure increase steps ([#20300](https://github.com/qmk/qmk_firmware/pull/20300)) +* Migrate `rgblight.pin` and `RGB_DI_PIN` to `ws2812.pin` ([#20303](https://github.com/qmk/qmk_firmware/pull/20303)) +* Delete config_common.h ([#20312](https://github.com/qmk/qmk_firmware/pull/20312)) +* Allow EEPROM_DRIVER from info.json ([#20313](https://github.com/qmk/qmk_firmware/pull/20313)) +* rp2040: *_PAL_MODE overridable for this platform too ([#20314](https://github.com/qmk/qmk_firmware/pull/20314)) +* Add core/fallback encoder behaviour ([#20320](https://github.com/qmk/qmk_firmware/pull/20320)) +* OLED Driver improvements ([#20331](https://github.com/qmk/qmk_firmware/pull/20331)) +* [Chore] Remove stray mod tap interrupt defines and per key functions ([#20347](https://github.com/qmk/qmk_firmware/pull/20347)) +* Add swap hands toggle functions ([#20381](https://github.com/qmk/qmk_firmware/pull/20381)) +* Prevent Tri-Layer keys from stopping caps word ([#20398](https://github.com/qmk/qmk_firmware/pull/20398)) +* quantum/action_util.c: Use uint8_t for oneshot_layer_data ([#20423](https://github.com/qmk/qmk_firmware/pull/20423)) +* Encoder map direction define. ([#20454](https://github.com/qmk/qmk_firmware/pull/20454)) +* Realign and size check EECONFIG structures ([#20541](https://github.com/qmk/qmk_firmware/pull/20541)) +* Clean up ISSI drivers, Add IS31FL3736 support ([#20572](https://github.com/qmk/qmk_firmware/pull/20572)) +* Add a user callback for pre process record ([#20584](https://github.com/qmk/qmk_firmware/pull/20584)) +* Disable debug on QP's internal task ([#20623](https://github.com/qmk/qmk_firmware/pull/20623)) +* Add required string header file ([#20638](https://github.com/qmk/qmk_firmware/pull/20638)) +* Add Develop is31fl3736 multi drivers ([#20642](https://github.com/qmk/qmk_firmware/pull/20642)) +* Support PS/2 mouse 9-bit output with MOUSE_EXTENDED_REPORT ([#20734](https://github.com/qmk/qmk_firmware/pull/20734)) +* BIOI G60/Morgan65: use custom Bluetooth driver ([#20897](https://github.com/qmk/qmk_firmware/pull/20897)) +* Move `pre_process_record_kb()` before `process_combo()` ([#20969](https://github.com/qmk/qmk_firmware/pull/20969)) +* Implement UF2 device type id extension tag ([#21029](https://github.com/qmk/qmk_firmware/pull/21029)) + +CLI: +* Add force support to 'qmk git-submodule' ([#19705](https://github.com/qmk/qmk_firmware/pull/19705)) +* JSON encoder: improve sorting of layout dict keys ([#19974](https://github.com/qmk/qmk_firmware/pull/19974)) +* Increase verbosity of make command ([#20172](https://github.com/qmk/qmk_firmware/pull/20172)) +* Append user variables to the end of make command ([#20177](https://github.com/qmk/qmk_firmware/pull/20177)) +* Strip API specific output from `qmk info` ([#20234](https://github.com/qmk/qmk_firmware/pull/20234)) +* `qmk find`: usability improvements ([#20440](https://github.com/qmk/qmk_firmware/pull/20440)) +* `qmk format-json`: Expose full key path and respect `sort_keys` ([#20836](https://github.com/qmk/qmk_firmware/pull/20836)) +* Update json2c to use dump_lines ([#21013](https://github.com/qmk/qmk_firmware/pull/21013)) + +Submodule updates: +* Update ChibiOS to latest stable 21.11.x ([#20470](https://github.com/qmk/qmk_firmware/pull/20470)) + +Keyboards: +* Allow a larger int for the idle timeout for urbanvanilla keymap ([#19738](https://github.com/qmk/qmk_firmware/pull/19738)) +* Change aidansmithdotdev/fine40 to use Encoder Map ([#19912](https://github.com/qmk/qmk_firmware/pull/19912)) +* Custom keycodes in JSON ([#19925](https://github.com/qmk/qmk_firmware/pull/19925)) +* Remove `"w":1` and `"h":1` from info.json ([#19961](https://github.com/qmk/qmk_firmware/pull/19961)) +* Move matrix config to info.json, part 1 ([#19985](https://github.com/qmk/qmk_firmware/pull/19985)) +* Move matrix config to info.json, part 2 ([#19987](https://github.com/qmk/qmk_firmware/pull/19987)) +* Move matrix config to info.json, part 3 ([#19991](https://github.com/qmk/qmk_firmware/pull/19991)) +* Move matrix config to info.json, part 4 ([#20001](https://github.com/qmk/qmk_firmware/pull/20001)) +* Move matrix config to info.json, part 5 ([#20003](https://github.com/qmk/qmk_firmware/pull/20003)) +* Move matrix config to info.json, part 6 ([#20019](https://github.com/qmk/qmk_firmware/pull/20019)) +* Move matrix config to info.json, part 7 ([#20020](https://github.com/qmk/qmk_firmware/pull/20020)) +* Move matrix config to info.json, part 8 ([#20030](https://github.com/qmk/qmk_firmware/pull/20030)) +* Remove empty rules.mk from keymaps ([#20056](https://github.com/qmk/qmk_firmware/pull/20056)) +* Adjust offset for some layouts ([#20075](https://github.com/qmk/qmk_firmware/pull/20075)) +* Remove useless "ifdef KEYBOARD_*" ([#20078](https://github.com/qmk/qmk_firmware/pull/20078)) +* Remove pointless `USE_I2C` blocks in keyboard headers ([#20084](https://github.com/qmk/qmk_firmware/pull/20084)) +* Add support for ISO version of Durgod Hades ([#20110](https://github.com/qmk/qmk_firmware/pull/20110)) +* Consolidate Binepad BN009 R1 and R2 into common folder ([#20113](https://github.com/qmk/qmk_firmware/pull/20113)) +* Remove more empty headers ([#20155](https://github.com/qmk/qmk_firmware/pull/20155)) +* Remove trailing zeroes in info.json layouts ([#20156](https://github.com/qmk/qmk_firmware/pull/20156)) +* Clean up usage of `QMK_KEYBOARD_H` ([#20167](https://github.com/qmk/qmk_firmware/pull/20167)) +* Move Keychron Q0 and Q0 Plus data-driven configuration; `keychron` keymap `rules.mk` cleanup ([#20168](https://github.com/qmk/qmk_firmware/pull/20168)) +* Move ortho & numpad layouts to data driven ([#20183](https://github.com/qmk/qmk_firmware/pull/20183)) +* Remove `RGB_DI_PIN` ifdefs ([#20218](https://github.com/qmk/qmk_firmware/pull/20218)) +* Add the KJ-Modify RS40 PCB keyboard ([#20243](https://github.com/qmk/qmk_firmware/pull/20243)) +* Move `WS2812_DRIVER` to data driven ([#20248](https://github.com/qmk/qmk_firmware/pull/20248)) +* [jacky_studio/piggy60] move AVR PCB under rev1 ([#20253](https://github.com/qmk/qmk_firmware/pull/20253)) +* Move 75% and 96% layouts to data driven ([#20289](https://github.com/qmk/qmk_firmware/pull/20289)) +* Move split layouts to data driven ([#20290](https://github.com/qmk/qmk_firmware/pull/20290)) +* Move 66% and 68% layouts to data driven ([#20293](https://github.com/qmk/qmk_firmware/pull/20293)) +* add jacky_studio/piggy60/rev2 ([#20297](https://github.com/qmk/qmk_firmware/pull/20297)) +* Move 65% layouts to data driven ([#20308](https://github.com/qmk/qmk_firmware/pull/20308)) +* Move TKL F13 and FRL layouts to data driven ([#20310](https://github.com/qmk/qmk_firmware/pull/20310)) +* Remove some use of keymap.h ([#20316](https://github.com/qmk/qmk_firmware/pull/20316)) +* Move fullsize layouts to data driven ([#20317](https://github.com/qmk/qmk_firmware/pull/20317)) +* Add 36-key layout for Beekeeb Piantor ([#20328](https://github.com/qmk/qmk_firmware/pull/20328)) +* Add sriwedari70 and move kamigakushi to new folder ([#20334](https://github.com/qmk/qmk_firmware/pull/20334)) +* Move TKL layouts to data driven ([#20337](https://github.com/qmk/qmk_firmware/pull/20337)) +* Move Alice and Ergodox layouts to data driven ([#20340](https://github.com/qmk/qmk_firmware/pull/20340)) +* Move small macropad-ish layouts to data driven ([#20341](https://github.com/qmk/qmk_firmware/pull/20341)) +* Move `default` layouts to data driven ([#20349](https://github.com/qmk/qmk_firmware/pull/20349)) +* Move `RGB_MATRIX_DRIVER` to data driven ([#20350](https://github.com/qmk/qmk_firmware/pull/20350)) +* Move split space/backspace layouts to data driven ([#20356](https://github.com/qmk/qmk_firmware/pull/20356)) +* Move single `LAYOUT`s to data driven ([#20365](https://github.com/qmk/qmk_firmware/pull/20365)) +* Add encoder map for Iris Rev. 5 VIA ([#20412](https://github.com/qmk/qmk_firmware/pull/20412)) +* Move remaining `LAYOUT`s to data driven ([#20422](https://github.com/qmk/qmk_firmware/pull/20422)) +* Move single `LAYOUT_all`s to data driven ([#20430](https://github.com/qmk/qmk_firmware/pull/20430)) +* 4pplet/yakiimo Layout Macro Conversion and Additions ([#20436](https://github.com/qmk/qmk_firmware/pull/20436)) +* Move single `60_ansi`, `60_hhkb` and `60_iso` layouts to data driven ([#20438](https://github.com/qmk/qmk_firmware/pull/20438)) +* Update brauner preonic layout ([#20439](https://github.com/qmk/qmk_firmware/pull/20439)) +* AEBoards Satellite Rev1 Layout Macro Conversion ([#20442](https://github.com/qmk/qmk_firmware/pull/20442)) +* Acheron Austin Layout Macro Conversion and Additions ([#20443](https://github.com/qmk/qmk_firmware/pull/20443)) +* Move remaining `LAYOUT_all`s to data driven ([#20463](https://github.com/qmk/qmk_firmware/pull/20463)) +* Update lotus58 RGB config ([#20468](https://github.com/qmk/qmk_firmware/pull/20468)) +* Cleanup `ekow/akira` ([#20474](https://github.com/qmk/qmk_firmware/pull/20474)) +* Move 60% layouts to data driven ([#20477](https://github.com/qmk/qmk_firmware/pull/20477)) +* Move DZ60 and MJ6XY layouts to data driven ([#20478](https://github.com/qmk/qmk_firmware/pull/20478)) +* AEBoards Constellation Layout Macro Updates ([#20487](https://github.com/qmk/qmk_firmware/pull/20487)) +* AI03 Equinox Layout Macro Additions ([#20488](https://github.com/qmk/qmk_firmware/pull/20488)) +* AI03 Vega Layout Macro Additions ([#20489](https://github.com/qmk/qmk_firmware/pull/20489)) +* AKB OGR Layout Macro Additions ([#20490](https://github.com/qmk/qmk_firmware/pull/20490)) +* AKB Vero Layout Macro Additions ([#20491](https://github.com/qmk/qmk_firmware/pull/20491)) +* Alf DC60 Layout Macro Additions ([#20494](https://github.com/qmk/qmk_firmware/pull/20494)) +* Alf X2 Layout Macro Additions ([#20495](https://github.com/qmk/qmk_firmware/pull/20495)) +* Koolertron AMAG23 Touch-Up ([#20496](https://github.com/qmk/qmk_firmware/pull/20496)) +* BIOI G60 Layout Macro Additions ([#20498](https://github.com/qmk/qmk_firmware/pull/20498)) +* BIOI Morgan65 Layout Macro Additions ([#20499](https://github.com/qmk/qmk_firmware/pull/20499)) +* BIOI S65 Layout Macro Additions ([#20500](https://github.com/qmk/qmk_firmware/pull/20500)) +* Boston Layout Macro Additions ([#20504](https://github.com/qmk/qmk_firmware/pull/20504)) +* Potato65S Layout Macro Additions ([#20508](https://github.com/qmk/qmk_firmware/pull/20508)) +* Move miscellaneous layouts to data driven ([#20516](https://github.com/qmk/qmk_firmware/pull/20516)) +* Cable Car Designs Cypher rev6 Layout Additions and Touch-Up ([#20518](https://github.com/qmk/qmk_firmware/pull/20518)) +* Caffeinated Studios Serpent65 Layout Macro Additions ([#20519](https://github.com/qmk/qmk_firmware/pull/20519)) +* CannonKeys Adelie Layout Macro Additions ([#20546](https://github.com/qmk/qmk_firmware/pull/20546)) +* CannonKeys Aella Layout Macro Additions ([#20547](https://github.com/qmk/qmk_firmware/pull/20547)) +* CannonKeys Balance Layout Macro Additions and Touch-Up ([#20548](https://github.com/qmk/qmk_firmware/pull/20548)) +* CannonKeys Brutal v2 1800 Layout Macro Additions ([#20549](https://github.com/qmk/qmk_firmware/pull/20549)) +* CannonKeys Brutal v2 65 Layout Macro Additions ([#20552](https://github.com/qmk/qmk_firmware/pull/20552)) +* CannonKeys Cloudline Layout Macro Additions ([#20553](https://github.com/qmk/qmk_firmware/pull/20553)) +* CannonKeys Crin Layout Macro Additions ([#20554](https://github.com/qmk/qmk_firmware/pull/20554)) +* CannonKeys DevastatingTKL Layout Macro Additions ([#20555](https://github.com/qmk/qmk_firmware/pull/20555)) +* CannonKeys Ellipse Layout Macro Additions ([#20558](https://github.com/qmk/qmk_firmware/pull/20558)) +* CannonKeys Ellipse Hotswap Layout Macro Addition & Touch-Up ([#20560](https://github.com/qmk/qmk_firmware/pull/20560)) +* CannonKeys Gentoo Layout Macro Additions ([#20561](https://github.com/qmk/qmk_firmware/pull/20561)) +* CannonKeys Gentoo Hotswap Touch-Up ([#20562](https://github.com/qmk/qmk_firmware/pull/20562)) +* CannonKeys HoodrowG Layout Macro Additions ([#20563](https://github.com/qmk/qmk_firmware/pull/20563)) +* CannonKeys Moment Layout Macro Additions ([#20564](https://github.com/qmk/qmk_firmware/pull/20564)) +* CannonKeys Moment Hotswap Touch-Up ([#20565](https://github.com/qmk/qmk_firmware/pull/20565)) +* CannonKeys Nearfield Layout Macro Addition ([#20566](https://github.com/qmk/qmk_firmware/pull/20566)) +* CannonKeys Obliterated75 Layout Macro Additions ([#20567](https://github.com/qmk/qmk_firmware/pull/20567)) +* CannonKeys Onyx Layout Macro Additions ([#20568](https://github.com/qmk/qmk_firmware/pull/20568)) +* CannonKeys Rekt1800 Layout Macro Additions ([#20569](https://github.com/qmk/qmk_firmware/pull/20569)) +* CannonKeys Serenity Layout Macro Additions ([#20570](https://github.com/qmk/qmk_firmware/pull/20570)) +* CannonKeys Vector Layout Macro Additions ([#20571](https://github.com/qmk/qmk_firmware/pull/20571)) +* Carbo65 Community Layout support ([#20580](https://github.com/qmk/qmk_firmware/pull/20580)) +* cest73 TKM Layout Macro Additions ([#20583](https://github.com/qmk/qmk_firmware/pull/20583)) +* Charue Charon Layout Macro Additions ([#20585](https://github.com/qmk/qmk_firmware/pull/20585)) +* Charue Sunsetter R2 Layout Macro Additions ([#20586](https://github.com/qmk/qmk_firmware/pull/20586)) +* Remove `FLIP_HALF` layouts and move to data driven ([#20588](https://github.com/qmk/qmk_firmware/pull/20588)) +* update ymdk/id75/rules.mk for develop ([#20592](https://github.com/qmk/qmk_firmware/pull/20592)) +* CherryB Studio CB1800 Layout Macro Additions ([#20593](https://github.com/qmk/qmk_firmware/pull/20593)) +* CherryB Studio CB65 Layout Macro Additions ([#20594](https://github.com/qmk/qmk_firmware/pull/20594)) +* CherryB Studio CB87RGB Layout Macro Additions ([#20595](https://github.com/qmk/qmk_firmware/pull/20595)) +* CheckerBoards G_IDB60 Layout Macro Edits ([#20596](https://github.com/qmk/qmk_firmware/pull/20596)) +* CherryB Studio CB87v2 Layout Macro Additions ([#20597](https://github.com/qmk/qmk_firmware/pull/20597)) +* CX60 Community Layout Support ([#20598](https://github.com/qmk/qmk_firmware/pull/20598)) +* Demiurge Layout Macro Touch-Up ([#20599](https://github.com/qmk/qmk_firmware/pull/20599)) +* Ducky One 2 SF 1967ST Layout Macro Additions ([#20600](https://github.com/qmk/qmk_firmware/pull/20600)) +* Move `FORCE_NKRO` to data driven ([#20604](https://github.com/qmk/qmk_firmware/pull/20604)) +* dyz Synthesis60 Layout Macro Addition ([#20610](https://github.com/qmk/qmk_firmware/pull/20610)) +* DZTech Bocc Layout Macro Additions ([#20611](https://github.com/qmk/qmk_firmware/pull/20611)) +* E88 Layout Macro Additions ([#20612](https://github.com/qmk/qmk_firmware/pull/20612)) +* Emery65 Layout Macro Additions ([#20613](https://github.com/qmk/qmk_firmware/pull/20613)) +* EvyD13 MX5160 Layout Macro Additions ([#20614](https://github.com/qmk/qmk_firmware/pull/20614)) +* FJLabs AD65 Layout Macro Additions ([#20619](https://github.com/qmk/qmk_firmware/pull/20619)) +* FJLabs Avalon Layout Additions and Touch-Up ([#20620](https://github.com/qmk/qmk_firmware/pull/20620)) +* FJLabs Midway60 Layout Macro Additions ([#20621](https://github.com/qmk/qmk_firmware/pull/20621)) +* FJLabs Polaris Layout Additions and Touch-Up ([#20622](https://github.com/qmk/qmk_firmware/pull/20622)) +* FJLabs Sinanju WK Layout Additions and Touch-Up ([#20628](https://github.com/qmk/qmk_firmware/pull/20628)) +* LFK87 refactor ([#20635](https://github.com/qmk/qmk_firmware/pull/20635)) +* Fox Lab Time80 Layout Macro Additions ([#20636](https://github.com/qmk/qmk_firmware/pull/20636)) +* FJLabs Solanis Layout Macro Additions ([#20639](https://github.com/qmk/qmk_firmware/pull/20639)) +* GrayStudio Aero 75 Refactor and Touch-Up ([#20640](https://github.com/qmk/qmk_firmware/pull/20640)) +* Move `USB_MAX_POWER_CONSUMPTION` to data driven ([#20648](https://github.com/qmk/qmk_firmware/pull/20648)) +* `info.json` whitespace cleanups ([#20651](https://github.com/qmk/qmk_firmware/pull/20651)) +* Hand88 Layout Macro Additions ([#20657](https://github.com/qmk/qmk_firmware/pull/20657)) +* Cyberstar Handwired Layout Macro Additions ([#20658](https://github.com/qmk/qmk_firmware/pull/20658)) +* split_65 Handwired Layout Macro Addition and Touch-Up ([#20659](https://github.com/qmk/qmk_firmware/pull/20659)) +* Bebol Handwired Layout Macro Additions ([#20660](https://github.com/qmk/qmk_firmware/pull/20660)) +* Glacier Handwired Layout Macro Addition and Touch-Up ([#20661](https://github.com/qmk/qmk_firmware/pull/20661)) +* Koalafications Handwired Layout Macro Additions ([#20662](https://github.com/qmk/qmk_firmware/pull/20662)) +* The Galleon Handwired Layout Macro Additions ([#20663](https://github.com/qmk/qmk_firmware/pull/20663)) +* More `info.json` whitespace cleanups ([#20665](https://github.com/qmk/qmk_firmware/pull/20665)) +* Remove use of layout macros for LFKeyboards LED config ([#20666](https://github.com/qmk/qmk_firmware/pull/20666)) +* Helix rev2: remove 4 rows option ([#20667](https://github.com/qmk/qmk_firmware/pull/20667)) +* Wakizashi40 Handwired Touch-Up ([#20671](https://github.com/qmk/qmk_firmware/pull/20671)) +* yttyx: convert readme to utf-8 encoding ([#20672](https://github.com/qmk/qmk_firmware/pull/20672)) +* Alicia Cook Layout Macro Additions ([#20675](https://github.com/qmk/qmk_firmware/pull/20675)) +* Primus75 Layout Macro Additions ([#20676](https://github.com/qmk/qmk_firmware/pull/20676)) +* Volcano660 Layout Macro Additions ([#20677](https://github.com/qmk/qmk_firmware/pull/20677)) +* Iris Keyboards Iris60 Layout Macro Additions ([#20678](https://github.com/qmk/qmk_firmware/pull/20678)) +* Irene Layout Macro Additions ([#20679](https://github.com/qmk/qmk_firmware/pull/20679)) +* Iron180 Layout Macro Additions ([#20680](https://github.com/qmk/qmk_firmware/pull/20680)) +* kinesis/alvicstep: remove kicad project files ([#20681](https://github.com/qmk/qmk_firmware/pull/20681)) +* Remove more junk files and scripts ([#20682](https://github.com/qmk/qmk_firmware/pull/20682)) +* JKeys Design Gentleman65 Layout Macro Addition and Touch-Up ([#20684](https://github.com/qmk/qmk_firmware/pull/20684)) +* JKeys Design Gentleman65 Suited Edition Layout Macro Addition ([#20685](https://github.com/qmk/qmk_firmware/pull/20685)) +* add additional layouts to `dactyl_manuform` variants ([#20688](https://github.com/qmk/qmk_firmware/pull/20688)) +* TheDogKeyboard Layout Macro Addition ([#20689](https://github.com/qmk/qmk_firmware/pull/20689)) +* KBDfans Bella Soldered Layout Macro Additions ([#20691](https://github.com/qmk/qmk_firmware/pull/20691)) +* KBDfans Bounce75 Hotswap Touch-Up ([#20692](https://github.com/qmk/qmk_firmware/pull/20692)) +* KBDfans KBD66 Layout Additions and Refactor ([#20693](https://github.com/qmk/qmk_firmware/pull/20693)) +* KBDfans Odin RGB Touch-Up ([#20694](https://github.com/qmk/qmk_firmware/pull/20694)) +* KBDfans Odin Soldered Layout Additions and Touch-Up ([#20695](https://github.com/qmk/qmk_firmware/pull/20695)) +* keebzdotnet FMe Layout Additions ([#20696](https://github.com/qmk/qmk_firmware/pull/20696)) +* Kegen G-Boy Layout Additions ([#20697](https://github.com/qmk/qmk_firmware/pull/20697)) +* Escape Unicode characters in info.json ([#20698](https://github.com/qmk/qmk_firmware/pull/20698)) +* Kiko's Lab Ellora65 Layout Additions ([#20699](https://github.com/qmk/qmk_firmware/pull/20699)) +* Even more `info.json` whitespace cleanups ([#20703](https://github.com/qmk/qmk_firmware/pull/20703)) +* kkatano Bakeneko 65 V3 Layout Additions ([#20706](https://github.com/qmk/qmk_firmware/pull/20706)) +* kopibeng MNK65 Layout Additions ([#20708](https://github.com/qmk/qmk_firmware/pull/20708)) +* kopibeng Typ65+ Layout Additions ([#20710](https://github.com/qmk/qmk_firmware/pull/20710)) +* kopibeng XT60 Layout Additions ([#20711](https://github.com/qmk/qmk_firmware/pull/20711)) +* kopibeng XT60_SINGA Layout Additions ([#20712](https://github.com/qmk/qmk_firmware/pull/20712)) +* kopibeng XT8x Layout Additions ([#20713](https://github.com/qmk/qmk_firmware/pull/20713)) +* Lefty Touch-Up ([#20714](https://github.com/qmk/qmk_firmware/pull/20714)) +* Loki65 Layout Additions ([#20715](https://github.com/qmk/qmk_firmware/pull/20715)) +* Lucid Alexa Solder Layout Additions ([#20716](https://github.com/qmk/qmk_firmware/pull/20716)) +* Lucid Phantom Soldered Layout Additions ([#20717](https://github.com/qmk/qmk_firmware/pull/20717)) +* Leftover30 Layout Addition ([#20718](https://github.com/qmk/qmk_firmware/pull/20718)) +* Matrix Cain RE Touch-Up ([#20719](https://github.com/qmk/qmk_firmware/pull/20719)) +* Matrix Lab 8XV1.2 OG Layout Updates ([#20720](https://github.com/qmk/qmk_firmware/pull/20720)) +* Mechlovin Studio Hex6C Layout Additions ([#20722](https://github.com/qmk/qmk_firmware/pull/20722)) +* Mechlovin.Studio Rogue87 Rev.1 Layout Additions ([#20724](https://github.com/qmk/qmk_firmware/pull/20724)) +* Mechlovin.Studio Rouge87 Rev.1 Layout Additions ([#20725](https://github.com/qmk/qmk_firmware/pull/20725)) +* Mechlovin.Studio infinity87 Rev.1 Layout Additions ([#20726](https://github.com/qmk/qmk_firmware/pull/20726)) +* Mechlovin.Studio Infinity87 RGB Rev1 Layout Additions ([#20727](https://github.com/qmk/qmk_firmware/pull/20727)) +* Mechlovin9 Layout Addition ([#20728](https://github.com/qmk/qmk_firmware/pull/20728)) +* 1upkeyboards/pi50 WS2812_DI_PIN patch for develop ([#20731](https://github.com/qmk/qmk_firmware/pull/20731)) +* Mechlovin.Studio Infinity87 Rev.2 Layout Additions ([#20735](https://github.com/qmk/qmk_firmware/pull/20735)) +* Mechlovin.Studio Olly JF Layout Additions ([#20736](https://github.com/qmk/qmk_firmware/pull/20736)) +* Mechlovin Studio Serratus Layout Additions ([#20737](https://github.com/qmk/qmk_firmware/pull/20737)) +* MechWild Mercutio Layout Addition ([#20738](https://github.com/qmk/qmk_firmware/pull/20738)) +* MisterKnife Knife66 ISO Layout Addition ([#20739](https://github.com/qmk/qmk_firmware/pull/20739)) +* MNK1800s Layout Addition ([#20740](https://github.com/qmk/qmk_firmware/pull/20740)) +* MNK75 Layout Additions ([#20741](https://github.com/qmk/qmk_firmware/pull/20741)) +* Mode SixtyFive S Layout Additions ([#20742](https://github.com/qmk/qmk_firmware/pull/20742)) +* Mode SeventyFive H Layout Addition ([#20743](https://github.com/qmk/qmk_firmware/pull/20743)) +* Monstargear XO87 Soldered Layout Additions ([#20744](https://github.com/qmk/qmk_firmware/pull/20744)) +* MTBKeys MTB60 Solder Layout Additions ([#20745](https://github.com/qmk/qmk_firmware/pull/20745)) +* Nix Keyboards Day Off 60 Touch-Up and Layout Additions ([#20746](https://github.com/qmk/qmk_firmware/pull/20746)) +* Kastenwagen 1840 Layout Addition ([#20747](https://github.com/qmk/qmk_firmware/pull/20747)) +* Kastenwagen 48 Layout Addition ([#20748](https://github.com/qmk/qmk_firmware/pull/20748)) +* NovelKeys NK87 Touch-Up ([#20749](https://github.com/qmk/qmk_firmware/pull/20749)) +* NovelKeys NK87B Touch-Up ([#20750](https://github.com/qmk/qmk_firmware/pull/20750)) +* Noxary 378 Layout Addition ([#20751](https://github.com/qmk/qmk_firmware/pull/20751)) +* Noxary Valhalla Layout Addition ([#20752](https://github.com/qmk/qmk_firmware/pull/20752)) +* Nightly Boards/DeskDaily Daily60 Layout Additions ([#20753](https://github.com/qmk/qmk_firmware/pull/20753)) +* Odelia Touch-Up ([#20754](https://github.com/qmk/qmk_firmware/pull/20754)) +* One Key Co Dango40 Touch-Up and Layout Addition ([#20755](https://github.com/qmk/qmk_firmware/pull/20755)) +* P3D Glitch Layout Addition ([#20763](https://github.com/qmk/qmk_firmware/pull/20763)) +* Pearl Boards Pandora Layout Additions ([#20764](https://github.com/qmk/qmk_firmware/pull/20764)) +* Pearl Boards Pearl Layout Addition ([#20765](https://github.com/qmk/qmk_firmware/pull/20765)) +* support boards with APM32 instead of the STM32 ([#20770](https://github.com/qmk/qmk_firmware/pull/20770)) +* Pearl Boards Zeus Layout Additions ([#20773](https://github.com/qmk/qmk_firmware/pull/20773)) +* Peej Rosaline Staggered Layout Additions ([#20774](https://github.com/qmk/qmk_firmware/pull/20774)) +* plywrks Lune Layout Touch-Up ([#20775](https://github.com/qmk/qmk_firmware/pull/20775)) +* Project Keyboard Signature65 Layout Additions ([#20776](https://github.com/qmk/qmk_firmware/pull/20776)) +* protoTypist Allison Layout Additions ([#20777](https://github.com/qmk/qmk_firmware/pull/20777)) +* Prototypist J-01 Rev1 Layout Additions ([#20778](https://github.com/qmk/qmk_firmware/pull/20778)) +* Protozoa Cassini Layout Additions ([#20779](https://github.com/qmk/qmk_firmware/pull/20779)) +* Protozoa P.01 Layout Additions ([#20781](https://github.com/qmk/qmk_firmware/pull/20781)) +* QwertleKeys Calice Layout Addition ([#20782](https://github.com/qmk/qmk_firmware/pull/20782)) +* Ramlord WITF Layout Touch-Up and Addition ([#20783](https://github.com/qmk/qmk_firmware/pull/20783)) +* Rart45: rename LAYOUT_all to LAYOUT ([#20784](https://github.com/qmk/qmk_firmware/pull/20784)) +* Rart60 Layout Additions ([#20785](https://github.com/qmk/qmk_firmware/pull/20785)) +* Rart67 Layout Additions ([#20786](https://github.com/qmk/qmk_firmware/pull/20786)) +* Rart67M: rename LAYOUT_all to LAYOUT ([#20787](https://github.com/qmk/qmk_firmware/pull/20787)) +* RART75 Layout Additions ([#20788](https://github.com/qmk/qmk_firmware/pull/20788)) +* RART75 Hotswap Layout Additions ([#20789](https://github.com/qmk/qmk_firmware/pull/20789)) +* RART75M: rename LAYOUT_all to LAYOUT ([#20790](https://github.com/qmk/qmk_firmware/pull/20790)) +* RART80 Hotswap Layout Additions ([#20791](https://github.com/qmk/qmk_firmware/pull/20791)) +* Rartand Layout Additions ([#20799](https://github.com/qmk/qmk_firmware/pull/20799)) +* Rartlice: rename LAYOUT_all to LAYOUT ([#20800](https://github.com/qmk/qmk_firmware/pull/20800)) +* Ratio65 Hotswap: rename LAYOUT_all to LAYOUT_65_ansi_blocker ([#20801](https://github.com/qmk/qmk_firmware/pull/20801)) +* Ratio65 Solder Layout Additions ([#20802](https://github.com/qmk/qmk_firmware/pull/20802)) +* Specifying the default board file is redundant ([#20807](https://github.com/qmk/qmk_firmware/pull/20807)) +* RGBKB Pan Layout Additions ([#20809](https://github.com/qmk/qmk_firmware/pull/20809)) +* saevus cor Layout Additions ([#20810](https://github.com/qmk/qmk_firmware/pull/20810)) +* Clean up trailing commas from info.json ([#20812](https://github.com/qmk/qmk_firmware/pull/20812)) +* Enable LTO on salicylic acid 7skb to reduce size ([#20813](https://github.com/qmk/qmk_firmware/pull/20813)) +* Reduce compiled size for mt64rgb's via keymap ([#20814](https://github.com/qmk/qmk_firmware/pull/20814)) +* Reduce compiled size for prototypist oceanographer's via keymap ([#20816](https://github.com/qmk/qmk_firmware/pull/20816)) +* Sauce Mild Layout Additions ([#20818](https://github.com/qmk/qmk_firmware/pull/20818)) +* VCL x SawnsProjects VCL65 Layout Additions ([#20819](https://github.com/qmk/qmk_firmware/pull/20819)) +* senselessclay had60 Layout Additions ([#20820](https://github.com/qmk/qmk_firmware/pull/20820)) +* Space Holdings Nebula12B ([#20821](https://github.com/qmk/qmk_firmware/pull/20821)) +* SmithRune Iron180 Layout Additions ([#20822](https://github.com/qmk/qmk_firmware/pull/20822)) +* Stello65 Beta Layout Additions and Clean-Up ([#20824](https://github.com/qmk/qmk_firmware/pull/20824)) +* Studio Kestra Nue Layout Additions ([#20825](https://github.com/qmk/qmk_firmware/pull/20825)) +* Switchplate Peripherals 910 Layout Additions ([#20827](https://github.com/qmk/qmk_firmware/pull/20827)) +* TKC California Layout Addition and Touch-Up ([#20829](https://github.com/qmk/qmk_firmware/pull/20829)) +* TKC M0lly Layout Additions ([#20830](https://github.com/qmk/qmk_firmware/pull/20830)) +* TKC TKL A/B87 Layout Additions ([#20831](https://github.com/qmk/qmk_firmware/pull/20831)) +* Viendi 8L Layout Additions ([#20832](https://github.com/qmk/qmk_firmware/pull/20832)) +* Viktus Smolka Layout Additions ([#20833](https://github.com/qmk/qmk_firmware/pull/20833)) +* Viktus SP111 Layout Additions ([#20834](https://github.com/qmk/qmk_firmware/pull/20834)) +* Viktus SP_Mini Layout Additions ([#20835](https://github.com/qmk/qmk_firmware/pull/20835)) +* W1-AT Layout Additions ([#20842](https://github.com/qmk/qmk_firmware/pull/20842)) +* Weirdo Geminate60 Layout Additions ([#20843](https://github.com/qmk/qmk_firmware/pull/20843)) +* Cypher rev5 Layout Additions ([#20844](https://github.com/qmk/qmk_firmware/pull/20844)) +* Prophet Layout Additions ([#20845](https://github.com/qmk/qmk_firmware/pull/20845)) +* Tidy up encoder_map directions ([#20847](https://github.com/qmk/qmk_firmware/pull/20847)) +* Rama Works Koyu Community Layout Support ([#20848](https://github.com/qmk/qmk_firmware/pull/20848)) +* Rama Works M65-B Community Layout Support ([#20850](https://github.com/qmk/qmk_firmware/pull/20850)) +* Rama Works M65-BX Community Layout Support ([#20851](https://github.com/qmk/qmk_firmware/pull/20851)) +* Rama Works U80-A Community Layout Support ([#20853](https://github.com/qmk/qmk_firmware/pull/20853)) +* Wilba Tech WT60-B Community Layout Support ([#20854](https://github.com/qmk/qmk_firmware/pull/20854)) +* Wilba Tech WT60-BX Layout Additions and Touch-Up ([#20855](https://github.com/qmk/qmk_firmware/pull/20855)) +* Wilba Tech WT60-C Community Layout Support ([#20858](https://github.com/qmk/qmk_firmware/pull/20858)) +* Wilba Tech WT60-D Layout Addition and Touch-Up ([#20859](https://github.com/qmk/qmk_firmware/pull/20859)) +* Wilba Tech WT60-G Community Layout Support ([#20860](https://github.com/qmk/qmk_firmware/pull/20860)) +* Wilba Tech WT60-G2 Community Layout Support ([#20861](https://github.com/qmk/qmk_firmware/pull/20861)) +* Wilba Tech WT60-H2: rename LAYOUT_all to LAYOUT_60_ansi_tsangan_split_rshift ([#20864](https://github.com/qmk/qmk_firmware/pull/20864)) +* Wilba Tech WT60-XT Layout Additions and Touch-Up ([#20865](https://github.com/qmk/qmk_firmware/pull/20865)) +* Wilba Tech WT65-A Community Layout Support and Touch-Up ([#20866](https://github.com/qmk/qmk_firmware/pull/20866)) +* Wilba Tech WT65-B Layout Addition and Touch-Up ([#20867](https://github.com/qmk/qmk_firmware/pull/20867)) +* Wilba Tech WT65-F Community Layout Support and Touch-Up ([#20869](https://github.com/qmk/qmk_firmware/pull/20869)) +* Wilba Tech WT65-FX Community Layout Support ([#20870](https://github.com/qmk/qmk_firmware/pull/20870)) +* Wilba Tech WT65-G Layout Additions and Touch-Up ([#20871](https://github.com/qmk/qmk_firmware/pull/20871)) +* Wilba Tech WT65-G2 Layout Additions and Touch-Up ([#20872](https://github.com/qmk/qmk_firmware/pull/20872)) +* Wilba Tech WT65-XT: rename LAYOUT_all to LAYOUT_65_xt_ansi_blocker_tsangan ([#20873](https://github.com/qmk/qmk_firmware/pull/20873)) +* Wilba Tech WT65-XTX Layout Additions and Touch-Up ([#20874](https://github.com/qmk/qmk_firmware/pull/20874)) +* Wilba Tech WT69-A Layout Addition and Touch-Up ([#20875](https://github.com/qmk/qmk_firmware/pull/20875)) +* Wilba Tech WT70-JB Layout Addition and Touch-Up ([#20876](https://github.com/qmk/qmk_firmware/pull/20876)) +* Wilba Tech WT75-A Layout Additions and Touch-Up ([#20877](https://github.com/qmk/qmk_firmware/pull/20877)) +* Wilba Tech WT75-B Layout Additions and Touch-Up ([#20878](https://github.com/qmk/qmk_firmware/pull/20878)) +* Wilba Tech WT75-C Layout Additions and Touch-Up ([#20879](https://github.com/qmk/qmk_firmware/pull/20879)) +* Wilba Tech WT80-G Layout Additions and Touch-Up ([#20880](https://github.com/qmk/qmk_firmware/pull/20880)) +* WinKeys Mini Winni: rename LAYOUT_all to LAYOUT_ortho_2x4 ([#20881](https://github.com/qmk/qmk_firmware/pull/20881)) +* Scarlet Bandana Layout Additions ([#20882](https://github.com/qmk/qmk_firmware/pull/20882)) +* Winkeyless B87 Community Layout Support ([#20884](https://github.com/qmk/qmk_firmware/pull/20884)) +* Xelus AkiS Layout Additions ([#20885](https://github.com/qmk/qmk_firmware/pull/20885)) +* Xelus Dharma Layout Additions ([#20886](https://github.com/qmk/qmk_firmware/pull/20886)) +* Xelus Kangaroo Layout Additions ([#20887](https://github.com/qmk/qmk_firmware/pull/20887)) +* Xelus La+ Layout Addition ([#20888](https://github.com/qmk/qmk_firmware/pull/20888)) +* Xelus Pachi Mini 32U4 Community Layout Support ([#20889](https://github.com/qmk/qmk_firmware/pull/20889)) +* Xelus Pachi rev1 Community Layout Support ([#20891](https://github.com/qmk/qmk_firmware/pull/20891)) +* Xelus Trinity XT TKL Layout Additions ([#20892](https://github.com/qmk/qmk_firmware/pull/20892)) +* Xelus Valor FRL TKL Layout Additions ([#20893](https://github.com/qmk/qmk_firmware/pull/20893)) +* YDKB Chili Community Layout Support ([#20895](https://github.com/qmk/qmk_firmware/pull/20895)) +* YDKB Grape Layout Additions ([#20899](https://github.com/qmk/qmk_firmware/pull/20899)) +* YMDK Wings Layout Addition ([#20900](https://github.com/qmk/qmk_firmware/pull/20900)) +* YMDK Wings Hotswap: rename LAYOUT_all to LAYOUT ([#20901](https://github.com/qmk/qmk_firmware/pull/20901)) +* YMDK YM68 Community Layout Support ([#20906](https://github.com/qmk/qmk_firmware/pull/20906)) +* Yugo-M Controller Layout Additions ([#20907](https://github.com/qmk/qmk_firmware/pull/20907)) +* Zicodia TKLFRLNRLMLAO Layout Addition ([#20908](https://github.com/qmk/qmk_firmware/pull/20908)) +* ZTBoards After Layout Addition ([#20912](https://github.com/qmk/qmk_firmware/pull/20912)) +* ZTBoards Noon Layout Addition ([#20913](https://github.com/qmk/qmk_firmware/pull/20913)) +* SawnsProjects Amber80 Solder Community Layout Support ([#20917](https://github.com/qmk/qmk_firmware/pull/20917)) +* Pearl Boards Atlas Layout Additions ([#20918](https://github.com/qmk/qmk_firmware/pull/20918)) +* Xiudi XD004: rename LAYOUT_all to LAYOUT_ortho_1x4 ([#20919](https://github.com/qmk/qmk_firmware/pull/20919)) +* Wilba Tech WT80-BC Community Layout Support ([#20920](https://github.com/qmk/qmk_firmware/pull/20920)) +* 4pplet Eagle Viper REP Rev B Community Layout Support ([#20921](https://github.com/qmk/qmk_firmware/pull/20921)) +* FR4Boards unix60 Layout Additions ([#20926](https://github.com/qmk/qmk_firmware/pull/20926)) +* MC-76K: rename LAYOUT_all to LAYOUT ([#20927](https://github.com/qmk/qmk_firmware/pull/20927)) +* Mechlovin Studio Jay60 Community Layout Support ([#20928](https://github.com/qmk/qmk_firmware/pull/20928)) +* MisterKnife Knife66 Layout Additions ([#20929](https://github.com/qmk/qmk_firmware/pull/20929)) +* MisterKnife Knife66 ISO Layout Additions II ([#20930](https://github.com/qmk/qmk_firmware/pull/20930)) +* 4pplet Waffling80 Community Layout Support and Touch-Up ([#20932](https://github.com/qmk/qmk_firmware/pull/20932)) +* Acheron Elongate Delta: rename LAYOUT_all to LAYOUT ([#20956](https://github.com/qmk/qmk_firmware/pull/20956)) +* ADPenrose Akemipad Layout Addition ([#20957](https://github.com/qmk/qmk_firmware/pull/20957)) +* ADPenrose Shisaku: rename LAYOUT_all to LAYOUT ([#20958](https://github.com/qmk/qmk_firmware/pull/20958)) +* AEBoards Aegis Layout Additions ([#20960](https://github.com/qmk/qmk_firmware/pull/20960)) +* rart/rart80:via: restore rules.mk after #20334 ([#21002](https://github.com/qmk/qmk_firmware/pull/21002)) +* Remove HHKB RN42 code ([#21007](https://github.com/qmk/qmk_firmware/pull/21007)) +* Move `thekey` to Drop vendor folder ([#21032](https://github.com/qmk/qmk_firmware/pull/21032)) + +Keyboard fixes: +* userspace/community layout fixes ([#19998](https://github.com/qmk/qmk_firmware/pull/19998)) +* Fix layout macro keys with no matrix position ([#20033](https://github.com/qmk/qmk_firmware/pull/20033)) +* Restore matrix pins for ep/40 ([#20083](https://github.com/qmk/qmk_firmware/pull/20083)) +* kbdfans/tiger80: remove duplicate keys in info.json ([#20148](https://github.com/qmk/qmk_firmware/pull/20148)) +* Fixup z70ultra — replace mis-removed file ([#20157](https://github.com/qmk/qmk_firmware/pull/20157)) +* Fixup CI build for F103C6 onekey. ([#20188](https://github.com/qmk/qmk_firmware/pull/20188)) +* Fix layouts containing keys with multiple matrix positions ([#20191](https://github.com/qmk/qmk_firmware/pull/20191)) +* Fix some more missing `#pragma once`s ([#20241](https://github.com/qmk/qmk_firmware/pull/20241)) +* Fixup CI build for `nack`. ([#20292](https://github.com/qmk/qmk_firmware/pull/20292)) +* Fixup Pointing device functions ([#20311](https://github.com/qmk/qmk_firmware/pull/20311)) +* Fix a handful of CLI errors ([#20321](https://github.com/qmk/qmk_firmware/pull/20321)) +* Fix API errors ([#20326](https://github.com/qmk/qmk_firmware/pull/20326)) +* Set up DEFAULT_FOLDER for primekb/meridian ([#20367](https://github.com/qmk/qmk_firmware/pull/20367)) +* Fix up via keymap builds. ([#20383](https://github.com/qmk/qmk_firmware/pull/20383)) +* Fix up via keymap builds. ([#20397](https://github.com/qmk/qmk_firmware/pull/20397)) +* Fix some missing QMK_KEYBOARD_H includes in user keymaps ([#20417](https://github.com/qmk/qmk_firmware/pull/20417)) +* Update ymdk/id75 config ([#20432](https://github.com/qmk/qmk_firmware/pull/20432)) +* Fix info.json LTO and format encoder definitions ([#20456](https://github.com/qmk/qmk_firmware/pull/20456)) +* Fixup dymium65 RGB Pin on develop ([#20473](https://github.com/qmk/qmk_firmware/pull/20473)) +* Fixup missing include in mxss `via` keymap ([#20475](https://github.com/qmk/qmk_firmware/pull/20475)) +* Fix nk plus ws2812 config ([#20524](https://github.com/qmk/qmk_firmware/pull/20524)) +* cannonkeys/ellipse_hs: correct layout macro references ([#20577](https://github.com/qmk/qmk_firmware/pull/20577)) +* Remove use of layout macros for `music_map` ([#20634](https://github.com/qmk/qmk_firmware/pull/20634)) +* Vertex/angle65 WS2812 pin fix ([#20653](https://github.com/qmk/qmk_firmware/pull/20653)) +* Fix ws2812 pin for phantagom boards ([#20670](https://github.com/qmk/qmk_firmware/pull/20670)) +* Fixup 1upkeyboards/pi50 ([#20733](https://github.com/qmk/qmk_firmware/pull/20733)) +* Fix `test_json2c_no_json()` ([#20756](https://github.com/qmk/qmk_firmware/pull/20756)) +* Fix mxss rgblight.c compilation issues ([#20804](https://github.com/qmk/qmk_firmware/pull/20804)) +* Fixup paladin64 ([#20805](https://github.com/qmk/qmk_firmware/pull/20805)) +* Fixup dogtag ([#20808](https://github.com/qmk/qmk_firmware/pull/20808)) +* Fixup zwag75 ([#20923](https://github.com/qmk/qmk_firmware/pull/20923)) +* Fixup latinpadble ([#20924](https://github.com/qmk/qmk_firmware/pull/20924)) +* Add missing layout data for a handful of boards ([#20931](https://github.com/qmk/qmk_firmware/pull/20931)) +* Fixup evo70 ([#20949](https://github.com/qmk/qmk_firmware/pull/20949)) +* Fixup Crkbd default keymap ([#20962](https://github.com/qmk/qmk_firmware/pull/20962)) +* Fix key display on Corne OLED ([#21044](https://github.com/qmk/qmk_firmware/pull/21044)) + +Others: +* Add layer-cycle example ([#19069](https://github.com/qmk/qmk_firmware/pull/19069)) +* Remove remnants of Vagrant. ([#20000](https://github.com/qmk/qmk_firmware/pull/20000)) +* Develop cleanup IS31FL3736 docs ([#20633](https://github.com/qmk/qmk_firmware/pull/20633)) +* Organise config/rules <-> info mappings ([#20723](https://github.com/qmk/qmk_firmware/pull/20723)) +* Add a change log for PR20584 ([#20998](https://github.com/qmk/qmk_firmware/pull/20998)) + +Bugs: +* Strip whitespace from CONVERT_TO variables ([#19948](https://github.com/qmk/qmk_firmware/pull/19948)) +* Check all rows have the correct number of columns when parsing `g_led_config` ([#19954](https://github.com/qmk/qmk_firmware/pull/19954)) +* Fix OSMs getting stuck ([#20034](https://github.com/qmk/qmk_firmware/pull/20034)) +* Fix rgblight layers when animations aren't enabled ([#20097](https://github.com/qmk/qmk_firmware/pull/20097)) +* Fixed split keyboard issue where custom LED indicators could activate incorrect LEDs (#20203) ([#20204](https://github.com/qmk/qmk_firmware/pull/20204)) +* Reduce _validate complexity ([#20274](https://github.com/qmk/qmk_firmware/pull/20274)) +* `qmk info`: account for ISO enter when calculating layout X offset ([#20325](https://github.com/qmk/qmk_firmware/pull/20325)) +* Disable specific warnings to mitigate compilation problems with `KEEP_INTERMEDIATES=yes`. ([#20339](https://github.com/qmk/qmk_firmware/pull/20339)) +* Fix compilation issue with Swap Hands and Encoder Map ([#20348](https://github.com/qmk/qmk_firmware/pull/20348)) +* Fix preprocessor condition for SPLIT_HAPTIC_ENABLE ([#20411](https://github.com/qmk/qmk_firmware/pull/20411)) +* Fix compilation issues with PS/2 driver on F4x1 controllers ([#20433](https://github.com/qmk/qmk_firmware/pull/20433)) +* Fix capital letters not getting sent with sendstring_swiss_fr.h ([#20515](https://github.com/qmk/qmk_firmware/pull/20515)) +* Duplicate board files for blok converter ([#20629](https://github.com/qmk/qmk_firmware/pull/20629)) +* Fix Mod-Tap combo regression ([#20669](https://github.com/qmk/qmk_firmware/pull/20669)) +* Revert use of legacy wear leveling driver now ChibiOS is fixed ([#20806](https://github.com/qmk/qmk_firmware/pull/20806)) +* Fix compilation error introduced by #20669 ([#20849](https://github.com/qmk/qmk_firmware/pull/20849)) +* Fix English word list retrieval in qmk generate-autocorrect-data ([#20915](https://github.com/qmk/qmk_firmware/pull/20915)) +* Improve keymap folder resolution ([#20981](https://github.com/qmk/qmk_firmware/pull/20981)) +* Fix issue with Repeat Key-Combo test ([#21005](https://github.com/qmk/qmk_firmware/pull/21005)) +* `qmk info` - Remove printing of "Keyboard Folder" ([#21033](https://github.com/qmk/qmk_firmware/pull/21033)) diff --git a/docs/ChangeLog/20230528/PR14996.md b/docs/ChangeLog/20230528/PR14996.md deleted file mode 100644 index d59b407e4c..0000000000 --- a/docs/ChangeLog/20230528/PR14996.md +++ /dev/null @@ -1,21 +0,0 @@ -# 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/docs/ChangeLog/20230528/PR20584.md b/docs/ChangeLog/20230528/PR20584.md deleted file mode 100644 index e9e49f5730..0000000000 --- a/docs/ChangeLog/20230528/PR20584.md +++ /dev/null @@ -1,3 +0,0 @@ -Two new boolean callback functions, `pre_process_record_kb` and `pre_process_record_user`, are added in this change. They are called at the beginning of `process_record`, right before `process_combo`. - -Similar to existing `*_kb` and `*_user` callback functions, returning `false` will halt further processing of key events. The `pre_process_record_user` function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, `pre_process_record_user` can capture the next key record of an input event that follows. That key record can be used to influence the [decision of the mod-tap](https://docs.qmk.fm/#/tap_hold) key that is currently undergoing quantum processing. diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index 919c443123..e660182c32 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -10,27 +10,25 @@ Practically, this means QMK merges the `develop` branch into the `master` branch ## What has been included in past Breaking Changes? +* [2023 May 28](ChangeLog/20230528.md) * [2023 Feb 26](ChangeLog/20230226.md) * [2022 Nov 26](ChangeLog/20221126.md) -* [2022 Aug 27](ChangeLog/20220827.md) -* [2022 May 28](ChangeLog/20220528.md) -* [2022 Feb 26](ChangeLog/20220226.md) * [Older Breaking Changes](breaking_changes_history.md) ## When is the next Breaking Change? -The next Breaking Change is scheduled for May 28, 2023. +The next Breaking Change is scheduled for August 27, 2023. ### Important Dates -* 2023 Feb 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. -* 2023 Apr 30 - `develop` closed to new PRs. -* 2023 Apr 30 - Call for testers. -* 2023 May 14 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes -* 2023 May 21 - `develop` is locked, only critical bugfix PRs merged. -* 2023 May 26 - `master` is locked, no PRs merged. -* 2023 May 28 - Merge `develop` to `master`. -* 2023 May 28 - `master` is unlocked. PRs can be merged again. +* 2023 May 28 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* 2023 Jul 30 - `develop` closed to new PRs. +* 2023 Jul 30 - Call for testers. +* 2023 Aug 13 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* 2023 Aug 20 - `develop` is locked, only critical bugfix PRs merged. +* 2023 Aug 25 - `master` is locked, no PRs merged. +* 2023 Aug 27 - Merge `develop` to `master`. +* 2023 Aug 27 - `master` is unlocked. PRs can be merged again. ## What changes will be included? @@ -50,7 +48,7 @@ Criteria for acceptance: Strongly suggested: -* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20221126`. +* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20230827`. * This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PRs ID. * One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability. diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index efc388985b..79f2899d2c 100644 --- a/docs/breaking_changes_history.md +++ b/docs/breaking_changes_history.md @@ -2,6 +2,7 @@ This page links to all previous changelogs from the QMK Breaking Changes process. +* [2023 May 28](ChangeLog/20230528.md) - version 0.21.0 * [2023 Feb 26](ChangeLog/20230226.md) - version 0.20.0 * [2022 Nov 26](ChangeLog/20221126.md) - version 0.19.0 * [2022 Aug 27](ChangeLog/20220827.md) - version 0.18.0 diff --git a/docs/breaking_changes_instructions.md b/docs/breaking_changes_instructions.md index d835671556..7bde4b6004 100644 --- a/docs/breaking_changes_instructions.md +++ b/docs/breaking_changes_instructions.md @@ -23,14 +23,6 @@ If it is determined that your submission is a breaking change, there are a few t If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code. -### Contribute a ChangeLog Entry - -We require submissions that go through the Breaking Change process to include a changelog entry. The entry should be a short summary of the changes your pull request makes – [each section here started as a changelog](ChangeLog/20190830.md "n.b. This should link to the 2019 Aug 30 Breaking Changes doc - @noroadsleft"). - -Your changelog should be located at `docs/ChangeLog/YYYYMMDD/PR####.md`, where `YYYYMMDD` is the date on which QMK's breaking change branch – usually named `develop` – will be merged into the `master` branch, and `####` is the number of your pull request. - -If your submission requires action on the part of users, your changelog should instruct users what action(s) must be taken, or link to a location that does so. - ### Document Your Changes Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog. diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index 6dc6c0000d..65584a9538 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -62,7 +62,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - valid maintainer - valid USB VID/PID and device version - displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering) - - `layout` definitions should include matrix positions, so that `LAYOUT` macros can be generated at build time + - `layout` definitions must include matrix positions, so that `LAYOUT` macros can be generated at build time - should use standard definitions if applicable - use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`) - If the keyboard only has a single electrical/switch layout: @@ -124,7 +124,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - hardware that's enabled at the keyboard level and requires configuration such as OLED displays or encoders should have basic functionality implemented here - `.h` - `#include "quantum.h"` appears at the top - - `LAYOUT` macros should be moved to `info.json` + - `LAYOUT` macros are no longer accepted and should instead be moved to `info.json` - keymap `config.h` - no duplication of `rules.mk` or `config.h` from keyboard - `keymaps/default/keymap.c` -- cgit v1.3.1