diff options
Diffstat (limited to 'quantum')
| -rw-r--r-- | quantum/eeconfig.c | 4 | ||||
| -rw-r--r-- | quantum/keymap_extras/keymap_farsi.h | 171 | ||||
| -rw-r--r-- | quantum/led.c | 11 | ||||
| -rw-r--r-- | quantum/led.h | 3 | ||||
| -rw-r--r-- | quantum/painter/qp.h | 6 | ||||
| -rw-r--r-- | quantum/painter/qp_internal.c | 1 | ||||
| -rw-r--r-- | quantum/painter/rules.mk | 16 | ||||
| -rw-r--r-- | quantum/process_keycode/process_rgb_matrix.c | 101 | ||||
| -rw-r--r-- | quantum/process_keycode/process_rgb_matrix.h | 10 | ||||
| -rw-r--r-- | quantum/process_keycode/process_underglow.c | 91 | ||||
| -rw-r--r-- | quantum/process_keycode/process_underglow.h | 10 | ||||
| -rw-r--r-- | quantum/rgblight/rgblight_drivers.c | 8 | 
12 files changed, 417 insertions, 15 deletions
| diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index 40690d6a97..ffbbf43a95 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c @@ -46,7 +46,7 @@ __attribute__((weak)) void eeconfig_init_kb(void) {   */  void eeconfig_init_quantum(void) {  #if defined(EEPROM_DRIVER) -    eeprom_driver_erase(); +    eeprom_driver_format(false);  #endif      eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); @@ -108,7 +108,7 @@ void eeconfig_enable(void) {   */  void eeconfig_disable(void) {  #if defined(EEPROM_DRIVER) -    eeprom_driver_erase(); +    eeprom_driver_format(false);  #endif      eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER_OFF);  } diff --git a/quantum/keymap_extras/keymap_farsi.h b/quantum/keymap_extras/keymap_farsi.h new file mode 100644 index 0000000000..d268917513 --- /dev/null +++ b/quantum/keymap_extras/keymap_farsi.h @@ -0,0 +1,171 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +/******************************************************************************* +  88888888888 888      d8b                .d888 d8b 888               d8b +      888     888      Y8P               d88P"  Y8P 888               Y8P +      888     888                        888        888 +      888     88888b.  888 .d8888b       888888 888 888  .d88b.       888 .d8888b +      888     888 "88b 888 88K           888    888 888 d8P  Y8b      888 88K +      888     888  888 888 "Y8888b.      888    888 888 88888888      888 "Y8888b. +      888     888  888 888      X88      888    888 888 Y8b.          888      X88 +      888     888  888 888  88888P'      888    888 888  "Y8888       888  88888P' +                                                        888                 888 +                                                        888                 888 +                                                        888                 888 +     .d88b.   .d88b.  88888b.   .d88b.  888d888 8888b.  888888 .d88b.   .d88888 +    d88P"88b d8P  Y8b 888 "88b d8P  Y8b 888P"      "88b 888   d8P  Y8b d88" 888 +    888  888 88888888 888  888 88888888 888    .d888888 888   88888888 888  888 +    Y88b 888 Y8b.     888  888 Y8b.     888    888  888 Y88b. Y8b.     Y88b 888 +     "Y88888  "Y8888  888  888  "Y8888  888    "Y888888  "Y888 "Y8888   "Y88888 +         888 +    Y8b d88P +     "Y88P" +*******************************************************************************/ + +#pragma once +#include "keycodes.h" +// clang-format off + +// Aliases +#define FA_ZWJ  KC_GRV  // (zero-width joiner) +#define FA_1A   KC_1    // ۱ +#define FA_2A   KC_2    // ۲ +#define FA_3A   KC_3    // ۳ +#define FA_4A   KC_4    // ۴ +#define FA_5A   KC_5    // ۵ +#define FA_6A   KC_6    // ۶ +#define FA_7A   KC_7    // ۷ +#define FA_8A   KC_8    // ۸ +#define FA_9A   KC_9    // ۹ +#define FA_0A   KC_0    // ۰ +#define FA_MINS KC_MINS // - +#define FA_EQL  KC_EQL  // = +#define FA_ZAD  KC_Q    // ض +#define FA_SAD  KC_W    // ص +#define FA_SE   KC_E    // ث +#define FA_QAF  KC_R    // ق +#define FA_FE   KC_T    // ف +#define FA_GHYN KC_Y    // غ +#define FA_EYN  KC_U    // ع +#define FA_HE   KC_I    // ه +#define FA_KHE  KC_O    // خ +#define FA_HEJ  KC_P    // ح +#define FA_JIM  KC_LBRC // ج +#define FA_CHE  KC_RBRC // چ +#define FA_SHIN KC_A    // ش +#define FA_SIN  KC_S    // س +#define FA_YE   KC_D    // ی +#define FA_BE   KC_F    // ب +#define FA_LAM  KC_G    // ل +#define FA_ALEF KC_H    // ا +#define FA_TE   KC_J    // ت +#define FA_NOON KC_K    // ن +#define FA_MIM  KC_L    // م +#define FA_KAF  KC_SCLN // ک +#define FA_GAF  KC_QUOT // گ +#define FA_BSLS KC_BSLS // (backslash) +#define FA_LT   KC_LT   // < +#define FA_ZA   KC_Z    // ظ +#define FA_TA   KC_X    // ط +#define FA_ZE   KC_C    // ز +#define FA_RE   KC_V    // ر +#define FA_ZAL  KC_B    // ذ +#define FA_DAL  KC_N    // د +#define FA_PE   KC_M    // پ +#define FA_WAW  KC_COMM // و +#define FA_DOT  KC_DOT  // . +#define FA_SLSH KC_SLSH // / +#define FA_SPC  KC_SPC  //   +#define FA_DIV  S(FA_ZWJ)  // ÷ +#define FA_EXLM S(FA_1A)   // ! +#define FA_THS  S(FA_2A)   // ٬ +#define FA_DECS S(FA_3A)   // ٫ +#define FA_RIAL S(FA_4A)   // ﷼ +#define FA_PRCA S(FA_5A)   // ٪ +#define FA_MUL  S(FA_6A)   // × +#define FA_COMA S(FA_7A)   // ، +#define FA_ASTR S(FA_8A)   // * +#define FA_RPRN S(FA_9A)   // ) +#define FA_LPRN S(FA_0A)   // ( +#define FA_TATW S(FA_MINS) // ـ +#define FA_PLUS S(FA_EQL)  // + +#define FA_SUK  S(FA_ZAD)  // ْ +#define FA_DMTN S(FA_SAD)  // ٌ +#define FA_KSTN S(FA_SE)   // ٍ +#define FA_FTHN S(FA_QAF)  // ً +#define FA_DMM  S(FA_FE)   // ُ +#define FA_KAS  S(FA_GHYN) // ِ +#define FA_FAT  S(FA_EYN)  // َ +#define FA_TSDD S(FA_HE)   //  +#define FA_RBRC S(FA_KHE)  // ] +#define FA_LBRC S(FA_HEJ)  // [ +#define FA_RCBR S(FA_JIM)  // } +#define FA_LCBR S(FA_CHE)  // { +#define FA_HMZV S(FA_SHIN) // ؤ +#define FA_HMZY S(FA_SIN)  // ئ +#define FA_YEA  S(FA_YE)   // ي +#define FA_HMZU S(FA_BE)   // إ +#define FA_HMZO S(FA_LAM)  // أ +#define FA_MALF S(FA_ALEF) // آ +#define FA_TEHM S(FA_TE)   // ة +#define FA_RQOT S(FA_NOON) // » +#define FA_LQOT S(FA_MIM)  // « +#define FA_COLN S(FA_KAF)  // : +#define FA_SCLA S(FA_GAF)  // ؛ +#define FA_GT   S(FA_LT)   // > +#define FA_KAFA S(FA_ZA)   // ك +#define FA_MADO S(FA_TA)   // ٓ +#define FA_JEH  S(FA_ZE)   // ژ +#define FA_SUPA S(FA_RE)   // ٰ +#define FA_ZWNJ S(FA_ZAL)  // (zero-width non-joiner) +#define FA_HMZA S(FA_DAL)  // ٔ +#define FA_HMZ  S(FA_PE)   // ء +#define FA_QSA  S(FA_SLSH) // ؟ +#define FA_TILD ALGR(FA_ZWJ)  // ~ +#define FA_GRV  ALGR(FA_1A)   // ` +#define FA_AT   ALGR(FA_2A)   // @ +#define FA_HASH ALGR(FA_3A)   // # +#define FA_DLR  ALGR(FA_4A)   // $ +#define FA_PERC ALGR(FA_5A)   // % +#define FA_CIRC ALGR(FA_6A)   // ^ +#define FA_AMPR ALGR(FA_7A)   // & +#define FA_BULT ALGR(FA_8A)   // • +#define FA_LRM  ALGR(FA_9A)   // (left-to-right mark) +#define FA_RLM  ALGR(FA_0A)   // (right-to-left mark) +#define FA_UNDS ALGR(FA_MINS) // _ +#define FA_DMNS ALGR(FA_EQL)  // − (dead) +#define FA_DEG  ALGR(FA_ZAD)  // ° +#define FA_EURO ALGR(FA_SE)   // € +#define FA_LRO  ALGR(FA_HE)   // (left-to-right override) +#define FA_RLO  ALGR(FA_KHE)  // (right-to-left override) +#define FA_PDF  ALGR(FA_HEJ)  // (pop directional formatting) +#define FA_LRE  ALGR(FA_JIM)  // (left-to-right embedding) +#define FA_RLE  ALGR(FA_CHE)  // (right-to-left embedding) +#define FA_ALFM ALGR(FA_YE)   // ى +#define FA_ALFW ALGR(FA_ALEF) // ٱ +#define FA_LORP ALGR(FA_NOON) // ﴾ +#define FA_RORP ALGR(FA_MIM)  // ﴿ +#define FA_SCLN ALGR(FA_KAF)  // ; +#define FA_DQT  ALGR(FA_GAF)  // " +#define FA_MINA ALGR(FA_BSLS) // - +#define FA_PIPE ALGR(FA_ZA)   // | +#define FA_SUBA ALGR(FA_RA)   // ٖ +#define FA_HMZB ALGR(FA_DAL)  // ء +#define FA_ELLP ALGR(FA_PE)   // … +#define FA_COMM ALGR(FA_WAW)  // , +#define FA_QUOT ALGR(FA_DOT)  // ' +#define FA_QUES ALGR(FA_SLSH) // ? +#define FA_1    S(ALGR(FA_1A))   // 1 +#define FA_2    S(ALGR(FA_2A))   // 2 +#define FA_3    S(ALGR(FA_3A))   // 3 +#define FA_4    S(ALGR(FA_4A))   // 4 +#define FA_5    S(ALGR(FA_5A))   // 5 +#define FA_6    S(ALGR(FA_6A))   // 6 +#define FA_7    S(ALGR(FA_7A))   // 7 +#define FA_8    S(ALGR(FA_8A))   // 8 +#define FA_9    S(ALGR(FA_9A))   // 9 +#define FA_0    S(ALGR(FA_0A))   // 0 +#define FA_BRKP S(ALGR(FA_LT))   // ¦ +#define FA_NNBS S(ALGR(FA_SPC))  // (narrow non-breaking space) + diff --git a/quantum/led.c b/quantum/led.c index e2b5985109..aec3edc823 100644 --- a/quantum/led.c +++ b/quantum/led.c @@ -56,19 +56,15 @@ static void handle_backlight_caps_lock(led_t led_state) {  #endif  static uint32_t last_led_modification_time = 0; -uint32_t        last_led_activity_time(void) { + +uint32_t last_led_activity_time(void) {      return last_led_modification_time;  } +  uint32_t last_led_activity_elapsed(void) {      return timer_elapsed32(last_led_modification_time);  } -/** \brief Lock LED set callback - keymap/user level - * - * \deprecated Use led_update_user() instead. - */ -__attribute__((weak)) void led_set_user(uint8_t usb_led) {} -  /** \brief Lock LED update callback - keymap/user level   *   * \return True if led_update_kb() should run its own code, false otherwise. @@ -146,7 +142,6 @@ __attribute__((weak)) void led_set(uint8_t usb_led) {      handle_backlight_caps_lock((led_t)usb_led);  #endif -    led_set_user(usb_led);      led_update_kb((led_t)usb_led);  } diff --git a/quantum/led.h b/quantum/led.h index b9fad670ae..669e93e194 100644 --- a/quantum/led.h +++ b/quantum/led.h @@ -48,9 +48,6 @@ void led_wakeup(void);  void led_task(void); -/* Deprecated callbacks */ -void led_set_user(uint8_t usb_led); -  /* Callbacks */  bool led_update_user(led_t led_state);  bool led_update_kb(led_t led_state); diff --git a/quantum/painter/qp.h b/quantum/painter/qp.h index 02acbf589a..820c418f43 100644 --- a/quantum/painter/qp.h +++ b/quantum/painter/qp.h @@ -539,6 +539,12 @@ int16_t qp_drawtext_recolor(painter_device_t device, uint16_t x, uint16_t y, pai  #    define GC9A01_NUM_DEVICES 0  #endif // QUANTUM_PAINTER_GC9A01_ENABLE +#ifdef QUANTUM_PAINTER_GC9107_ENABLE +#    include "qp_gc9107.h" +#else // QUANTUM_PAINTER_GC9107_ENABLE +#    define GC9107_NUM_DEVICES 0 +#endif // QUANTUM_PAINTER_GC9107_ENABLE +  #ifdef QUANTUM_PAINTER_SSD1351_ENABLE  #    include "qp_ssd1351.h"  #else // QUANTUM_PAINTER_SSD1351_ENABLE diff --git a/quantum/painter/qp_internal.c b/quantum/painter/qp_internal.c index 1f0f981796..7d4a6430af 100644 --- a/quantum/painter/qp_internal.c +++ b/quantum/painter/qp_internal.c @@ -16,6 +16,7 @@ enum {                       + (ST7789_NUM_DEVICES)  // ST7789                       + (ST7735_NUM_DEVICES)  // ST7735                       + (GC9A01_NUM_DEVICES)  // GC9A01 +                     + (GC9107_NUM_DEVICES)  // GC9107                       + (SSD1351_NUM_DEVICES) // SSD1351                       + (SH1106_NUM_DEVICES)  // SH1106  }; diff --git a/quantum/painter/rules.mk b/quantum/painter/rules.mk index d991a6d742..7b2ab702ee 100644 --- a/quantum/painter/rules.mk +++ b/quantum/painter/rules.mk @@ -14,6 +14,7 @@ VALID_QUANTUM_PAINTER_DRIVERS := \      st7735_spi \      st7789_spi \      gc9a01_spi \ +    gc9107_spi \      ssd1351_spi \      sh1106_i2c \      sh1106_spi @@ -131,10 +132,21 @@ define handle_quantum_painter_driver          OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE          COMMON_VPATH += \              $(DRIVER_PATH)/painter/tft_panel \ -            $(DRIVER_PATH)/painter/gc9a01 +            $(DRIVER_PATH)/painter/gc9xxx          SRC += \              $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \ -            $(DRIVER_PATH)/painter/gc9a01/qp_gc9a01.c +            $(DRIVER_PATH)/painter/gc9xxx/qp_gc9a01.c + +    else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9107_spi) +        QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes +        QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes +        OPT_DEFS += -DQUANTUM_PAINTER_GC9107_ENABLE -DQUANTUM_PAINTER_GC9107_SPI_ENABLE +        COMMON_VPATH += \ +            $(DRIVER_PATH)/painter/tft_panel \ +            $(DRIVER_PATH)/painter/gc9xxx +        SRC += \ +            $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \ +            $(DRIVER_PATH)/painter/gc9xxx/qp_gc9107.c      else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)          QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes diff --git a/quantum/process_keycode/process_rgb_matrix.c b/quantum/process_keycode/process_rgb_matrix.c new file mode 100644 index 0000000000..fd2aa1a0c7 --- /dev/null +++ b/quantum/process_keycode/process_rgb_matrix.c @@ -0,0 +1,101 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "process_rgb_matrix.h" +#include "rgb_matrix.h" +#include "action_util.h" +#include "keycodes.h" +#include "modifiers.h" + +bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record) { +#ifdef RGB_TRIGGER_ON_KEYDOWN +    if (record->event.pressed) { +#else +    if (!record->event.pressed) { +#endif +        bool shifted = get_mods() & MOD_MASK_SHIFT; +        switch (keycode) { +            case QK_RGB_MATRIX_ON: +                rgb_matrix_enable(); +                return false; +            case QK_RGB_MATRIX_OFF: +                rgb_matrix_disable(); +                return false; +            case QK_RGB_MATRIX_TOGGLE: +                rgb_matrix_toggle(); +                return false; +            case QK_RGB_MATRIX_MODE_NEXT: +                if (shifted) { +                    rgb_matrix_step_reverse(); +                } else { +                    rgb_matrix_step(); +                } +                return false; +            case QK_RGB_MATRIX_MODE_PREVIOUS: +                if (shifted) { +                    rgb_matrix_step(); +                } else { +                    rgb_matrix_step_reverse(); +                } +                return false; +            case QK_RGB_MATRIX_HUE_UP: +                if (shifted) { +                    rgb_matrix_decrease_hue(); +                } else { +                    rgb_matrix_increase_hue(); +                } +                return false; +            case QK_RGB_MATRIX_HUE_DOWN: +                if (shifted) { +                    rgb_matrix_increase_hue(); +                } else { +                    rgb_matrix_decrease_hue(); +                } +                return false; +            case QK_RGB_MATRIX_SATURATION_UP: +                if (shifted) { +                    rgb_matrix_decrease_sat(); +                } else { +                    rgb_matrix_increase_sat(); +                } +                return false; +            case QK_RGB_MATRIX_SATURATION_DOWN: +                if (shifted) { +                    rgb_matrix_increase_sat(); +                } else { +                    rgb_matrix_decrease_sat(); +                } +                return false; +            case QK_RGB_MATRIX_VALUE_UP: +                if (shifted) { +                    rgb_matrix_decrease_val(); +                } else { +                    rgb_matrix_increase_val(); +                } +                return false; +            case QK_RGB_MATRIX_VALUE_DOWN: +                if (shifted) { +                    rgb_matrix_increase_val(); +                } else { +                    rgb_matrix_decrease_val(); +                } +                return false; +            case QK_RGB_MATRIX_SPEED_UP: +                if (shifted) { +                    rgb_matrix_decrease_speed(); +                } else { +                    rgb_matrix_increase_speed(); +                } +                return false; +            case QK_RGB_MATRIX_SPEED_DOWN: +                if (shifted) { +                    rgb_matrix_increase_speed(); +                } else { +                    rgb_matrix_decrease_speed(); +                } +                return false; +        } +    } + +    return true; +} diff --git a/quantum/process_keycode/process_rgb_matrix.h b/quantum/process_keycode/process_rgb_matrix.h new file mode 100644 index 0000000000..a02bf57b5f --- /dev/null +++ b/quantum/process_keycode/process_rgb_matrix.h @@ -0,0 +1,10 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <stdint.h> +#include <stdbool.h> +#include "action.h" + +bool process_rgb_matrix(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/process_keycode/process_underglow.c b/quantum/process_keycode/process_underglow.c new file mode 100644 index 0000000000..779672ac07 --- /dev/null +++ b/quantum/process_keycode/process_underglow.c @@ -0,0 +1,91 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "process_underglow.h" +#include "rgblight.h" +#include "action_util.h" +#include "keycodes.h" +#include "modifiers.h" + +bool process_underglow(uint16_t keycode, keyrecord_t *record) { +    if (record->event.pressed) { +        uint8_t shifted = get_mods() & MOD_MASK_SHIFT; +        switch (keycode) { +            case QK_UNDERGLOW_TOGGLE: +                rgblight_toggle(); +                return false; +            case QK_UNDERGLOW_MODE_NEXT: +                if (shifted) { +                    rgblight_step_reverse(); +                } else { +                    rgblight_step(); +                } +                return false; +            case QK_UNDERGLOW_MODE_PREVIOUS: +                if (shifted) { +                    rgblight_step(); +                } else { +                    rgblight_step_reverse(); +                } +                return false; +            case QK_UNDERGLOW_HUE_UP: +                if (shifted) { +                    rgblight_decrease_hue(); +                } else { +                    rgblight_increase_hue(); +                } +                return false; +            case QK_UNDERGLOW_HUE_DOWN: +                if (shifted) { +                    rgblight_increase_hue(); +                } else { +                    rgblight_decrease_hue(); +                } +                return false; +            case QK_UNDERGLOW_SATURATION_UP: +                if (shifted) { +                    rgblight_decrease_sat(); +                } else { +                    rgblight_increase_sat(); +                } +                return false; +            case QK_UNDERGLOW_SATURATION_DOWN: +                if (shifted) { +                    rgblight_increase_sat(); +                } else { +                    rgblight_decrease_sat(); +                } +                return false; +            case QK_UNDERGLOW_VALUE_UP: +                if (shifted) { +                    rgblight_decrease_val(); +                } else { +                    rgblight_increase_val(); +                } +                return false; +            case QK_UNDERGLOW_VALUE_DOWN: +                if (shifted) { +                    rgblight_increase_hue(); +                } else { +                    rgblight_decrease_hue(); +                } +                return false; +            case QK_UNDERGLOW_SPEED_UP: +                if (shifted) { +                    rgblight_decrease_speed(); +                } else { +                    rgblight_increase_speed(); +                } +                return false; +            case QK_UNDERGLOW_SPEED_DOWN: +                if (shifted) { +                    rgblight_increase_speed(); +                } else { +                    rgblight_decrease_speed(); +                } +                return false; +        } +    } + +    return true; +} diff --git a/quantum/process_keycode/process_underglow.h b/quantum/process_keycode/process_underglow.h new file mode 100644 index 0000000000..b409cafbb8 --- /dev/null +++ b/quantum/process_keycode/process_underglow.h @@ -0,0 +1,10 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <stdint.h> +#include <stdbool.h> +#include "action.h" + +bool process_underglow(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/rgblight/rgblight_drivers.c b/quantum/rgblight/rgblight_drivers.c index 8902b8f842..76e9031aec 100644 --- a/quantum/rgblight/rgblight_drivers.c +++ b/quantum/rgblight/rgblight_drivers.c @@ -14,6 +14,14 @@ const rgblight_driver_t rgblight_driver = {  #elif defined(RGBLIGHT_APA102)  #    include "apa102.h" +// Temporary shim +static void apa102_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) { +    for (uint16_t i = 0; i < number_of_leds; i++) { +        apa102_set_color(i, ledarray[i].r, ledarray[i].g, ledarray[i].b); +    } +    apa102_flush(); +} +  const rgblight_driver_t rgblight_driver = {      .init    = apa102_init,      .setleds = apa102_setleds, | 
