Consolidate modelm v2 (#14996)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
nuess0r 2023-05-27 15:12:36 +02:00 • committed by GitHub
commit f98f8eedf0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 293 additions and 105 deletions

View file

@ -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"
},

View file

@ -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

View file

@ -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.

View file

@ -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 <http://www./gnu.org/licenses/>.
*/
#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;
}

View file

@ -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}
]
}
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#pragma once
// place overrides here
/* Add combos */
#define COMBO_TERM 200

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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;
}
}

View file

@ -0,0 +1 @@
COMBO_ENABLE = yes # Reset combo

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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
),
};

View file

@ -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).

View file

@ -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

View file

@ -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.

View file

@ -0,0 +1,77 @@
/*
* Copyright 2020 Michael Schwingen
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
/* pins for external shift registers */
#define SR_LOAD_PIN B0
#define SR_CLK_PIN B1
#define SR_DIN_PIN B3
#define SR_DOUT_PIN B2
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
#define NORMAL_PRINT
//#define USER_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define DEBUG_MATRIX_SCAN_RATE
#define DYNAMIC_MACRO_NO_NESTING
#define MODELM_STATUS_LED E6
#define MODELM_LED1 B5
#define MODELM_LED2 B6
#define MODELM_LED3 D0
#if defined(KEYBOARD_ibm_model_m_mschwingen_led_wired)
# define MODELM_LED_CAPSLOCK MODELM_LED1
# define MODELM_LED_SCROLLOCK MODELM_LED2
# define MODELM_LED_NUMLOCK MODELM_LED3
#elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ffc)
# define MODELM_LED_CAPSLOCK MODELM_LED2
# define MODELM_LED_SCROLLOCK MODELM_LED3
# define MODELM_LED_NUMLOCK MODELM_LED1
#elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ws2812)
#else
# error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set!
#endif
// 3* WS2812 LEDs instead of singlecolor GPIO LEDs
#define RGBLED_NUM 3
// disabled, needs PCB patch.
//#define AUDIO_PIN C6
//#define NO_MUSIC_MODE

View file

@ -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}
]
}
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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;
}

View file

@ -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).

View file

@ -0,0 +1 @@

View file

@ -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).

View file

@ -0,0 +1 @@

View file

@ -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).

Some files were not shown because too many files have changed in this diff Show more