diff --git a/keyboards/beekeeb/piantor/keymaps/default/config.h b/keyboards/beekeeb/piantor/keymaps/default/config.h new file mode 100644 index 00000000..23107f78 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/default/config.h @@ -0,0 +1,45 @@ +// Copyright 2022 beekeeb +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 + +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_ACTIVITY_ENABLE + +// Customized by markstos +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY +// used for Tapping Term on thumb keys +#define TAPPING_TERM_THUMB 125 + +// If you press a dual-role key, press another key, and then release the +// dual-role key, all within the tapping term, by default the dual-role key +// will perform its tap action. If the HOLD_ON_OTHER_KEY_PRESS option is +// enabled, the dual-role key will perform its hold action instead. +#define HOLD_ON_OTHER_KEY_PRESS + +// markstos: prevent keydown and keyup from firing on different layers +#define PREVENT_STUCK_MODIFER + +// When enabled, typing a mod-tap plus second within term will register as the mod-combo +// Ref: https://beta.docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold +#define PERMISSIVE_HOLD + +#define COMBO_COUNT 3 + +// Set the COMBO_TERM so low that I won't type the keys one after each other during normal typing. +// They would have be held together intentionally to trigger this. +#define COMBO_TERM 40 + +// These mostly affect my one-shot Shift key, providing a CapsLock alternative. +// I want a relatively low timeout, so if I accidentally type "Shift", I can pause just briefly and move on. +#define ONESHOT_TAP_TOGGLE 3 /* Tapping this number of times holds the key until tapped once again. */ +#define ONESHOT_TIMEOUT 2000 /* Time (in ms) before the one shot key is released */ diff --git a/keyboards/beekeeb/piantor/keymaps/default/keymap.c b/keyboards/beekeeb/piantor/keymaps/default/keymap.c new file mode 100644 index 00000000..cc7d2ce5 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/default/keymap.c @@ -0,0 +1,187 @@ +#include QMK_KEYBOARD_H + +extern uint8_t is_master; + +enum custom_keycodes { + DEFAULT = SAFE_RANGE, + LOWER, + RAISE, + FUNC, + LOCKWIN, + C_ALT_D, + SNAP_LFT, + SNAP_RT, + SNAP_TOP, + SNAP_BTM, + KVM_SW +}; + +enum combos { + JK_ESC +}; + +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + + +combo_t key_combos[COMBO_COUNT] = { + // For Vim, put Escape on the home row + [JK_ESC] = COMBO(jk_combo, KC_ESC), + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOCKWIN: + if (record->event.pressed) { + // when keycode LOCKWIN is pressed + register_code(KC_LGUI); // press the Windows key + register_code(KC_L); // press the L key + } else { + // when keycode LOCKWIN is released + unregister_code(KC_LGUI); // release the Windows key + unregister_code(KC_L); // release the L key + } + break; + case C_ALT_D: + if(record->event.pressed) { + register_code(KC_LCTL); + register_code(KC_LALT); + register_code(KC_DEL); + } else { + unregister_code(KC_LCTL); + unregister_code(KC_LALT); + unregister_code(KC_DEL); + } + break; + case KVM_SW: + if(record->event.pressed) { + register_code(KC_NUM); + register_code(KC_NUM); + } else { + unregister_code(KC_NUM); + unregister_code(KC_NUM); + } + break; + case SNAP_LFT: + if(record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_LEFT); + } else { + unregister_code(KC_LGUI); + unregister_code(KC_LEFT); + } + break; + case SNAP_RT: + if(record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_RIGHT); + } else { + unregister_code(KC_LGUI); + unregister_code(KC_RIGHT); + } + break; + case SNAP_TOP: + if(record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_UP); + } else { + unregister_code(KC_LGUI); + unregister_code(KC_UP); + } + break; + case SNAP_BTM: + if(record->event.pressed) { + register_code(KC_LGUI); + register_code(KC_DOWN); + } else { + unregister_code(KC_LGUI); + unregister_code(KC_DOWN); + } + break; + } + return true; +} + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 1 +#define _RAISE 2 +#define _FUNC 3 + +// For _QWERTY layer +#define OSL_FUN OSL(_FUNC) +#define LOW_TAB LT(_LOWER, KC_TAB) +#define RSE_BSP LT(_RAISE, KC_BSPC) +#define OSM_SFT OSM(MOD_LSFT) +#define OSM_ALT OSM(MOD_LALT) +#define OSM_CTL OSM(MOD_LCTL) +#define OSM_GUI OSM(MOD_LGUI) + +// For _LOWER layer +#define ALT_TAB LALT(KC_TAB) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_split_3x6_3( \ + //,-----------------------------------------------------. ,-----------------------------------------------------. + OSM_ALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P , KC_BSLS,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + OSM_SFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H ,KC_J ,KC_K ,KC_L , KC_SCLN, KC_QUOT,\ + //|---- ----+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+--------| + OSM_CTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,OSL_FUN,\ + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + OSM_GUI, LOW_TAB, KC_SPC, KC_ENT, RSE_BSP, OSM_SFT \ + //`--------------------------' `--------------------------' + ), + +[_LOWER] = LAYOUT_split_3x6_3( \ + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, KC_EQL, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_MINS, XXXXXXX, XXXXXXX,_______,\ + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + //`--------------------------' `--------------------------' + ), + +[_RAISE] = LAYOUT_split_3x6_3( \ + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_DEL , KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_INS, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, _______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE,\ + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS\ + //`--------------------------' `--------------------------' + ), + +[_FUNC] = LAYOUT_split_3x6_3( \ + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KVM_SW, XXXXXXX, SNAP_TOP, XXXXXXX, XXXXXXX, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + C_ALT_D, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_F12, XXXXXXX,SNAP_LFT,SNAP_BTM, SNAP_RT, KC_CALC, _______,\ + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX, KC_NUM, LOCKWIN, QK_RBT, QK_BOOT, EE_CLR, KC_SLEP, _______,\ + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS\ + //`--------------------------' `--------------------------' + ) +}; + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LT(_RAISE, KC_BSPC): + return TAPPING_TERM_THUMB; + case LT(_LOWER, KC_TAB): + return TAPPING_TERM_THUMB; + default: + return TAPPING_TERM; + } +} diff --git a/keyboards/beekeeb/piantor/keymaps/default/rules.mk b/keyboards/beekeeb/piantor/keymaps/default/rules.mk new file mode 100644 index 00000000..e7131f64 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/default/rules.mk @@ -0,0 +1,15 @@ +SERIAL_DRIVER = vendor + +MOUSEKEY_ENABLE = yes +VIA_ENABLE = yes + +# markstos: enable media keys +EXTRAKEY_ENABLE = yes + +# markstos: smaller file size, little down-side +LINK_TIME_OPTIMIZATION_ENABLE = yes + +# markstos: for combos! +COMBO_ENABLE = yes + +TAP_DANCE_ENABLE = no \ No newline at end of file diff --git a/qmk.json b/qmk.json index f216c86e..0e937621 100644 --- a/qmk.json +++ b/qmk.json @@ -3,6 +3,7 @@ "build_targets": [ ["boardsource/unicorne", "unicorne_choc"], ["boardsource/unicorne", "unicorne_mx"], - ["boardsource/unicorne", "markstos"] + ["boardsource/unicorne", "markstos"], + ["beekeeb/piantor", "default"] ] } \ No newline at end of file diff --git a/users/unicorne-default-keymap.c b/users/unicorne-default-keymap.c deleted file mode 100644 index cb4db213..00000000 --- a/users/unicorne-default-keymap.c +++ /dev/null @@ -1,27 +0,0 @@ -/* THIS FILE WAS GENERATED! - * - * This file was generated by qmk json2c. You may or may not want to - * edit it directly. - */ - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x6_3( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, \ - KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT), - - [1] = LAYOUT_split_3x6_3(_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [2] = LAYOUT_split_3x6_3(\ - QK_BOOT, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, RGB_TOG, _______, \ - EE_CLR, _______, _______, _______, _______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, CK_TOGG, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______) -}; - -#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - -}; -#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE \ No newline at end of file