diff --git a/README.md b/README.md index 801fcf54..dcfac62b 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,7 @@ If the keyboard has not been merged yet to the main branch of QMK you may need t 1. Fork this repository 1. Clone your fork to your local machine 1. Enable userspace in QMK config using `qmk config user.overlay_dir="$(realpath qmk_userspace)"` -1. Add a new keymap for your board using `qmk new-keymap` - * This will create a new keymap in the `keyboards` directory, in the same location that would normally be used in the main QMK repository. For example, if you wanted to add a keymap for the Halcyon Kyria, it will be created in `keyboards/splitkb/halcyon/kyria/` - * You can also create a new keymap using `qmk new-keymap -kb -km ` - * Alternatively, add your keymap manually by placing it in the location specified above. This may be easier if you want to copy the default keymap and change it to your liking. - * `layouts///keymap.*` is also supported if you prefer the layout system but has not been tested with our halcyon modules. -1. Create and add `USER_NAME := halcyon_modules` to your keymaps `rules.mk` +1. Add a new keymap for your board by copy, pasting and renaming the `default_hlc` keymap within the `keyboards/splitkb/halcyon/$KB$/keymaps` folder. 1. Add your keymap(s) to the build by running `qmk userspace-add -kb -km -e =1 -e TARGET=`. * This will automatically update your `qmk.json` file * Corresponding `qmk userspace-remove -kb -km -e =1 -e TARGET=`. @@ -61,8 +56,8 @@ If you wish to point GitHub actions to a different repository, a different branc To override the `build` job, you can change the following parameters to use a different QMK repository or branch, this can be useful if you want to use a different QMK or vial branch for example: ``` with: - qmk_repo: splitkb/qmk_firmware - qmk_ref: halcyon-kyria + qmk_repo: qmk/qmk_firmware + qmk_ref: master ``` If you wish to manually manage `qmk_firmware` using git within the userspace repository, you can add `qmk_firmware` as a submodule in the userspace directory instead. GitHub Actions will automatically use the submodule at the pinned revision if it exists, otherwise it will use the default latest revision of `qmk_firmware` from the main repository. This will not work when using vial. diff --git a/examples/display/display.c b/examples/display/display.c index 39a88573..d5312cdf 100644 --- a/examples/display/display.c +++ b/examples/display/display.c @@ -2,7 +2,7 @@ #include "hlc_tft_display/hlc_tft_display.h" // Include the QP api -#include "qp.h" +#include "qp_surface.h" // Add a font, this font is generated using the QP CLI tools (https://docs.qmk.fm/quantum_painter#quantum-painter-cli) #include "graphics/thintel15.qff.h" @@ -10,6 +10,10 @@ // Initialize the font static painter_font_handle_t thintel; +// Setup painter devices +painter_device_t lcd; +painter_device_t lcd_surface; + // This function is ran on bootup of the keyboard bool module_post_init_user(void) { // Load the font in to memory. @@ -55,12 +59,12 @@ bool display_module_housekeeping_task_user(bool second_display) { // Make sure that the second display loads correctly, sometimes it takes a little while for the keyboard to know it has a second display. // So we reset the state and make it run again until the secondary display is drawn correctly - if(second_display && !second_display_set) { + if(second_display && !second_display_set) { display_set = false; } // Move surface to lcd, this actually writes the content to the physical display qp_surface_draw(lcd_surface, lcd, 0, 0, 0); - + return false; -} \ No newline at end of file +} diff --git a/examples/display/rules.mk b/examples/display/rules.mk index e7e17fbb..a45bcb6b 100644 --- a/examples/display/rules.mk +++ b/examples/display/rules.mk @@ -2,4 +2,4 @@ SRC += display.c # Include the font file -SRC += graphics/thintel15.qff.c \ No newline at end of file +SRC += graphics/thintel15.qff.c diff --git a/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/keymap.c b/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/keymap.c index 861bc8e6..1bd72291 100644 --- a/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/keymap.c +++ b/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/keymap.c @@ -204,7 +204,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_split_3x6_5_hlc( _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, + _______, _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD , _______, _______, _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -271,4 +271,4 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/rules.mk b/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/rules.mk index 70ffc544..54a02a4c 100644 --- a/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/rules.mk +++ b/keyboards/splitkb/halcyon/kyria/keymaps/default_hlc/rules.mk @@ -1,2 +1,2 @@ # This adds module functionality to your keyboard (files found in users/halcyon_modules) -USER_NAME := halcyon_modules \ No newline at end of file +USER_NAME := halcyon_modules diff --git a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/config.h b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/config.h index 1453da7d..ef42b2fb 100644 --- a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/config.h +++ b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/config.h @@ -14,4 +14,4 @@ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES -#define DYNAMIC_KEYMAP_LAYER_COUNT 8 \ No newline at end of file +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/keymap.json b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/keymap.json index e27a0bed..c449ad82 100644 --- a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/keymap.json +++ b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/keymap.json @@ -4,13 +4,55 @@ "version": 1, "layout": "LAYOUT_split_3x6_5_hlc", "layers": [ - ["KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", "MT(MOD_LCTL, KC_ESC)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "MT(MOD_RCTL, KC_QUOTE)", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_LBRC", "KC_CAPS", "MO(5)", "KC_RBRC", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "MO(6)", "KC_LGUI", "MT(MOD_LALT, KC_ENT)", "KC_SPC", "MO(3)", "MO(4)", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_TAB", "KC_QUOTE", "KC_COMM", "KC_DOT", "KC_P", "KC_Y", "KC_F", "KC_G", "KC_C", "KC_R", "KC_L", "KC_BSPC", "MT(MOD_LCTL, KC_ESC)", "KC_A", "KC_O", "KC_E", "KC_U", "KC_I", "KC_D", "KC_H", "KC_T", "KC_N", "KC_S", "MT(MOD_RCTL, KC_MINUS)", "KC_LSFT", "KC_SCLN", "KC_Q", "KC_J", "KC_K", "KC_X", "KC_LBRC", "KC_CAPS", "MO(5)", "KC_RBRC", "KC_B", "KC_M", "KC_W", "KC_V", "KC_Z", "KC_RSFT", "MO(6)", "KC_LGUI", "MT(MOD_LALT, KC_ENT)", "KC_SPC", "MO(3)", "MO(4)", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_TAB", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_B", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSPC", "MT(MOD_LCTL, KC_ESC)", "KC_A", "KC_R", "KC_S", "KC_T", "KC_G", "KC_M", "KC_N", "KC_E", "KC_I", "KC_O", "MT(MOD_RCTL, KC_QUOTE)", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_D", "KC_V", "KC_LBRC", "KC_CAPS", "MO(5)", "KC_RBRC", "KC_K", "KC_H", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "MO(6)", "KC_LGUI", "MT(MOD_LALT, KC_ENT)", "KC_SPC", "MO(3)", "MO(4)", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_HOME", "KC_UP", "KC_END", "KC_VOLU", "KC_DEL", "KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_TRNS", "KC_PGDN", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_VOLD", "KC_INS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_SCRL", "KC_TRNS", "KC_TRNS", "KC_PAUSE", "KC_MPRV", "KC_MPLY", "KC_MNXT", "KC_MUTE", "KC_PSCR", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_EQL", "KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_PLUS", "KC_PIPE", "KC_BSLS", "KC_COLN", "KC_SCLN", "KC_MINS", "KC_LBRC", "KC_LCBR", "KC_TRNS", "KC_TRNS", "KC_RCBR", "KC_RBRC", "KC_UNDS", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_QUES", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_TRNS", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_TRNS", "KC_TRNS", "KC_RSFT", "KC_RCTL", "KC_LALT", "KC_RGUI", "KC_TRNS", "KC_TRNS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], - ["KC_TRNS", "KC_TRNS", "KC_TRNS", "DF(0)", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "DF(1)", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_SAI", "RGB_HUI", "RGB_VAI", "RGB_MOD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "DF(2)", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAD", "RGB_HUD", "RGB_VAD", "RGB_RMOD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_MUTE", "KC_NO", "KC_NO", "KC_NO", "KC_NO"] + [ + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC" , + "MT(MOD_LCTL, KC_ESC)" , "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "MT(MOD_RCTL, KC_QUOTE)" , + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_LBRC" , "KC_CAPS" , "MO(5)" , "KC_RBRC" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT" , + "MO(6)" , "KC_LGUI" , "MT(MOD_LALT, KC_ENT)" , "KC_SPC" , "MO(3)" , "MO(4)" , "KC_SPC" , "KC_RALT" , "KC_RGUI" , "KC_APP" , + "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" + ], + [ + "KC_TAB" , "KC_QUOTE", "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y" , "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC" , + "MT(MOD_LCTL, KC_ESC)" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I" , "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "MT(MOD_RCTL, KC_MINUS)" , + "KC_LSFT" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_LBRC" , "KC_CAPS" , "MO(5)" , "KC_RBRC" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT" , + "MO(6)" , "KC_LGUI" , "MT(MOD_LALT, KC_ENT)" , "KC_SPC" , "MO(3)" , "MO(4)" , "KC_SPC" , "KC_RALT" , "KC_RGUI" , "KC_APP" , + "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" + ], + [ + "KC_TAB" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B" , "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC" , + "MT(MOD_LCTL, KC_ESC)" , "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G" , "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "MT(MOD_RCTL, KC_QUOTE)" , + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_LBRC" , "KC_CAPS" , "MO(5)" , "KC_RBRC" , "KC_K" , "KC_H" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT" , + "MO(6)" , "KC_LGUI" , "MT(MOD_LALT, KC_ENT)" , "KC_SPC" , "MO(3)" , "MO(4)" , "KC_SPC" , "KC_RALT" , "KC_RGUI" , "KC_APP" , + "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_MUTE" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" + ], + [ + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "KC_PGUP" , "KC_HOME" , "KC_UP" , "KC_END" , "KC_VOLU" , "KC_DEL" , + "_______" , "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "_______" , "KC_PGDN" , "KC_LEFT" , "KC_DOWN" , "KC_RGHT" , "KC_VOLD" , "KC_INS" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "KC_SCRL" , "_______" , "_______" , "KC_PAUSE", "KC_MPRV" , "KC_MPLY" , "KC_MNXT" , "KC_MUTE" , "KC_PSCR" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" + ], + [ + "KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_EQL" , + "KC_TILD" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC" , "KC_CIRC" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_PLUS" , + "KC_PIPE" , "KC_BSLS" , "KC_COLN" , "KC_SCLN" , "KC_MINS" , "KC_LBRC" , "KC_LCBR" , "_______" , "_______" , "KC_RCBR" , "KC_RBRC" , "KC_UNDS" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_QUES" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" + ], + [ + "_______" , "KC_F9" , "KC_F10" , "KC_F11" , "KC_F12" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "KC_F5" , "KC_F6" , "KC_F7" , "KC_F8" , "_______" , "_______" , "KC_RSFT" , "KC_RCTL" , "KC_LALT" , "KC_RGUI" , "_______" , + "_______" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" + ], + [ + "_______" , "_______" , "_______" , "DF(0)" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "DF(1)" , "_______" , "_______" , "RGB_TOG" , "RGB_SAI" , "RGB_HUI" , "RGB_VAI" , "RGB_MOD" , "_______" , + "_______" , "_______" , "_______" , "DF(2)" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "RGB_SAD" , "RGB_HUD" , "RGB_VAD" , "RGB_RMOD", "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , + "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" , "_______" + ] ], "encoders": [ [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "KC_PGUP", "cw": "KC_PGDN"} ,{"ccw": "KC_PGUP", "cw": "KC_PGDN"}], diff --git a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/rules.mk b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/rules.mk index b8636a7a..27f651ed 100644 --- a/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/rules.mk +++ b/keyboards/splitkb/halcyon/kyria/keymaps/vial_hlc/rules.mk @@ -5,4 +5,4 @@ VIALRGB_ENABLE = yes ENCODER_MAP_ENABLE = yes # This adds module functionality to your keyboard (files found in users/halcyon_modules) -USER_NAME := halcyon_modules \ No newline at end of file +USER_NAME := halcyon_modules diff --git a/users/halcyon_modules/config.h b/users/halcyon_modules/config.h index 0019608a..fb356e6b 100644 --- a/users/halcyon_modules/config.h +++ b/users/halcyon_modules/config.h @@ -11,18 +11,18 @@ #define RP_PWM_USE_PWM5 TRUE #define HAL_USE_PWM TRUE -#define HAL_USE_SPI TRUE #define SPLIT_POINTING_ENABLE #define POINTING_DEVICE_COMBINED #define HLC_BACKLIGHT_TIMEOUT 120000 +#define BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_LEVELS 10 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + #if !defined(HLC_TFT_DISPLAY) #define BACKLIGHT_PIN NO_PIN - #define BACKLIGHT_PWM_DRIVER PWMD5 - #define BACKLIGHT_LEVELS 10 - #define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B #endif #if !defined(HLC_CIRQUE_TRACKPAD) @@ -66,7 +66,7 @@ } #endif -// Elora +// Elora #if PRODUCT_ID == 0xA392 #undef ENCODER_A_PINS #define ENCODER_A_PINS { GP22, HLC_ENCODER_A } @@ -88,4 +88,4 @@ {k10A, k10B, k10C, k10D, k10E, k10F, KC_NO}, \ {k11A, k11B, k11C, k11D, k11E, KC_NO, KC_NO} \ } -#endif \ No newline at end of file +#endif diff --git a/users/halcyon_modules/halcyon.c b/users/halcyon_modules/halcyon.c index e96282a8..954b2b1d 100644 --- a/users/halcyon_modules/halcyon.c +++ b/users/halcyon_modules/halcyon.c @@ -1,13 +1,9 @@ // Copyright 2024 splitkb.com (support@splitkb.com) // SPDX-License-Identifier: GPL-2.0-or-later -#include QMK_KEYBOARD_H - #include "halcyon.h" #include "transactions.h" -#include "print.h" #include "split_util.h" -#include "pointing_device.h" __attribute__((weak)) bool module_post_init_kb(void) { return module_post_init_user(); @@ -29,6 +25,7 @@ __attribute__((weak)) bool display_module_housekeeping_task_user(bool second_dis return true; } +module_t module_master; module_t module; #ifdef HLC_NONE module_t module = hlc_none; @@ -49,6 +46,9 @@ bool backlight_off = false; void backlight_wakeup(void) { backlight_off = false; backlight_enable(); + if (get_backlight_level() == 0) { + backlight_level(BACKLIGHT_LEVELS); + } } // Timeout handling @@ -79,6 +79,8 @@ void housekeeping_task_kb(void) { static bool synced = 0; if(is_transport_connected() && synced == 0) { transaction_rpc_send(MODULE_SYNC, sizeof(module), &module); // Sync to slave + // Good moment to make sure the backlight wakes up after boot for both halves + backlight_wakeup(); synced = 1; } display_module_housekeeping_task_kb(false); // Is master so can never be the second display @@ -90,7 +92,7 @@ void housekeeping_task_kb(void) { display_module_housekeeping_task_kb(false); // Otherwise be the main display } } - + // Backlight feature if (backlight_off && last_input_activity_elapsed() <= HLC_BACKLIGHT_TIMEOUT) { backlight_wakeup(); @@ -194,4 +196,4 @@ const matrix_row_t matrix_mask[] = { 0b0011111, }; #endif -#endif \ No newline at end of file +#endif diff --git a/users/halcyon_modules/halcyon.h b/users/halcyon_modules/halcyon.h index 37e1cda4..2f1878c0 100644 --- a/users/halcyon_modules/halcyon.h +++ b/users/halcyon_modules/halcyon.h @@ -11,11 +11,11 @@ typedef enum module { hlc_tft_display } module_t; -module_t module_master; +extern module_t module_master; bool module_post_init_kb(void); bool module_housekeeping_task_kb(void); bool display_module_housekeeping_task_kb(bool second_display); bool module_post_init_user(void); bool module_housekeeping_task_user(void); -bool display_module_housekeeping_task_user(bool second_display); \ No newline at end of file +bool display_module_housekeeping_task_user(bool second_display); diff --git a/users/halcyon_modules/hlc_cirque_trackpad/config.h b/users/halcyon_modules/hlc_cirque_trackpad/config.h index cbae5653..e93ae55e 100644 --- a/users/halcyon_modules/hlc_cirque_trackpad/config.h +++ b/users/halcyon_modules/hlc_cirque_trackpad/config.h @@ -15,4 +15,4 @@ #define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE #define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE #define CIRQUE_PINNACLE_TAP_ENABLE -#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE \ No newline at end of file +#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE diff --git a/users/halcyon_modules/hlc_cirque_trackpad/rules.mk b/users/halcyon_modules/hlc_cirque_trackpad/rules.mk index 6e49650c..a4983b87 100644 --- a/users/halcyon_modules/hlc_cirque_trackpad/rules.mk +++ b/users/halcyon_modules/hlc_cirque_trackpad/rules.mk @@ -1,7 +1,3 @@ CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) -SPI_DRIVER_REQUIRED = yes -POINTING_DEVICE_ENABLE = yes -POINTING_DEVICE_DRIVER = cirque_pinnacle_spi - -CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file +CONFIG_H += $(CURRENT_DIR)/config.h diff --git a/users/halcyon_modules/hlc_encoder/config.h b/users/halcyon_modules/hlc_encoder/config.h index 44fe802d..0eed0c0f 100644 --- a/users/halcyon_modules/hlc_encoder/config.h +++ b/users/halcyon_modules/hlc_encoder/config.h @@ -9,4 +9,4 @@ #define HLC_ENCODER_BUTTON GP16 #define HLC_ENCODER_A GP27 -#define HLC_ENCODER_B GP26 \ No newline at end of file +#define HLC_ENCODER_B GP26 diff --git a/users/halcyon_modules/hlc_encoder/hlc_encoder.c b/users/halcyon_modules/hlc_encoder/hlc_encoder.c index e32f9b5f..d6ea650b 100644 --- a/users/halcyon_modules/hlc_encoder/hlc_encoder.c +++ b/users/halcyon_modules/hlc_encoder/hlc_encoder.c @@ -1,11 +1,7 @@ // Copyright 2024 splitkb.com (support@splitkb.com) // SPDX-License-Identifier: GPL-2.0-or-later -#include QMK_KEYBOARD_H -#include "util.h" #include "split_util.h" -#include "matrix.h" -#include "debounce.h" #include "atomic_util.h" #ifdef SPLIT_KEYBOARD @@ -128,7 +124,7 @@ void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Populate the matrix row with the state of the col pin current_row_value |= pin_state ? 0 : row_shifter; } - } + } // ↑↑↑ THIS HAS BEEN ADDED/CHANGED // Unselect row @@ -137,4 +133,4 @@ void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Update the matrix current_matrix[current_row] = current_row_value; -} \ No newline at end of file +} diff --git a/users/halcyon_modules/hlc_encoder/rules.mk b/users/halcyon_modules/hlc_encoder/rules.mk index 03fc7e47..0db09e4c 100644 --- a/users/halcyon_modules/hlc_encoder/rules.mk +++ b/users/halcyon_modules/hlc_encoder/rules.mk @@ -1,4 +1,4 @@ CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) SRC += $(CURRENT_DIR)/hlc_encoder.c -CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file +CONFIG_H += $(CURRENT_DIR)/config.h diff --git a/users/halcyon_modules/hlc_tft_display/config.h b/users/halcyon_modules/hlc_tft_display/config.h index 8abf5d00..41b61ac9 100644 --- a/users/halcyon_modules/hlc_tft_display/config.h +++ b/users/halcyon_modules/hlc_tft_display/config.h @@ -29,9 +29,6 @@ // Backlight configuration #define BACKLIGHT_PIN GP27 -#define BACKLIGHT_PWM_DRIVER PWMD5 -#define BACKLIGHT_LEVELS 10 -#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B // Timeout configuration -#define QUANTUM_PAINTER_DISPLAY_TIMEOUT HLC_BACKLIGHT_TIMEOUT \ No newline at end of file +#define QUANTUM_PAINTER_DISPLAY_TIMEOUT HLC_BACKLIGHT_TIMEOUT diff --git a/users/halcyon_modules/hlc_tft_display/hlc_tft_display.c b/users/halcyon_modules/hlc_tft_display/hlc_tft_display.c index 4aad825f..28166951 100644 --- a/users/halcyon_modules/hlc_tft_display/hlc_tft_display.c +++ b/users/halcyon_modules/hlc_tft_display/hlc_tft_display.c @@ -1,17 +1,10 @@ // Copyright 2024 splitkb.com (support@splitkb.com) // SPDX-License-Identifier: GPL-2.0-or-later -#include QMK_KEYBOARD_H - #include "halcyon.h" #include "hlc_tft_display.h" -#include "config.h" -#include "qp.h" -#include "qp_comms.h" #include "qp_surface.h" -#include "qp_st77xx_opcodes.h" -#include "split_util.h" #include // Fonts mono2 @@ -44,6 +37,9 @@ static uint16_t lcd_surface_fb[135*240]; int color_value = 0; +painter_device_t lcd; +painter_device_t lcd_surface; + led_t last_led_usb_state = {0}; layer_state_t last_layer_state = {0}; @@ -88,7 +84,7 @@ void draw_grid() { // Draw the filled cell inside the outline if it's alive if (grid[y][x]) { switch (color_value) { - case 0: + case 0: qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_0, true); break; case 1: @@ -100,7 +96,7 @@ void draw_grid() { case 3: qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_3, true); break; - case 4: + case 4: qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_4, true); break; case 5: @@ -195,10 +191,10 @@ void update_display(void) { last_led_usb_state = led_usb_state; first_run_led = true; } - + if(last_layer_state != layer_state || first_run_layer == false) { switch (get_highest_layer(layer_state|default_layer_state)) { - case 0: + case 0: layer_number = qp_load_image_mem(gfx_0); qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_0, HSV_BLACK); break; @@ -214,7 +210,7 @@ void update_display(void) { layer_number = qp_load_image_mem(gfx_3); qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_3, HSV_BLACK); break; - case 4: + case 4: layer_number = qp_load_image_mem(gfx_4); qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_4, HSV_BLACK); break; @@ -241,7 +237,7 @@ void update_display(void) { } // Quantum function -void suspend_power_down_kb(void) { +void suspend_power_down_kb(void) { qp_power(lcd, false); suspend_power_down_user(); } @@ -280,7 +276,7 @@ bool module_post_init_kb(void) { } // Called from halcyon.c -bool display_module_housekeeping_task_kb(bool second_display) { +bool display_module_housekeeping_task_kb(bool second_display) { if(!display_module_housekeeping_task_user(second_display)) { return false; } if(second_display) { @@ -295,7 +291,7 @@ bool display_module_housekeeping_task_kb(bool second_display) { second_display_set = true; } - if (timer_elapsed32(last_draw) >= 100) { // Throttle to 10 fps + if (timer_elapsed32(last_draw) >= 100) { // Throttle to 10 fps draw_grid(); update_grid(); @@ -318,4 +314,4 @@ bool display_module_housekeeping_task_kb(bool second_display) { qp_surface_draw(lcd_surface, lcd, 0, 0, 0); return true; -} \ No newline at end of file +} diff --git a/users/halcyon_modules/hlc_tft_display/hlc_tft_display.h b/users/halcyon_modules/hlc_tft_display/hlc_tft_display.h index 93a2c79f..45bab704 100644 --- a/users/halcyon_modules/hlc_tft_display/hlc_tft_display.h +++ b/users/halcyon_modules/hlc_tft_display/hlc_tft_display.h @@ -25,8 +25,8 @@ // #define HSV_LAYER_8 213, 56, 255 #define HSV_LAYER_UNDEF 0, 255, 255 -painter_device_t lcd; -painter_device_t lcd_surface; +extern painter_device_t lcd; +extern painter_device_t lcd_surface; void draw_grid(void); void update_grid(void); @@ -35,4 +35,4 @@ void add_cell_cluster(void); uint8_t get_random_color_index(void); void update_display(void); void backlight_wakeup(void); -void backlight_suspend(void); \ No newline at end of file +void backlight_suspend(void); diff --git a/users/halcyon_modules/hlc_tft_display/rules.mk b/users/halcyon_modules/hlc_tft_display/rules.mk index b499d77f..34319ae9 100644 --- a/users/halcyon_modules/hlc_tft_display/rules.mk +++ b/users/halcyon_modules/hlc_tft_display/rules.mk @@ -1,15 +1,9 @@ CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) -QUANTUM_PAINTER_ENABLE = yes -QUANTUM_PAINTER_DRIVERS += st7789_spi surface -BACKLIGHT_ENABLE = yes -BACKLIGHT_DRIVER = pwm - -SRC += $(CURRENT_DIR)/hlc_tft_display.c +SRC += $(CURRENT_DIR)/hlc_tft_display.c +CONFIG_H += $(CURRENT_DIR)/config.h # Fonts SRC += $(CURRENT_DIR)/graphics/fonts/Retron2000-27.qff.c $(CURRENT_DIR)/graphics/fonts/Retron2000-underline-27.qff.c # Numbers in image format SRC += $(CURRENT_DIR)/graphics/numbers/0.qgf.c $(CURRENT_DIR)/graphics/numbers/1.qgf.c $(CURRENT_DIR)/graphics/numbers/2.qgf.c $(CURRENT_DIR)/graphics/numbers/3.qgf.c $(CURRENT_DIR)/graphics/numbers/4.qgf.c $(CURRENT_DIR)/graphics/numbers/5.qgf.c $(CURRENT_DIR)/graphics/numbers/6.qgf.c $(CURRENT_DIR)/graphics/numbers/7.qgf.c $(CURRENT_DIR)/graphics/numbers/8.qgf.c $(CURRENT_DIR)/graphics/numbers/9.qgf.c $(CURRENT_DIR)/graphics/numbers/undef.qgf.c - -CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file diff --git a/users/halcyon_modules/rules.mk b/users/halcyon_modules/rules.mk index 61729127..8136ecc4 100644 --- a/users/halcyon_modules/rules.mk +++ b/users/halcyon_modules/rules.mk @@ -4,21 +4,16 @@ SRC += halcyon.c LTO_ENABLE ?= yes -ifndef HLC_CIRQUE_TRACKPAD #add any other pointing devices here - # Needed otherwise pointing devices will not work - POINTING_DEVICE_ENABLE = yes - # cirque defined here as otherwise sensitivity on slave is way too high - # may need to be changed when we start supporting other pointing devices - POINTING_DEVICE_DRIVER = cirque_pinnacle_spi -endif +# May need to be changed when adding more pointing devices +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi -ifndef HLC_TFT_DISPLAY #add any other displays here - # Needed otherwise displays will not work - QUANTUM_PAINTER_ENABLE = yes - QUANTUM_PAINTER_DRIVERS += st7789_spi - BACKLIGHT_ENABLE = yes - BACKLIGHT_DRIVER = pwm -endif +# May need to be changed when adding more displays +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7789_spi surface + +BACKLIGHT_ENABLE = yes +BACKLIGHT_DRIVER = pwm ifdef HLC_ENCODER include $(CURRENT_DIR)/hlc_encoder/rules.mk @@ -36,4 +31,4 @@ HLC_OPTIONS := $(HLC_NONE) $(HLC_CIRQUE_TRACKPAD) $(HLC_ENCODER) $(HLC_TFT_DISPL ifeq ($(filter 1, $(HLC_OPTIONS)), ) $(error Wrong or no module specified. Please specify one of the following: HLC_NONE, HLC_CIRQUE_TRACKPAD, HLC_ENCODER or HLC_TFT_DISPLAY.) -endif \ No newline at end of file +endif