diff --git a/.github/workflows/build-all.yml b/.github/workflows/build-all.yml index 5142a0ef47a..d8c27cb8345 100644 --- a/.github/workflows/build-all.yml +++ b/.github/workflows/build-all.yml @@ -40,6 +40,8 @@ jobs: keymap: via_Left - keyboard: keyball46 keymap: via_Both + - keyboard: keyball44 + keymap: via_daylight uses: ./.github/workflows/build-firmware.yml with: diff --git a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/config.h b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/config.h index 04e3a5b4fd9..3ed5f7b1ec3 100644 --- a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/config.h +++ b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/config.h @@ -21,16 +21,16 @@ along with this program. If not, see . #pragma once #ifdef RGBLIGHT_ENABLE -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -//# define RGBLIGHT_EFFECT_TWINKLE +// # define RGBLIGHT_EFFECT_BREATHING +// # define RGBLIGHT_EFFECT_RAINBOW_MOOD +// # define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// # define RGBLIGHT_EFFECT_SNAKE +// # define RGBLIGHT_EFFECT_KNIGHT +// # define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +// # define RGBLIGHT_EFFECT_RGB_TEST +// # define RGBLIGHT_EFFECT_ALTERNATING +// # define RGBLIGHT_EFFECT_TWINKLE #endif #define TAP_CODE_DELAY 5 @@ -38,3 +38,7 @@ along with this program. If not, see . #define POINTING_DEVICE_AUTO_MOUSE_ENABLE #define AUTO_MOUSE_DEFAULT_LAYER 1 + +#define TAPPING_TERM 150 +#define PERMISSIVE_HOLD +#define TAPPING_FORCE_HOLD \ No newline at end of file diff --git a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/keymap.c b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/keymap.c index 09fe5374ff2..b6c2c5012f5 100644 --- a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/keymap.c +++ b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/keymap.c @@ -19,15 +19,16 @@ along with this program. If not, see . #include QMK_KEYBOARD_H #include "quantum.h" +#define SYM_SPC LT(1, KC_SPC) // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // keymap for default (VIA) [0] = LAYOUT_universal( - KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL , - KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , S(KC_7) , - KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_INT1 , - KC_LALT,KC_LGUI,LCTL_T(KC_LNG2) ,LT(1,KC_SPC),LT(3,KC_LNG1), KC_BSPC,LT(2,KC_ENT), RCTL_T(KC_LNG2), KC_RALT , KC_PSCR + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS , + 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_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , MO(4) , + KC_LALT,KC_LGUI,LCTL_T(KC_LNG2) ,SYM_SPC,MO(3), KC_BSPC,LT(2,KC_ENT), KC_J, KC_RALT , KC_PSCR ), [1] = LAYOUT_universal( @@ -53,19 +54,73 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on -layer_state_t layer_state_set_user(layer_state_t state) { - // Auto enable scroll mode when the highest layer is 3 - keyball_set_scroll_mode(get_highest_layer(state) == 3); - return state; +layer_state_t layer_state_set_user(layer_state_t state) +{ + // Auto enable scroll mode when the highest layer is 3 + keyball_set_scroll_mode(get_highest_layer(state) == 3); + return state; +} + +enum key_state +{ + RELEASED, + PRESSED, + HOLDEN +}; + +void register_space(void) +{ + register_code(KC_SPC); +} + +void unregister_space(void) +{ + unregister_code(KC_SPC); +} + +enum key_state sym_spc_state = RELEASED; +uint16_t sym_spc_pressed_timer; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + switch (keycode) + { + case SYM_SPC: + if (record->event.pressed) + { + sym_spc_pressed_timer = timer_read(); + sym_spc_state = PRESSED; + } + else + { + if (sym_spc_state == HOLDEN) + { + unregister_space(); + } + sym_spc_state = RELEASED; + } + break; + } + return true; +} + +void matrix_scan_user(void) +{ + if (sym_spc_state == PRESSED && timer_elapsed(sym_spc_pressed_timer) > TAPPING_TERM) + { + register_space(); + sym_spc_state = HOLDEN; + } } #ifdef OLED_ENABLE -# include "lib/oledkit/oledkit.h" +#include "lib/oledkit/oledkit.h" -void oledkit_render_info_user(void) { - keyball_oled_render_keyinfo(); - keyball_oled_render_ballinfo(); - keyball_oled_render_layerinfo(); +void oledkit_render_info_user(void) +{ + keyball_oled_render_keyinfo(); + keyball_oled_render_ballinfo(); + keyball_oled_render_layerinfo(); } #endif diff --git a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/rules.mk b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/rules.mk index d80df3fa49a..84e037863dd 100644 --- a/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/rules.mk +++ b/qmk_firmware/keyboards/keyball/keyball44/keymaps/via_daylight/rules.mk @@ -3,3 +3,5 @@ RGBLIGHT_ENABLE = yes OLED_ENABLE = yes VIA_ENABLE = yes + +EXTRAKEY_ENABLE = yes \ No newline at end of file