diff options
| author | nopunin10did <w.alex.ronke@gmail.com> | 2022-01-10 15:36:02 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-10 12:36:02 -0800 |
| commit | 2dd7242e999c10341f42bb75bcad7ec12b8ed9ce (patch) | |
| tree | 966c5566d85ef3db5376c599e7d07aaf44a37991 | |
| parent | 0e11f8ec202fb5c91b6054705a40070a1c1cec42 (diff) | |
| download | qmk_firmware-2dd7242e999c10341f42bb75bcad7ec12b8ed9ce.tar.gz qmk_firmware-2dd7242e999c10341f42bb75bcad7ec12b8ed9ce.zip | |
[Keyboard] Kastenwagen 1840 and Kastenwagen 48 (#13565)
* cleaning up
* deleting to undelete
* Stub out defaults
* Jabberwocky firmware WIP
* Stubbing out keymap spacing
* Default keymap and layout updates
* start stubbing out JSON for configurator
* more WIP
* Update jabberwocky.h
* Add Readme
* Apply suggestions from code review
* Fix layout capitalization
* Updates to personal and default keymaps
* Add instructions for jumping the bootloader
* Update keyboards/nopunin10did/jabberwocky/rules.mk
* Add easier ctrl-alt-del to my keymap
* Start stubbing out KW firmware
* More firmware and keymap stuff
* Fix compile error
* Filling out other layers in default keymap
* Update layout JSON and finish default layouts
* Add rotary and LED code
* Add VIA support (first draft)
* Move VIA compatibility to VIA-specific branch
* Fix readme formatting
* Fix state count issue in LED code
* Fix an erroneous change to a Jabberwocky file
* Default LEDs to on.
* Apply suggestions from code review
* Delete kastenwagen.json
* Update keyboards/nopunin10did/kastenwagen/config.h
* Apply suggestions from code review
* Apply suggestions from noroadsleft code review
* Update image in the readme
* Split 1840 & 48 into two boards (part 1)
* Splitting into two keyboards (part 2)
17 files changed, 930 insertions, 0 deletions
diff --git a/keyboards/nopunin10did/kastenwagen1840/config.h b/keyboards/nopunin10did/kastenwagen1840/config.h new file mode 100644 index 000000000..a9926aded --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/config.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "config_common.h" | ||
| 20 | |||
| 21 | /* USB Device descriptor parameter */ | ||
| 22 | #define VENDOR_ID 0x4E50 // "NP" | ||
| 23 | #define PRODUCT_ID 0x4B57 // "KW" | ||
| 24 | #define DEVICE_VER 0x0001 | ||
| 25 | #define MANUFACTURER NoPunIn10Did | ||
| 26 | #define PRODUCT Kastenwagen 1840 | ||
| 27 | |||
| 28 | /* key matrix size */ | ||
| 29 | #define MATRIX_ROWS 8 | ||
| 30 | #define MATRIX_COLS 9 | ||
| 31 | |||
| 32 | /* key matrix pins */ | ||
| 33 | #define MATRIX_ROW_PINS { B4, B5, B7, D5, C7, F1, F0, B6 } | ||
| 34 | #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6, D7 } | ||
| 35 | #define UNUSED_PINS | ||
| 36 | |||
| 37 | /* Indicator LEDs */ | ||
| 38 | #define LED_INDICATOR_TOP B0 | ||
| 39 | #define LED_INDICATOR_MID D4 | ||
| 40 | #define LED_INDICATOR_BOT C6 | ||
| 41 | |||
| 42 | /* Rotary encoder rotation pins */ | ||
| 43 | #define ENCODERS_PAD_A { D0, D3 } | ||
| 44 | #define ENCODERS_PAD_B { D1, D2 } | ||
| 45 | |||
| 46 | |||
| 47 | /* COL2ROW or ROW2COL */ | ||
| 48 | #define DIODE_DIRECTION COL2ROW | ||
| 49 | |||
| 50 | /* Set 0 if debouncing isn't needed */ | ||
| 51 | #define DEBOUNCE 5 | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/info.json b/keyboards/nopunin10did/kastenwagen1840/info.json new file mode 100644 index 000000000..63b401f8e --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/info.json | |||
| @@ -0,0 +1,77 @@ | |||
| 1 | { | ||
| 2 | "keyboard_name": "Kastenwagen 1840", | ||
| 3 | "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen1840", | ||
| 4 | "maintainer": "NoPunIn10Did", | ||
| 5 | "manufacturer": "NoPunIn10Did", | ||
| 6 | "layouts": { | ||
| 7 | "LAYOUT_1840": { | ||
| 8 | "layout": [ | ||
| 9 | {"x":0 , "y":0, "label":"Esc"}, | ||
| 10 | {"x":1 , "y":0, "label":"Q"}, | ||
| 11 | {"x":2 , "y":0, "label":"W"}, | ||
| 12 | {"x":3 , "y":0, "label":"E"}, | ||
| 13 | {"x":4 , "y":0, "label":"R"}, | ||
| 14 | {"x":5 , "y":0, "label":"T"}, | ||
| 15 | {"x":6 , "y":0, "label":"Y"}, | ||
| 16 | {"x":7 , "y":0, "label":"U"}, | ||
| 17 | {"x":8 , "y":0, "label":"I"}, | ||
| 18 | {"x":9 , "y":0, "label":"O"}, | ||
| 19 | {"x":10 , "y":0, "label":"P"}, | ||
| 20 | {"x":11 , "y":0, "label":"L Bracket"}, | ||
| 21 | {"x":12 , "y":0, "label":"Backspace", "w":1.75}, | ||
| 22 | {"x":14.25, "y":0, "label":"P-7"}, | ||
| 23 | {"x":15.25, "y":0, "label":"P-8"}, | ||
| 24 | {"x":16.25, "y":0, "label":"P-9"}, | ||
| 25 | {"x":17.25, "y":0, "label":"P-Minus"}, | ||
| 26 | {"x":0 , "y":1, "label":"Tab", "w":1.25}, | ||
| 27 | {"x":1.25, "y":1, "label":"A"}, | ||
| 28 | {"x":2.25, "y":1, "label":"S"}, | ||
| 29 | {"x":3.25, "y":1, "label":"D"}, | ||
| 30 | {"x":4.25, "y":1, "label":"F"}, | ||
| 31 | {"x":5.25, "y":1, "label":"G"}, | ||
| 32 | {"x":6.25, "y":1, "label":"H"}, | ||
| 33 | {"x":7.25, "y":1, "label":"J"}, | ||
| 34 | {"x":8.25, "y":1, "label":"K"}, | ||
| 35 | {"x":9.25, "y":1, "label":"L"}, | ||
| 36 | {"x":10.25, "y":1, "label":"Semicolon"}, | ||
| 37 | {"x":11.25, "y":1, "label":"Quote"}, | ||
| 38 | {"x":12.25, "y":1, "label":"Enter", "w":1.5}, | ||
| 39 | {"x":14.25, "y":1, "label":"P-4"}, | ||
| 40 | {"x":15.25, "y":1, "label":"P-5"}, | ||
| 41 | {"x":16.25, "y":1, "label":"P-6"}, | ||
| 42 | {"x":17.25, "y":1, "label":"P-Plus"}, | ||
| 43 | {"x":0 , "y":2, "label":"Left Shift", "w":1.75}, | ||
| 44 | {"x":1.75, "y":2, "label":"Z"}, | ||
| 45 | {"x":2.75, "y":2, "label":"X"}, | ||
| 46 | {"x":3.75, "y":2, "label":"C"}, | ||
| 47 | {"x":4.75, "y":2, "label":"V"}, | ||
| 48 | {"x":5.75, "y":2, "label":"B"}, | ||
| 49 | {"x":6.75, "y":2, "label":"N"}, | ||
| 50 | {"x":7.75, "y":2, "label":"M"}, | ||
| 51 | {"x":8.75, "y":2, "label":"Comma"}, | ||
| 52 | {"x":9.75, "y":2, "label":"Period"}, | ||
| 53 | {"x":10.75, "y":2, "label":"Slash"}, | ||
| 54 | {"x":11.75, "y":2, "label":"Right Shift", "w":1.25}, | ||
| 55 | {"x":13.125,"y":2.125,"label":"Up"}, | ||
| 56 | {"x":14.25, "y":2, "label":"P-1"}, | ||
| 57 | {"x":15.25, "y":2, "label":"P-2"}, | ||
| 58 | {"x":16.25, "y":2, "label":"P-3"}, | ||
| 59 | {"x":17.25, "y":2, "label":"P-Mult"}, | ||
| 60 | {"x":0 , "y":3, "label":"Left Ctrl", "w":1.25}, | ||
| 61 | {"x":1.25 , "y":3, "label":"Left Alt", "w":1.25}, | ||
| 62 | {"x":2.5 , "y":3, "label":"MO(2)"}, | ||
| 63 | {"x":3.5 , "y":3, "label":"Space", "w":2.75}, | ||
| 64 | {"x":6.25 , "y":3, "label":"Space", "w":2.25}, | ||
| 65 | {"x":8.5 , "y":3, "label":"MO(3)"}, | ||
| 66 | {"x":9.5 , "y":3, "label":"R Win / Alt Gr", "w":1.25}, | ||
| 67 | {"x":10.75, "y":3, "label":"MO(1)", "w":1.25}, | ||
| 68 | {"x":12.125,"y":3.125,"label":"Left"}, | ||
| 69 | {"x":13.125,"y":3.125,"label":"Down"}, | ||
| 70 | {"x":14.125,"y":3.125,"label":"Right"}, | ||
| 71 | {"x":15.25 ,"y":3, "label":"P-0"}, | ||
| 72 | {"x":16.25 ,"y":3, "label":"P-Dot"}, | ||
| 73 | {"x":17.25 ,"y":3, "label":"P-Enter"} | ||
| 74 | ] | ||
| 75 | } | ||
| 76 | } | ||
| 77 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c new file mode 100644 index 000000000..a54b55740 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include "kastenwagen1840.h" | ||
| 18 | |||
| 19 | #ifndef LAYER_LED_DISABLE | ||
| 20 | |||
| 21 | void keyboard_pre_init_kb(void) { | ||
| 22 | setPinOutput(LED_INDICATOR_TOP); | ||
| 23 | setPinOutput(LED_INDICATOR_MID); | ||
| 24 | setPinOutput(LED_INDICATOR_BOT); | ||
| 25 | keyboard_pre_init_user(); | ||
| 26 | } | ||
| 27 | |||
| 28 | __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { | ||
| 29 | writePinHigh(LED_INDICATOR_TOP); | ||
| 30 | writePinHigh(LED_INDICATOR_MID); | ||
| 31 | writePinHigh(LED_INDICATOR_BOT); | ||
| 32 | |||
| 33 | switch(get_highest_layer(state) % 4) { | ||
| 34 | case 1: | ||
| 35 | writePinLow(LED_INDICATOR_TOP); | ||
| 36 | writePinLow(LED_INDICATOR_MID); | ||
| 37 | break; | ||
| 38 | case 2: | ||
| 39 | writePinLow(LED_INDICATOR_TOP); | ||
| 40 | writePinLow(LED_INDICATOR_BOT); | ||
| 41 | break; | ||
| 42 | case 3: | ||
| 43 | writePinLow(LED_INDICATOR_MID); | ||
| 44 | writePinLow(LED_INDICATOR_BOT); | ||
| 45 | break; | ||
| 46 | } | ||
| 47 | return state; | ||
| 48 | } | ||
| 49 | |||
| 50 | #endif | ||
| 51 | |||
| 52 | bool encoder_update_kb(uint8_t index, bool clockwise) { | ||
| 53 | if (!encoder_update_user(index, clockwise)) { return false; } | ||
| 54 | if (clockwise) { | ||
| 55 | tap_code(KC_PGUP); | ||
| 56 | } else { | ||
| 57 | tap_code(KC_PGUP); | ||
| 58 | } | ||
| 59 | return true; | ||
| 60 | }; | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h new file mode 100644 index 000000000..b06cd3596 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "quantum.h" | ||
| 20 | |||
| 21 | |||
| 22 | #define LAYOUT_1840( \ | ||
| 23 | K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , K171 , K180 , K181 , \ | ||
| 24 | K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , K273 , K282 , K283 , \ | ||
| 25 | K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , K375 , K384 , K385 , \ | ||
| 26 | K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 , K477 , K486 , K487 \ | ||
| 27 | ) \ | ||
| 28 | { \ | ||
| 29 | { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 , K180 }, \ | ||
| 30 | { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, K171 , K181 }, \ | ||
| 31 | { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 , K282 }, \ | ||
| 32 | { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, K273 , K283 }, \ | ||
| 33 | { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 , K384 }, \ | ||
| 34 | { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, K375 , K385 }, \ | ||
| 35 | { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 , K486 }, \ | ||
| 36 | { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , K477 , K487 } \ | ||
| 37 | } | ||
| 38 | |||
| 39 | #define LAYOUT_48( \ | ||
| 40 | K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , \ | ||
| 41 | K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , \ | ||
| 42 | K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , \ | ||
| 43 | K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 \ | ||
| 44 | ) \ | ||
| 45 | { \ | ||
| 46 | { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 }, \ | ||
| 47 | { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, KC_NO }, \ | ||
| 48 | { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 }, \ | ||
| 49 | { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, KC_NO }, \ | ||
| 50 | { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 }, \ | ||
| 51 | { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, KC_NO }, \ | ||
| 52 | { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 }, \ | ||
| 53 | { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , KC_NO } \ | ||
| 54 | } \ No newline at end of file | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c b/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c new file mode 100644 index 000000000..b9e9ad151 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c | |||
| @@ -0,0 +1,94 @@ | |||
| 1 | /* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | |||
| 19 | #define L2_SPC LT(2,KC_SPC) | ||
| 20 | #define L3_SPC LT(3,KC_SPC) | ||
| 21 | #define L3_PENT LT(3,KC_PENT) | ||
| 22 | #define RWINALT RALT_T(KC_RGUI) | ||
| 23 | #define ISO_LT KC_NUBS | ||
| 24 | #define ISO_GT LSFT(KC_NUBS) | ||
| 25 | |||
| 26 | bool is_alt_tab_active = false; | ||
| 27 | uint16_t alt_tab_timer = 0; | ||
| 28 | |||
| 29 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 30 | |||
| 31 | [0] = LAYOUT_1840( | ||
| 32 | |||
| 33 | KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS, | ||
| 34 | KC_TAB ,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_PPLS, | ||
| 35 | KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_P1 ,KC_P2 ,KC_P3 ,KC_PAST, | ||
| 36 | KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT,KC_P0 ,KC_PDOT,L3_PENT | ||
| 37 | ), | ||
| 38 | [1] = LAYOUT_1840( | ||
| 39 | RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_HOME,XXXXXXX,KC_PGUP,XXXXXXX, | ||
| 40 | KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , XXXXXXX,XXXXXXX,XXXXXXX,KC_PAST, | ||
| 41 | _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,XXXXXXX,KC_PGDN,KC_PSLS, | ||
| 42 | KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END ,KC_INS ,KC_DEL ,KC_EQL | ||
| 43 | ), | ||
| 44 | [2] = LAYOUT_1840( | ||
| 45 | 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 , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 46 | KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 47 | _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 48 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 49 | ), | ||
| 50 | [3] = LAYOUT_1840( | ||
| 51 | KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , KC_NLCK,KC_PSLS,KC_PAST,XXXXXXX, | ||
| 52 | _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX, | ||
| 53 | _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 54 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ | ||
| 55 | ) | ||
| 56 | }; | ||
| 57 | |||
| 58 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
| 59 | |||
| 60 | if (index == 0) { | ||
| 61 | if (clockwise) { | ||
| 62 | tap_code(KC_VOLU); | ||
| 63 | } | ||
| 64 | else { | ||
| 65 | tap_code(KC_VOLD); | ||
| 66 | } | ||
| 67 | } | ||
| 68 | else if (index == 1) { | ||
| 69 | if (clockwise) { | ||
| 70 | if (!is_alt_tab_active) { | ||
| 71 | is_alt_tab_active = true; | ||
| 72 | register_code(KC_LALT); | ||
| 73 | } | ||
| 74 | alt_tab_timer = timer_read(); | ||
| 75 | tap_code16(KC_TAB); | ||
| 76 | } | ||
| 77 | else { | ||
| 78 | alt_tab_timer = timer_read(); | ||
| 79 | tap_code16(S(KC_TAB)); | ||
| 80 | } | ||
| 81 | } | ||
| 82 | |||
| 83 | return false; | ||
| 84 | } | ||
| 85 | |||
| 86 | void matrix_scan_user(void) { | ||
| 87 | |||
| 88 | if (is_alt_tab_active) { | ||
| 89 | if (timer_elapsed(alt_tab_timer) > 1250) { | ||
| 90 | unregister_code(KC_LALT); | ||
| 91 | is_alt_tab_active = false; | ||
| 92 | } | ||
| 93 | } | ||
| 94 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/default48/keymap.c b/keyboards/nopunin10did/kastenwagen1840/keymaps/default48/keymap.c new file mode 100644 index 000000000..ca6b66d59 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/default48/keymap.c | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | |||
| 19 | #define L2_SPC LT(2,KC_SPC) | ||
| 20 | #define L3_SPC LT(3,KC_SPC) | ||
| 21 | #define RWINALT RALT_T(KC_RGUI) | ||
| 22 | #define ISO_LT KC_NUBS | ||
| 23 | #define ISO_GT LSFT(KC_NUBS) | ||
| 24 | |||
| 25 | bool is_alt_tab_active = false; | ||
| 26 | uint16_t alt_tab_timer = 0; | ||
| 27 | |||
| 28 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 29 | |||
| 30 | [0] = LAYOUT_48( | ||
| 31 | |||
| 32 | KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_DEL , | ||
| 33 | KC_TAB ,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_PGUP, | ||
| 34 | KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_PGDN, | ||
| 35 | KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT | ||
| 36 | ), | ||
| 37 | [1] = LAYOUT_48( | ||
| 38 | RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_INS , | ||
| 39 | KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME, | ||
| 40 | _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END , | ||
| 41 | KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END | ||
| 42 | ), | ||
| 43 | [2] = LAYOUT_48( | ||
| 44 | 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 , XXXXXXX, | ||
| 45 | KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX, | ||
| 46 | _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, | ||
| 47 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 48 | ), | ||
| 49 | [3] = LAYOUT_48( | ||
| 50 | KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , XXXXXXX, | ||
| 51 | _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX, | ||
| 52 | _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, | ||
| 53 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 54 | ) | ||
| 55 | }; | ||
| 56 | |||
| 57 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
| 58 | |||
| 59 | if (index == 0) { | ||
| 60 | if (clockwise) { | ||
| 61 | tap_code(KC_VOLU); | ||
| 62 | } | ||
| 63 | else { | ||
| 64 | tap_code(KC_VOLD); | ||
| 65 | } | ||
| 66 | } | ||
| 67 | else if (index == 1) { | ||
| 68 | if (clockwise) { | ||
| 69 | if (!is_alt_tab_active) { | ||
| 70 | is_alt_tab_active = true; | ||
| 71 | register_code(KC_LALT); | ||
| 72 | } | ||
| 73 | alt_tab_timer = timer_read(); | ||
| 74 | tap_code16(KC_TAB); | ||
| 75 | } | ||
| 76 | else { | ||
| 77 | alt_tab_timer = timer_read(); | ||
| 78 | tap_code16(S(KC_TAB)); | ||
| 79 | } | ||
| 80 | } | ||
| 81 | |||
| 82 | return false; | ||
| 83 | } | ||
| 84 | |||
| 85 | void matrix_scan_user(void) { | ||
| 86 | |||
| 87 | if (is_alt_tab_active) { | ||
| 88 | if (timer_elapsed(alt_tab_timer) > 1250) { | ||
| 89 | unregister_code(KC_LALT); | ||
| 90 | is_alt_tab_active = false; | ||
| 91 | } | ||
| 92 | } | ||
| 93 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c new file mode 100644 index 000000000..b9e9ad151 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c | |||
| @@ -0,0 +1,94 @@ | |||
| 1 | /* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | |||
| 19 | #define L2_SPC LT(2,KC_SPC) | ||
| 20 | #define L3_SPC LT(3,KC_SPC) | ||
| 21 | #define L3_PENT LT(3,KC_PENT) | ||
| 22 | #define RWINALT RALT_T(KC_RGUI) | ||
| 23 | #define ISO_LT KC_NUBS | ||
| 24 | #define ISO_GT LSFT(KC_NUBS) | ||
| 25 | |||
| 26 | bool is_alt_tab_active = false; | ||
| 27 | uint16_t alt_tab_timer = 0; | ||
| 28 | |||
| 29 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 30 | |||
| 31 | [0] = LAYOUT_1840( | ||
| 32 | |||
| 33 | KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS, | ||
| 34 | KC_TAB ,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_PPLS, | ||
| 35 | KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_P1 ,KC_P2 ,KC_P3 ,KC_PAST, | ||
| 36 | KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT,KC_P0 ,KC_PDOT,L3_PENT | ||
| 37 | ), | ||
| 38 | [1] = LAYOUT_1840( | ||
| 39 | RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_HOME,XXXXXXX,KC_PGUP,XXXXXXX, | ||
| 40 | KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , XXXXXXX,XXXXXXX,XXXXXXX,KC_PAST, | ||
| 41 | _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,XXXXXXX,KC_PGDN,KC_PSLS, | ||
| 42 | KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END ,KC_INS ,KC_DEL ,KC_EQL | ||
| 43 | ), | ||
| 44 | [2] = LAYOUT_1840( | ||
| 45 | 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 , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 46 | KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 47 | _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 48 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 49 | ), | ||
| 50 | [3] = LAYOUT_1840( | ||
| 51 | KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , KC_NLCK,KC_PSLS,KC_PAST,XXXXXXX, | ||
| 52 | _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX, | ||
| 53 | _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, | ||
| 54 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ | ||
| 55 | ) | ||
| 56 | }; | ||
| 57 | |||
| 58 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
| 59 | |||
| 60 | if (index == 0) { | ||
| 61 | if (clockwise) { | ||
| 62 | tap_code(KC_VOLU); | ||
| 63 | } | ||
| 64 | else { | ||
| 65 | tap_code(KC_VOLD); | ||
| 66 | } | ||
| 67 | } | ||
| 68 | else if (index == 1) { | ||
| 69 | if (clockwise) { | ||
| 70 | if (!is_alt_tab_active) { | ||
| 71 | is_alt_tab_active = true; | ||
| 72 | register_code(KC_LALT); | ||
| 73 | } | ||
| 74 | alt_tab_timer = timer_read(); | ||
| 75 | tap_code16(KC_TAB); | ||
| 76 | } | ||
| 77 | else { | ||
| 78 | alt_tab_timer = timer_read(); | ||
| 79 | tap_code16(S(KC_TAB)); | ||
| 80 | } | ||
| 81 | } | ||
| 82 | |||
| 83 | return false; | ||
| 84 | } | ||
| 85 | |||
| 86 | void matrix_scan_user(void) { | ||
| 87 | |||
| 88 | if (is_alt_tab_active) { | ||
| 89 | if (timer_elapsed(alt_tab_timer) > 1250) { | ||
| 90 | unregister_code(KC_LALT); | ||
| 91 | is_alt_tab_active = false; | ||
| 92 | } | ||
| 93 | } | ||
| 94 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk new file mode 100644 index 000000000..43061db1d --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | VIA_ENABLE = yes | ||
| 2 | LTO_ENABLE = yes \ No newline at end of file | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/readme.md b/keyboards/nopunin10did/kastenwagen1840/readme.md new file mode 100644 index 000000000..e70890b48 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/readme.md | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | # Kastenwagen 1840 | ||
| 2 | |||
| 3 |  | ||
| 4 | |||
| 5 | Kastenwagen 1840 is a 40% keyboard with a mini-numpad and dedicated arrows. The main alpha block is 13.75u long, allowing for more dedicated punctuation keys to be paired with common Minivan-like mod keys. | ||
| 6 | |||
| 7 | A second model of Kastenwagen, the [Kastenwagen 48](https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48), is similar but replaces the numpad with a three-key macro column. | ||
| 8 | |||
| 9 | Please note that the Kastenwagen 1840 via-compatible keymap firmware is also compatible with the Kastenwagen 48. The Kastenwagen 48 does not have a dedicated via-compatible firmware. | ||
| 10 | |||
| 11 | For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w). | ||
| 12 | |||
| 13 | * Keyboard Maintainer: [Alex Ronke](diplomacyvariants.wordpress.com), also known as NoPunIn10Did. | ||
| 14 | * Hardware Supported: Kastenwagen 1840 & 48 (2021 June) | ||
| 15 | * Hardware Availability: Currently by request only | ||
| 16 | |||
| 17 | To jump the bootloader, either: | ||
| 18 | * If loaded with the default layout, use Function-Escape *(the function button is the farthest righthand 1.25u on the bottom row)* **OR** | ||
| 19 | * Use the physical reset switch on the Elite C **OR** | ||
| 20 | * Briefly jump the Reset and Ground pins of the Elite C | ||
| 21 | |||
| 22 | Make example for the 1840 model (after setting up your build environment): | ||
| 23 | |||
| 24 | make nopunin10did/kastenwagen1840:default | ||
| 25 | |||
| 26 | Make example for the 48 model: | ||
| 27 | |||
| 28 | make nopunin10did/kastenwagen48:default | ||
| 29 | |||
| 30 | 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). | ||
| 31 | |||
| 32 |  \ No newline at end of file | ||
diff --git a/keyboards/nopunin10did/kastenwagen1840/rules.mk b/keyboards/nopunin10did/kastenwagen1840/rules.mk new file mode 100644 index 000000000..61eb7eafb --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen1840/rules.mk | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | # MCU name | ||
| 2 | MCU = atmega32u4 | ||
| 3 | |||
| 4 | # Bootloader selection | ||
| 5 | BOOTLOADER = atmel-dfu | ||
| 6 | |||
| 7 | # Build Options | ||
| 8 | # change yes to no to disable | ||
| 9 | # | ||
| 10 | BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | ||
| 11 | MOUSEKEY_ENABLE = yes # Mouse keys | ||
| 12 | EXTRAKEY_ENABLE = yes # Audio control and System control | ||
| 13 | CONSOLE_ENABLE = no # Console for debug | ||
| 14 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 15 | NKRO_ENABLE = yes # Enable N-Key Rollover | ||
| 16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
| 17 | RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | ||
| 18 | AUDIO_ENABLE = no # Audio output | ||
| 19 | |||
| 20 | ENCODER_ENABLE = yes # Enable rotary encoder input | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/config.h b/keyboards/nopunin10did/kastenwagen48/config.h new file mode 100644 index 000000000..f88a630cf --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/config.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "config_common.h" | ||
| 20 | |||
| 21 | /* USB Device descriptor parameter */ | ||
| 22 | #define VENDOR_ID 0x4E50 // "NP" | ||
| 23 | #define PRODUCT_ID 0x4B30 // Hex for "K" and 48 | ||
| 24 | #define DEVICE_VER 0x0001 | ||
| 25 | #define MANUFACTURER NoPunIn10Did | ||
| 26 | #define PRODUCT Kastenwagen 48 | ||
| 27 | |||
| 28 | /* key matrix size */ | ||
| 29 | #define MATRIX_ROWS 8 | ||
| 30 | #define MATRIX_COLS 8 | ||
| 31 | |||
| 32 | /* key matrix pins */ | ||
| 33 | #define MATRIX_ROW_PINS { B4, B5, B7, D5, C7, F1, F0, B6 } | ||
| 34 | #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 } | ||
| 35 | #define UNUSED_PINS | ||
| 36 | |||
| 37 | /* Indicator LEDs */ | ||
| 38 | #define LED_INDICATOR_TOP B0 | ||
| 39 | #define LED_INDICATOR_MID D4 | ||
| 40 | #define LED_INDICATOR_BOT C6 | ||
| 41 | |||
| 42 | /* Rotary encoder rotation pins */ | ||
| 43 | #define ENCODERS_PAD_A { D0, D3 } | ||
| 44 | #define ENCODERS_PAD_B { D1, D2 } | ||
| 45 | |||
| 46 | |||
| 47 | /* COL2ROW or ROW2COL */ | ||
| 48 | #define DIODE_DIRECTION COL2ROW | ||
| 49 | |||
| 50 | /* Set 0 if debouncing isn't needed */ | ||
| 51 | #define DEBOUNCE 5 | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/info.json b/keyboards/nopunin10did/kastenwagen48/info.json new file mode 100644 index 000000000..bccfbeb36 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/info.json | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | { | ||
| 2 | "keyboard_name": "Kastenwagen 48", | ||
| 3 | "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48", | ||
| 4 | "maintainer": "NoPunIn10Did", | ||
| 5 | "manufacturer": "NoPunIn10Did", | ||
| 6 | "layouts": { | ||
| 7 | "LAYOUT_48": { | ||
| 8 | "layout": [ | ||
| 9 | {"x":0 , "y":0, "label":"Esc"}, | ||
| 10 | {"x":1 , "y":0, "label":"Q"}, | ||
| 11 | {"x":2 , "y":0, "label":"W"}, | ||
| 12 | {"x":3 , "y":0, "label":"E"}, | ||
| 13 | {"x":4 , "y":0, "label":"R"}, | ||
| 14 | {"x":5 , "y":0, "label":"T"}, | ||
| 15 | {"x":6 , "y":0, "label":"Y"}, | ||
| 16 | {"x":7 , "y":0, "label":"U"}, | ||
| 17 | {"x":8 , "y":0, "label":"I"}, | ||
| 18 | {"x":9 , "y":0, "label":"O"}, | ||
| 19 | {"x":10 , "y":0, "label":"P"}, | ||
| 20 | {"x":11 , "y":0, "label":"L Bracket"}, | ||
| 21 | {"x":12 , "y":0, "label":"Backspace", "w":1.75}, | ||
| 22 | {"x":14.25, "y":0, "label":"Delete"}, | ||
| 23 | {"x":0 , "y":1, "label":"Tab", "w":1.25}, | ||
| 24 | {"x":1.25, "y":1, "label":"A"}, | ||
| 25 | {"x":2.25, "y":1, "label":"S"}, | ||
| 26 | {"x":3.25, "y":1, "label":"D"}, | ||
| 27 | {"x":4.25, "y":1, "label":"F"}, | ||
| 28 | {"x":5.25, "y":1, "label":"G"}, | ||
| 29 | {"x":6.25, "y":1, "label":"H"}, | ||
| 30 | {"x":7.25, "y":1, "label":"J"}, | ||
| 31 | {"x":8.25, "y":1, "label":"K"}, | ||
| 32 | {"x":9.25, "y":1, "label":"L"}, | ||
| 33 | {"x":10.25, "y":1, "label":"Semicolon"}, | ||
| 34 | {"x":11.25, "y":1, "label":"Quote"}, | ||
| 35 | {"x":12.25, "y":1, "label":"Enter", "w":1.5}, | ||
| 36 | {"x":14.25, "y":1, "label":"Pg Up"}, | ||
| 37 | {"x":0 , "y":2, "label":"Left Shift", "w":1.75}, | ||
| 38 | {"x":1.75, "y":2, "label":"Z"}, | ||
| 39 | {"x":2.75, "y":2, "label":"X"}, | ||
| 40 | {"x":3.75, "y":2, "label":"C"}, | ||
| 41 | {"x":4.75, "y":2, "label":"V"}, | ||
| 42 | {"x":5.75, "y":2, "label":"B"}, | ||
| 43 | {"x":6.75, "y":2, "label":"N"}, | ||
| 44 | {"x":7.75, "y":2, "label":"M"}, | ||
| 45 | {"x":8.75, "y":2, "label":"Comma"}, | ||
| 46 | {"x":9.75, "y":2, "label":"Period"}, | ||
| 47 | {"x":10.75, "y":2, "label":"Slash"}, | ||
| 48 | {"x":11.75, "y":2, "label":"Right Shift", "w":1.25}, | ||
| 49 | {"x":13.125,"y":2.125,"label":"Up"}, | ||
| 50 | {"x":14.25, "y":2, "label":"Pg Dn"}, | ||
| 51 | {"x":0 , "y":3, "label":"Left Ctrl", "w":1.25}, | ||
| 52 | {"x":1.25 , "y":3, "label":"Left Alt", "w":1.25}, | ||
| 53 | {"x":2.5 , "y":3, "label":"MO(2)"}, | ||
| 54 | {"x":3.5 , "y":3, "label":"Space", "w":2.75}, | ||
| 55 | {"x":6.25 , "y":3, "label":"Space", "w":2.25}, | ||
| 56 | {"x":8.5 , "y":3, "label":"MO(3)"}, | ||
| 57 | {"x":9.5 , "y":3, "label":"R Win / Alt Gr", "w":1.25}, | ||
| 58 | {"x":10.75, "y":3, "label":"MO(1)", "w":1.25}, | ||
| 59 | {"x":12.125,"y":3.125,"label":"Left"}, | ||
| 60 | {"x":13.125,"y":3.125,"label":"Down"}, | ||
| 61 | {"x":14.125,"y":3.125,"label":"Right"} | ||
| 62 | ] | ||
| 63 | } | ||
| 64 | } | ||
| 65 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c new file mode 100644 index 000000000..9cce6ac2e --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include "kastenwagen48.h" | ||
| 18 | |||
| 19 | #ifndef LAYER_LED_DISABLE | ||
| 20 | |||
| 21 | void keyboard_pre_init_kb(void) { | ||
| 22 | setPinOutput(LED_INDICATOR_TOP); | ||
| 23 | setPinOutput(LED_INDICATOR_MID); | ||
| 24 | setPinOutput(LED_INDICATOR_BOT); | ||
| 25 | keyboard_pre_init_user(); | ||
| 26 | } | ||
| 27 | |||
| 28 | __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { | ||
| 29 | writePinHigh(LED_INDICATOR_TOP); | ||
| 30 | writePinHigh(LED_INDICATOR_MID); | ||
| 31 | writePinHigh(LED_INDICATOR_BOT); | ||
| 32 | |||
| 33 | switch(get_highest_layer(state) % 4) { | ||
| 34 | case 1: | ||
| 35 | writePinLow(LED_INDICATOR_TOP); | ||
| 36 | writePinLow(LED_INDICATOR_MID); | ||
| 37 | break; | ||
| 38 | case 2: | ||
| 39 | writePinLow(LED_INDICATOR_TOP); | ||
| 40 | writePinLow(LED_INDICATOR_BOT); | ||
| 41 | break; | ||
| 42 | case 3: | ||
| 43 | writePinLow(LED_INDICATOR_MID); | ||
| 44 | writePinLow(LED_INDICATOR_BOT); | ||
| 45 | break; | ||
| 46 | } | ||
| 47 | return state; | ||
| 48 | } | ||
| 49 | |||
| 50 | #endif | ||
| 51 | |||
| 52 | bool encoder_update_kb(uint8_t index, bool clockwise) { | ||
| 53 | if (!encoder_update_user(index, clockwise)) { return false; } | ||
| 54 | if (clockwise) { | ||
| 55 | tap_code(KC_PGUP); | ||
| 56 | } else { | ||
| 57 | tap_code(KC_PGUP); | ||
| 58 | } | ||
| 59 | return true; | ||
| 60 | }; | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h new file mode 100644 index 000000000..8f948fca6 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #pragma once | ||
| 18 | |||
| 19 | #include "quantum.h" | ||
| 20 | |||
| 21 | #define LAYOUT_48( \ | ||
| 22 | K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , \ | ||
| 23 | K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , \ | ||
| 24 | K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , \ | ||
| 25 | K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 \ | ||
| 26 | ) \ | ||
| 27 | { \ | ||
| 28 | { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 }, \ | ||
| 29 | { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, KC_NO }, \ | ||
| 30 | { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 }, \ | ||
| 31 | { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, KC_NO }, \ | ||
| 32 | { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 }, \ | ||
| 33 | { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, KC_NO }, \ | ||
| 34 | { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 }, \ | ||
| 35 | { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , KC_NO } \ | ||
| 36 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c new file mode 100644 index 000000000..ca6b66d59 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c | |||
| @@ -0,0 +1,93 @@ | |||
| 1 | /* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include QMK_KEYBOARD_H | ||
| 18 | |||
| 19 | #define L2_SPC LT(2,KC_SPC) | ||
| 20 | #define L3_SPC LT(3,KC_SPC) | ||
| 21 | #define RWINALT RALT_T(KC_RGUI) | ||
| 22 | #define ISO_LT KC_NUBS | ||
| 23 | #define ISO_GT LSFT(KC_NUBS) | ||
| 24 | |||
| 25 | bool is_alt_tab_active = false; | ||
| 26 | uint16_t alt_tab_timer = 0; | ||
| 27 | |||
| 28 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 29 | |||
| 30 | [0] = LAYOUT_48( | ||
| 31 | |||
| 32 | KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_DEL , | ||
| 33 | KC_TAB ,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_PGUP, | ||
| 34 | KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_PGDN, | ||
| 35 | KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT | ||
| 36 | ), | ||
| 37 | [1] = LAYOUT_48( | ||
| 38 | RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_INS , | ||
| 39 | KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME, | ||
| 40 | _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END , | ||
| 41 | KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END | ||
| 42 | ), | ||
| 43 | [2] = LAYOUT_48( | ||
| 44 | 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 , XXXXXXX, | ||
| 45 | KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX, | ||
| 46 | _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, | ||
| 47 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 48 | ), | ||
| 49 | [3] = LAYOUT_48( | ||
| 50 | KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , XXXXXXX, | ||
| 51 | _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX, | ||
| 52 | _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, | ||
| 53 | _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX | ||
| 54 | ) | ||
| 55 | }; | ||
| 56 | |||
| 57 | bool encoder_update_user(uint8_t index, bool clockwise) { | ||
| 58 | |||
| 59 | if (index == 0) { | ||
| 60 | if (clockwise) { | ||
| 61 | tap_code(KC_VOLU); | ||
| 62 | } | ||
| 63 | else { | ||
| 64 | tap_code(KC_VOLD); | ||
| 65 | } | ||
| 66 | } | ||
| 67 | else if (index == 1) { | ||
| 68 | if (clockwise) { | ||
| 69 | if (!is_alt_tab_active) { | ||
| 70 | is_alt_tab_active = true; | ||
| 71 | register_code(KC_LALT); | ||
| 72 | } | ||
| 73 | alt_tab_timer = timer_read(); | ||
| 74 | tap_code16(KC_TAB); | ||
| 75 | } | ||
| 76 | else { | ||
| 77 | alt_tab_timer = timer_read(); | ||
| 78 | tap_code16(S(KC_TAB)); | ||
| 79 | } | ||
| 80 | } | ||
| 81 | |||
| 82 | return false; | ||
| 83 | } | ||
| 84 | |||
| 85 | void matrix_scan_user(void) { | ||
| 86 | |||
| 87 | if (is_alt_tab_active) { | ||
| 88 | if (timer_elapsed(alt_tab_timer) > 1250) { | ||
| 89 | unregister_code(KC_LALT); | ||
| 90 | is_alt_tab_active = false; | ||
| 91 | } | ||
| 92 | } | ||
| 93 | } | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/readme.md b/keyboards/nopunin10did/kastenwagen48/readme.md new file mode 100644 index 000000000..f6db1aa41 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/readme.md | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | # Kastenwagen 48 | ||
| 2 | |||
| 3 |  | ||
| 4 | |||
| 5 | Kastenwagen 48 is a 40% keyboard with a macro column and dedicated arrows. The main alpha block is 13.75u long, allowing for more dedicated punctuation keys to be paired with common Minivan-like mod keys. | ||
| 6 | |||
| 7 | A second model of Kastenwagen, the [Kastenwagen 1840](https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen1840), is similar but replaces the macro column with a mini-numpad. | ||
| 8 | |||
| 9 | Please note that the Kastenwagen 1840 via-compatible keymap firmware is also compatible with the Kastenwagen 48. The Kastenwagen 48 does not have a dedicated via-compatible firmware. | ||
| 10 | |||
| 11 | For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w). | ||
| 12 | |||
| 13 | * Keyboard Maintainer: [Alex Ronke](diplomacyvariants.wordpress.com), also known as NoPunIn10Did. | ||
| 14 | * Hardware Supported: Kastenwagen 48 (2021 June) | ||
| 15 | * Hardware Availability: Currently by request only | ||
| 16 | |||
| 17 | To jump the bootloader, either: | ||
| 18 | * If loaded with the default layout, use Function-Escape *(the function button is the farthest righthand 1.25u on the bottom row)* **OR** | ||
| 19 | * Use the physical reset switch on the Elite C **OR** | ||
| 20 | * Briefly jump the Reset and Ground pins of the Elite C | ||
| 21 | |||
| 22 | Make example for the 48 model: | ||
| 23 | |||
| 24 | make nopunin10did/kastenwagen48:default48 | ||
| 25 | |||
| 26 | 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). | ||
| 27 | |||
| 28 |  \ No newline at end of file | ||
diff --git a/keyboards/nopunin10did/kastenwagen48/rules.mk b/keyboards/nopunin10did/kastenwagen48/rules.mk new file mode 100644 index 000000000..61eb7eafb --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/rules.mk | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | # MCU name | ||
| 2 | MCU = atmega32u4 | ||
| 3 | |||
| 4 | # Bootloader selection | ||
| 5 | BOOTLOADER = atmel-dfu | ||
| 6 | |||
| 7 | # Build Options | ||
| 8 | # change yes to no to disable | ||
| 9 | # | ||
| 10 | BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite | ||
| 11 | MOUSEKEY_ENABLE = yes # Mouse keys | ||
| 12 | EXTRAKEY_ENABLE = yes # Audio control and System control | ||
| 13 | CONSOLE_ENABLE = no # Console for debug | ||
| 14 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 15 | NKRO_ENABLE = yes # Enable N-Key Rollover | ||
| 16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
| 17 | RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | ||
| 18 | AUDIO_ENABLE = no # Audio output | ||
| 19 | |||
| 20 | ENCODER_ENABLE = yes # Enable rotary encoder input | ||
