diff options
Diffstat (limited to 'keyboards/nopunin10did/kastenwagen48')
13 files changed, 625 insertions, 0 deletions
diff --git a/keyboards/nopunin10did/kastenwagen48/config.h b/keyboards/nopunin10did/kastenwagen48/config.h new file mode 100644 index 0000000000..f88a630cfd --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/config.h @@ -0,0 +1,51 @@ +/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4E50 // "NP" +#define PRODUCT_ID 0x4B30 // Hex for "K" and 48 +#define DEVICE_VER 0x0001 +#define MANUFACTURER NoPunIn10Did +#define PRODUCT Kastenwagen 48 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B4, B5, B7, D5, C7, F1, F0, B6 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 } +#define UNUSED_PINS + +/* Indicator LEDs */ +#define LED_INDICATOR_TOP B0 +#define LED_INDICATOR_MID D4 +#define LED_INDICATOR_BOT C6 + +/* Rotary encoder rotation pins */ +#define ENCODERS_PAD_A { D0, D3 } +#define ENCODERS_PAD_B { D1, D2 } + + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 diff --git a/keyboards/nopunin10did/kastenwagen48/info.json b/keyboards/nopunin10did/kastenwagen48/info.json new file mode 100644 index 0000000000..12d375863b --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Kastenwagen 48", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48", + "maintainer": "NoPunIn10Did", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0 , "y":0, "label":"Esc"}, + {"x":1 , "y":0, "label":"Q"}, + {"x":2 , "y":0, "label":"W"}, + {"x":3 , "y":0, "label":"E"}, + {"x":4 , "y":0, "label":"R"}, + {"x":5 , "y":0, "label":"T"}, + {"x":6 , "y":0, "label":"Y"}, + {"x":7 , "y":0, "label":"U"}, + {"x":8 , "y":0, "label":"I"}, + {"x":9 , "y":0, "label":"O"}, + {"x":10 , "y":0, "label":"P"}, + {"x":11 , "y":0, "label":"L Bracket"}, + {"x":12 , "y":0, "label":"Backspace", "w":1.75}, + {"x":14.25, "y":0, "label":"Delete"}, + {"x":0 , "y":1, "label":"Tab", "w":1.25}, + {"x":1.25, "y":1, "label":"A"}, + {"x":2.25, "y":1, "label":"S"}, + {"x":3.25, "y":1, "label":"D"}, + {"x":4.25, "y":1, "label":"F"}, + {"x":5.25, "y":1, "label":"G"}, + {"x":6.25, "y":1, "label":"H"}, + {"x":7.25, "y":1, "label":"J"}, + {"x":8.25, "y":1, "label":"K"}, + {"x":9.25, "y":1, "label":"L"}, + {"x":10.25, "y":1, "label":"Semicolon"}, + {"x":11.25, "y":1, "label":"Quote"}, + {"x":12.25, "y":1, "label":"Enter", "w":1.5}, + {"x":14.25, "y":1, "label":"Pg Up"}, + {"x":0 , "y":2, "label":"Left Shift", "w":1.75}, + {"x":1.75, "y":2, "label":"Z"}, + {"x":2.75, "y":2, "label":"X"}, + {"x":3.75, "y":2, "label":"C"}, + {"x":4.75, "y":2, "label":"V"}, + {"x":5.75, "y":2, "label":"B"}, + {"x":6.75, "y":2, "label":"N"}, + {"x":7.75, "y":2, "label":"M"}, + {"x":8.75, "y":2, "label":"Comma"}, + {"x":9.75, "y":2, "label":"Period"}, + {"x":10.75, "y":2, "label":"Slash"}, + {"x":11.75, "y":2, "label":"Right Shift", "w":1.25}, + {"x":13.125,"y":2.125,"label":"Up"}, + {"x":14.25, "y":2, "label":"Pg Dn"}, + {"x":0 , "y":3, "label":"Left Ctrl", "w":1.25}, + {"x":1.25 , "y":3, "label":"Left Alt", "w":1.25}, + {"x":2.5 , "y":3, "label":"MO(2)"}, + {"x":3.5 , "y":3, "label":"Space", "w":2.75}, + {"x":6.25 , "y":3, "label":"Space", "w":2.25}, + {"x":8.5 , "y":3, "label":"MO(3)"}, + {"x":9.5 , "y":3, "label":"R Win / Alt Gr", "w":1.25}, + {"x":10.75, "y":3, "label":"MO(1)", "w":1.25}, + {"x":12.125,"y":3.125,"label":"Left"}, + {"x":13.125,"y":3.125,"label":"Down"}, + {"x":14.125,"y":3.125,"label":"Right"} + ] + } + } +} diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c new file mode 100644 index 0000000000..9cce6ac2e3 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c @@ -0,0 +1,60 @@ +/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "kastenwagen48.h" + +#ifndef LAYER_LED_DISABLE + +void keyboard_pre_init_kb(void) { + setPinOutput(LED_INDICATOR_TOP); + setPinOutput(LED_INDICATOR_MID); + setPinOutput(LED_INDICATOR_BOT); + keyboard_pre_init_user(); +} + +__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { + writePinHigh(LED_INDICATOR_TOP); + writePinHigh(LED_INDICATOR_MID); + writePinHigh(LED_INDICATOR_BOT); + + switch(get_highest_layer(state) % 4) { + case 1: + writePinLow(LED_INDICATOR_TOP); + writePinLow(LED_INDICATOR_MID); + break; + case 2: + writePinLow(LED_INDICATOR_TOP); + writePinLow(LED_INDICATOR_BOT); + break; + case 3: + writePinLow(LED_INDICATOR_MID); + writePinLow(LED_INDICATOR_BOT); + break; + } + return state; +} + +#endif + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGUP); + } + return true; +}; diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h new file mode 100644 index 0000000000..65ed03d201 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h @@ -0,0 +1,51 @@ +/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "quantum.h" + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ ┌───┐ + * │100│101│110│111│120│121│130│131│140│141│150│151│160 │ │170│ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬─────┤ ├───┤ + * │202 │203│212│213│222│223│232│233│242│243│252│253│262 │ │272│ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬──┘ ├───┤ + * │304 │305│314│315│324│325│334│335│344│345│354│355 │┌───┐│374│ + * ├────┬─┴──┬┴──┬┴───┴───┴─┬─┴───┴──┬┴──┬┴───┼───┴┬───┘│364│└───┘ + * │406 │407 │416│417 │437 │446│447 │456 │┌───┼───┼───┐ + * └────┴────┴───┴──────────┴────────┴───┴────┴────┘│457│467│476│ + * ┌───────────────────────────┐ └───┴───┴───┘ + * │417 │ 7u Space + * └───────────────────────────┘ + */ + +#define LAYOUT_all( \ +K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , \ +K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , \ +K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , \ +K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 \ +) \ +{ \ + { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 }, \ + { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, KC_NO }, \ + { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 }, \ + { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, KC_NO }, \ + { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 }, \ + { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, KC_NO }, \ + { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 }, \ + { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , KC_NO } \ +} diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c new file mode 100644 index 0000000000..397b75b901 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c @@ -0,0 +1,93 @@ +/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H + +#define L2_SPC LT(2,KC_SPC) +#define L3_SPC LT(3,KC_SPC) +#define RWINALT RALT_T(KC_RGUI) +#define ISO_LT KC_NUBS +#define ISO_GT LSFT(KC_NUBS) + +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + + 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 , + 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, + 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, + KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT + ), +[1] = LAYOUT_all( + 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 , + KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME, + _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END , + KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END + ), +[2] = LAYOUT_all( + 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, + 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, + _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ), +[3] = LAYOUT_all( + 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, + _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX, + _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + } + else if (index == 1) { + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + tap_code16(KC_TAB); + } + else { + alt_tab_timer = timer_read(); + tap_code16(S(KC_TAB)); + } + } + + return false; +} + +void matrix_scan_user(void) { + + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1250) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h new file mode 100644 index 0000000000..c6de1b416c --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021, 2022 Jonavin Eng + * + * 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 + +#define TAPPING_TOGGLE 2 +// TT set to two taps + +/* Handle GRAVESC combo keys */ +#define GRAVE_ESC_ALT_OVERRIDE + //Always send Escape if Alt is pressed +#define GRAVE_ESC_CTRL_OVERRIDE + //Always send Escape if Control is pressed + +#define TAPPING_TERM 180 + +#define ENCODER_DIRECTION_FLIP // compensate for opposite encoder direction +#define ENCODER_DEFAULTACTIONS_INDEX 1 // Set default encoder functions to encoder 1 diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c new file mode 100644 index 0000000000..29c12b0419 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * Copyright 2022 Jonavin Eng, @Jonavin + * + * 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 +#include "jonavin.h" + +#define L2_SPC LT(2,KC_SPC) +#define L3_SPC LT(3,KC_SPC) +#define RWINALT RALT_T(KC_RGUI) +#define ISO_LT KC_NUBS +#define ISO_GT LSFT(KC_NUBS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_BASE] = LAYOUT_48( + + 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_BSPC , KC_DEL , + TT(_RAISE) ,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, + KC_LSFTCAPS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH, KC_SFTENT ,KC_UP , KC_PGDN, + KC_LCTL ,KC_LALT ,KC_LGUI ,KC_SPC ,L3_SPC ,MO(_LOWER) ,MO(_FN1) ,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT + ), +[_FN1] = LAYOUT_48( + KC_GRV ,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 , + KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_PSCR, KC_SLCK, KC_PAUS,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME, + _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_NLCK ,XXXXXXX ,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,KC_PGUP, KC_END , + _______ ,_______ ,KC_WINLCK,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END + ), +[_LOWER] = LAYOUT_48( + KC_TILD ,KC_EXLM, KC_AT, KC_HASH,KC_DLR,KC_PERC,KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN,KC_MINS,KC_EQL , RESET, + _______ ,KC_MINS, KC_EQL,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_QUES,KC_SLSH,KC_PIPE,KC_BSLS,KC_TILD, XXXXXXX ,XXXXXXX, + _______ ,KC_UNDS, KC_PLUS,XXXXXXX,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC,KC_LT,KC_GT, XXXXXXX ,_______ ,XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ), +[_RAISE] = LAYOUT_48( + KC_ESC, KC_HOME,KC_UP, KC_END, KC_PGUP,KC_PMNS,KC_PPLS,KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PEQL , KC_TSTOG, + TT(_RAISE),KC_LEFT,KC_DOWN,KC_RIGHT,KC_PGDN,KC_PSLS,KC_TAB,KC_P4, KC_P5, KC_P6, KC_PDOT,KC_PAST,KC_PENT , XXXXXXX, + _______, XXXXXXX,KC_DEL, KC_INS, KC_NO, KC_PAST,KC_P0, KC_P1, KC_P2, KC_P3, KC_PSLS ,_______, XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,KC_BSPC ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ) +}; + +#ifdef ENCODER_ENABLE // Encoder Functionality +bool encoder_update_keymap(uint8_t index, bool clockwise) { + switch (index) { + case 0: // Top left encoder + encoder_action_volume(clockwise); + break; + default: + break; + } + return true; // fall to encoder_update_user and encoder_update_kb definitions +} +#endif diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md new file mode 100644 index 0000000000..885e6b0dd7 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md @@ -0,0 +1,54 @@ +Jonavin Kastenwagen 48 Keymap +Designed to match my other keymaps + +NOTE: Uses userpace user/jonavin + +Feature changes from Default + - Bottom row mapping LCtrl, LAlt, LGui, spacebars, MO(2)/LOWER, MO(1)/FN, RCtrl + - CAPS as MO(3)/RAISE - tap to toggle + - numpad in MO(3) layer + - double tap L Shift for CAPS + - RESET moved to under encoder in MO(2) + - implement Win Key Lock + - GRV Escape overides + - ENCODERS + - TOP LEFT + - Volume up/down + - TOP RIGHT + - Left Shift held - change layers + - Right Shift held - Page Up/Down + - Left Ctrl held - navigate next/prev words + - Left Alt held - change media next/prev track + - RAISE + Encode push toggles between volume change and tab scrolling + - ENCODER_DIRECTION_FLIP has been defined to avoid issues with encoder going in opposition direction + +OPTIONS in rules.mk +--------------------------------------- + +STARTUP_NUMLOCK_ON = yes +- turns on NUMLOCK by default + +ENCODER_DEFAULTACTIONS_ENABLE = yes +- Enabled default encoder funtions +- When enabled, use this in the keymap for an additional encoder processing +- bool encoder_update_keymap(uint8_t index, bool clockwise) + +OPTION: set ENCODER_DEFAULTACTIONS_INDEX in config.h to the encoder number if the encoder is not index 0 -- set to 1 for top right encoder + +TD_LSFT_CAPSLOCK_ENABLE = yes +- This will enable double tap on Left Shift to toggle CAPSLOCK +- KC_LSFTCAPS to bind to left Shift to enable feature +- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled + +INVERT_NUMLOCK_INDICATOR +- inverts the Num lock indicator, LED is on when num lock is off + +ALTTAB_SCROLL_ENABLE +- When ENCODER_DEFAULTACTIONS_ENABLE = yes, + Enables Alt-Tab scrolling functions in default encoder, + bind KS_TSTOG to a key to enable/disable Alt-Tab vs Volume control +- When defining your own encoder functions use encoder_action_alttabscroll(bool clockwise) to assign the encodr action + + +Layout +![image](https://user-images.githubusercontent.com/71780717/128580303-5d660a5f-1420-4e38-b40a-212573496b1c.png) diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk new file mode 100644 index 0000000000..97ccf0c354 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk @@ -0,0 +1,11 @@ +VIA_ENABLE = yes # VIA support +LTO_ENABLE = yes # + +TAP_DANCE_ENABLE = yes + +TD_LSFT_CAPSLOCK_ENABLE = yes +STARTUP_NUMLOCK_ON = yes + +ENCODER_DEFAULTACTIONS_ENABLE = yes +INVERT_NUMLOCK_INDICATOR = yes +ALTTAB_SCROLL_ENABLE = yes diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c new file mode 100644 index 0000000000..397b75b901 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c @@ -0,0 +1,93 @@ +/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H + +#define L2_SPC LT(2,KC_SPC) +#define L3_SPC LT(3,KC_SPC) +#define RWINALT RALT_T(KC_RGUI) +#define ISO_LT KC_NUBS +#define ISO_GT LSFT(KC_NUBS) + +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + + 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 , + 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, + 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, + KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT + ), +[1] = LAYOUT_all( + 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 , + KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME, + _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END , + KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END + ), +[2] = LAYOUT_all( + 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, + 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, + _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ), +[3] = LAYOUT_all( + 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, + _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX, + _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX, + _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + } + else if (index == 1) { + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + tap_code16(KC_TAB); + } + else { + alt_tab_timer = timer_read(); + tap_code16(S(KC_TAB)); + } + } + + return false; +} + +void matrix_scan_user(void) { + + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1250) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk b/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk new file mode 100644 index 0000000000..43061db1dd --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes
\ No newline at end of file diff --git a/keyboards/nopunin10did/kastenwagen48/readme.md b/keyboards/nopunin10did/kastenwagen48/readme.md new file mode 100644 index 0000000000..d0ea708313 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/readme.md @@ -0,0 +1,28 @@ +# Kastenwagen 48 + +![Kastenwagen 48](https://diplomacyvariants.files.wordpress.com/2022/01/kastenwagen-48-concept-art.png) + +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. + +For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w). + +* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did) +* Hardware Supported: Kastenwagen 48 (2021 June) +* Hardware Availability: Currently by request only + +To jump the bootloader, either: +* If loaded with the default layout, use Function-Escape *(the function button is the farthest righthand 1.25u on the bottom row)* **OR** +* Use the physical reset switch on the Elite C **OR** +* Briefly jump the Reset and Ground pins of the Elite C + +Make example for this keyboard (after setting up your build environment): + + make nopunin10did/kastenwagen48:default + +Flashing example for this keyboard: + + make nopunin10did/kastenwagen48:default:flash + +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). + +![Kastenwagen Default Layouts](https://diplomacyvariants.files.wordpress.com/2022/01/kastenwagen-default-layouts.png) diff --git a/keyboards/nopunin10did/kastenwagen48/rules.mk b/keyboards/nopunin10did/kastenwagen48/rules.mk new file mode 100644 index 0000000000..61eb7eafb0 --- /dev/null +++ b/keyboards/nopunin10did/kastenwagen48/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes # Enable rotary encoder input |