diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c index b2054c96d5..e13bf61e86 100644 --- a/drivers/led/snled27351-simple.c +++ b/drivers/led/snled27351-simple.c @@ -16,6 +16,7 @@ #include "snled27351-simple.h" #include "i2c_master.h" +#include "gpio.h" #define SNLED27351_PWM_REGISTER_COUNT 192 #define SNLED27351_LED_CONTROL_REGISTER_COUNT 24 @@ -249,6 +250,24 @@ void snled27351_flush(void) { #endif } +void snled27351_shutdown(void) { +# if defined(LED_DRIVER_SHUTDOWN_PIN) + writePinLow(LED_DRIVER_SHUTDOWN_PIN); +# else + for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) + snled27351_sw_shutdown(i); +# endif +} + +void snled27351_exit_shutdown(void) { +# if defined(LED_DRIVER_SHUTDOWN_PIN) + writePinHigh(LED_DRIVER_SHUTDOWN_PIN); +# else + for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) + snled27351_sw_return_normal(i); +# endif +} + void snled27351_sw_return_normal(uint8_t addr) { // Select to function page snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index 2fc62a6f0a..89f6ec418a 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -171,7 +171,8 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index); void snled27351_update_led_control_registers(uint8_t addr, uint8_t index); void snled27351_flush(void); - +void snled27351_shutdown(void); +void snled27351_exit_shutdown(void); void snled27351_sw_return_normal(uint8_t addr); void snled27351_sw_shutdown(uint8_t addr); diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index 71992b7322..94bd8e07cf 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c @@ -16,6 +16,7 @@ #include "snled27351.h" #include "i2c_master.h" +#include "gpio.h" #define SNLED27351_PWM_REGISTER_COUNT 192 #define SNLED27351_LED_CONTROL_REGISTER_COUNT 24 @@ -264,6 +265,24 @@ void snled27351_flush(void) { #endif } +void snled27351_shutdown(void) { +# if defined(LED_DRIVER_SHUTDOWN_PIN) + writePinLow(LED_DRIVER_SHUTDOWN_PIN); +# else + for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) + snled27351_sw_shutdown(i); +# endif +} + +void snled27351_exit_shutdown(void) { +# if defined(LED_DRIVER_SHUTDOWN_PIN) + writePinHigh(LED_DRIVER_SHUTDOWN_PIN); +# else + for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) + snled27351_sw_return_normal(i); +# endif +} + void snled27351_sw_return_normal(uint8_t addr) { // Select to function page snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index 77337f177b..0939194621 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -185,7 +185,8 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index); void snled27351_update_led_control_registers(uint8_t addr, uint8_t index); void snled27351_flush(void); - +void snled27351_shutdown(void); +void snled27351_exit_shutdown(void); void snled27351_sw_return_normal(uint8_t addr); void snled27351_sw_shutdown(uint8_t addr); diff --git a/keyboards/keychron/common/Backup 1 of factory_test.c b/keyboards/keychron/common/Backup 1 of factory_test.c deleted file mode 100644 index 81095e30ee..0000000000 --- a/keyboards/keychron/common/Backup 1 of factory_test.c +++ /dev/null @@ -1,445 +0,0 @@ -/* Copyright 2021 @ Keychron (https://www.keychron.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 . - */ - -#include "quantum.h" -#include "raw_hid.h" -#include "via.h" - -#include "keychron_task.h" -#ifdef LK_WIRELESS_ENABLE -# include "transport.h" -# include "battery.h" -# include "lpm.h" -# include "lkbt51.h" -# include "indicator.h" -#endif -#include "config.h" -#include "version.h" - -#ifndef RAW_EPSIZE -# define RAW_EPSIZE 32 -#endif - -#ifndef BL_CYCLE_KEY -# define BL_CYCLE_KEY KC_RIGHT -#endif - -#ifndef BL_TRIG_KEY -# define BL_TRIG_KEY KC_HOME -#endif - -#ifndef P2P4G_CELAR_MASK -# define P2P4G_CELAR_MASK P2P4G_CLEAR_PAIRING_TYPE_C -#endif - -enum { - BACKLIGHT_TEST_OFF = 0, - BACKLIGHT_TEST_WHITE, - BACKLIGHT_TEST_RED, - BACKLIGHT_TEST_GREEN, - BACKLIGHT_TEST_BLUE, - BACKLIGHT_TEST_MAX, -}; - -enum { - KEY_PRESS_FN = 0x01 << 0, - KEY_PRESS_J = 0x01 << 1, - KEY_PRESS_Z = 0x01 << 2, - KEY_PRESS_BL_KEY1 = 0x01 << 3, - KEY_PRESS_BL_KEY2 = 0x01 << 4, - KEY_PRESS_FACTORY_RESET = KEY_PRESS_FN | KEY_PRESS_J | KEY_PRESS_Z, - KEY_PRESS_BACKLIGTH_TEST = KEY_PRESS_FN | KEY_PRESS_BL_KEY1 | KEY_PRESS_BL_KEY2, -}; - -enum { - FACTORY_TEST_CMD_BACKLIGHT = 0x01, - FACTORY_TEST_CMD_OS_SWITCH, - FACTORY_TEST_CMD_JUMP_TO_BL, - FACTORY_TEST_CMD_INT_PIN, - FACTORY_TEST_CMD_GET_TRANSPORT, - FACTORY_TEST_CMD_CHARGING_ADC, - FACTORY_TEST_CMD_RADIO_CARRIER, - FACTORY_TEST_CMD_GET_BUILD_TIME, -}; - -enum { - P2P4G_CLEAR_PAIRING_TYPE_A = 0x01 << 0, - P2P4G_CLEAR_PAIRING_TYPE_C = 0x01 << 1, -}; - -enum { - OS_SWITCH = 0x01, -}; - -static uint32_t factory_reset_timer = 0; -static uint8_t factory_reset_state = 0; -static uint8_t backlight_test_mode = BACKLIGHT_TEST_OFF; - -static uint32_t factory_reset_ind_timer = 0; -static uint8_t factory_reset_ind_state = 0; -static bool report_os_sw_state = false; -static bool keys_released = true; - -void factory_timer_start(void) { - factory_reset_timer = timer_read32(); -} - -static inline void factory_timer_check(void) { - if (timer_elapsed32(factory_reset_timer) > 3000) { - factory_reset_timer = 0; - - if (factory_reset_state == KEY_PRESS_FACTORY_RESET) { - factory_reset_ind_timer = timer_read32(); - factory_reset_ind_state++; - keys_released = false; - - clear_keyboard(); // Avoid key being pressed after NKRO state changed - layer_state_t default_layer_tmp = default_layer_state; - eeconfig_init(); - keymap_config.raw = eeconfig_read_keymap(); - default_layer_set(default_layer_tmp); -#ifdef LED_MATRIX_ENABLE - if (!led_matrix_is_enabled()) led_matrix_enable(); - led_matrix_init(); -#endif -#ifdef RGB_MATRIX_ENABLE - if (!rgb_matrix_is_enabled()) rgb_matrix_enable(); - rgb_matrix_init(); -#endif -#ifdef LK_WIRELESS_ENABLE - lkbt51_factory_reset(P2P4G_CELAR_MASK); -#endif - } else if (factory_reset_state == KEY_PRESS_BACKLIGTH_TEST) { -#ifdef LED_MATRIX_ENABLE - if (!led_matrix_is_enabled()) led_matrix_enable(); -#endif -#ifdef RGB_MATRIX_ENABLE - if (!rgb_matrix_is_enabled()) rgb_matrix_enable(); -#endif - backlight_test_mode = BACKLIGHT_TEST_WHITE; - } - - factory_reset_state = 0; - } -} - -static inline void factory_reset_ind_timer_check(void) { - if (factory_reset_ind_timer && timer_elapsed32(factory_reset_ind_timer) > 250) { - if (factory_reset_ind_state++ > 6) { - factory_reset_ind_timer = factory_reset_ind_state = 0; - } else { - factory_reset_ind_timer = timer_read32(); - } - } -} - -bool process_record_factory_test(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { -#if defined(FN_KEY_1) || defined(FN_KEY_2) -# if defined(FN_KEY_1) - case FN_KEY_1: /* fall through */ -# endif -# if defined(FN_KEY_2) - case FN_KEY_2: -# endif -# if defined(FN_KEY_3) - case FN_KEY_3: -# endif - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_FN; - } else { - factory_reset_state &= ~KEY_PRESS_FN; - factory_reset_timer = 0; - } - break; -#endif - case KC_J: - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_J; - if (factory_reset_state == 0x07) factory_timer_start(); - if (factory_reset_state & KEY_PRESS_FN) return false; - } else { - factory_reset_state &= ~KEY_PRESS_J; - factory_reset_timer = 0; - } - break; - case KC_Z: -#if defined(FN_Z_KEY) - case FN_Z_KEY: -#endif - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_Z; - if (factory_reset_state == 0x07) factory_timer_start(); - if ((factory_reset_state & KEY_PRESS_FN) && keycode == KC_Z) return false; - } else { - factory_reset_state &= ~KEY_PRESS_Z; - factory_reset_timer = 0; - /* Avoid changing backlight effect on key released if FN_Z_KEY is mode*/ - - if (!keys_released && keycode >= QK_BACKLIGHT_ON && keycode <= RGB_MODE_TWINKLE) { - keys_released = true; - return false; - } - } - break; -#if defined(BL_CYCLE_KEY) || defined(BL_CYCLE_KEY_2) -# if defined(BL_CYCLE_KEY) - case BL_CYCLE_KEY: -# endif -# if defined(FN_BL_CYCLE_KEY) - case FN_BL_CYCLE_KEY: -# endif - if (record->event.pressed) { - if (backlight_test_mode) { - if (++backlight_test_mode >= BACKLIGHT_TEST_MAX) { - backlight_test_mode = BACKLIGHT_TEST_WHITE; - } - } else { - factory_reset_state |= KEY_PRESS_BL_KEY1; - if (factory_reset_state == 0x19) { - factory_timer_start(); - } - } - } else { - factory_reset_state &= ~KEY_PRESS_BL_KEY1; - factory_reset_timer = 0; - } - break; -#endif -#if defined(BL_TRIG_KEY) || defined(BL_TRIG_KEY_2) -# if defined(BL_TRIG_KEY) - case BL_TRIG_KEY: -# endif -# if defined(FN_BL_TRIG_KEY) - case FN_BL_TRIG_KEY: -# endif - if (record->event.pressed) { - if (backlight_test_mode) { - backlight_test_mode = BACKLIGHT_TEST_OFF; - } else { - factory_reset_state |= KEY_PRESS_BL_KEY2; - if (factory_reset_state == 0x19) { - factory_timer_start(); - } - } - } else { - factory_reset_state &= ~KEY_PRESS_BL_KEY2; - factory_reset_timer = 0; - } - break; -#endif - } - - return true; -} - -#ifdef LED_MATRIX_ENABLE -bool factory_test_indicator(void) { - if (factory_reset_ind_state) { - led_matrix_set_value_all(factory_reset_ind_state % 2 ? 0 : 255); - return false; - } - - return true; -} -#endif - -#ifdef RGB_MATRIX_ENABLE -bool factory_test_indicator(void) { - if (factory_reset_ind_state) { - backlight_test_mode = BACKLIGHT_TEST_OFF; - rgb_matrix_set_color_all(factory_reset_ind_state % 2 ? 0 : 255, 0, 0); - return false; - } else if (backlight_test_mode) { - switch (backlight_test_mode) { - case BACKLIGHT_TEST_WHITE: - rgb_matrix_set_color_all(255, 255, 255); - break; - case BACKLIGHT_TEST_RED: - rgb_matrix_set_color_all(255, 0, 0); - break; - case BACKLIGHT_TEST_GREEN: - rgb_matrix_set_color_all(0, 255, 0); - break; - case BACKLIGHT_TEST_BLUE: - rgb_matrix_set_color_all(0, 0, 255); - break; - } - return false; - } - - return true; -} -#endif - -bool factory_reset_indicating(void) { - return factory_reset_ind_timer; -} - -bool factory_test_task(void) { - if (factory_reset_timer) factory_timer_check(); - if (factory_reset_ind_timer) factory_reset_ind_timer_check(); - - return true; -} - -#ifdef LEMOKEY_CALLBACK_ENABLE -void factory_test_init(void) { - register_lemokey_task(factory_test_task, false); - register_record_process(process_record_factory_test, false); - register_led_indicator_task(factory_test_indicator, false); -} -#endif - -void factory_test_send(uint8_t *payload, uint8_t length) { -#ifdef RAW_ENABLE - uint16_t checksum = 0; - uint8_t data[RAW_EPSIZE] = {0}; - - uint8_t i = 0; - data[i++] = 0xAB; - - memcpy(&data[i], payload, length); - i += length; - - for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) - checksum += data[i]; - data[RAW_EPSIZE - 2] = checksum & 0xFF; - data[RAW_EPSIZE - 1] = (checksum >> 8) & 0xFF; - - raw_hid_send(data, RAW_EPSIZE); -#endif -} - -void factory_test_rx(uint8_t *data, uint8_t length) { - if (data[0] == 0xAB) { - uint16_t checksum = 0; - - for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) { - checksum += data[i]; - } - /* Verify checksum */ - if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) return; - -#ifdef LK_WIRELESS_ENABLE - uint8_t payload[32]; - uint8_t len = 0; -#endif - - switch (data[1]) { - case FACTORY_TEST_CMD_BACKLIGHT: - backlight_test_mode = data[2]; - factory_reset_timer = 0; - break; - case FACTORY_TEST_CMD_OS_SWITCH: - report_os_sw_state = data[2]; - if (report_os_sw_state) { - // dip_switch_read(true); - } - break; - case FACTORY_TEST_CMD_JUMP_TO_BL: - // if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump(); - break; -#ifdef LK_WIRELESS_ENABLE - case FACTORY_TEST_CMD_INT_PIN: - switch (data[2]) { - /* Enalbe/disable test */ - case 0xA1: - lkbt51_int_pin_test(data[3]); - break; - /* Set INT state */ - case 0xA2: - kc_printf("pin %d\n\r", data[3]); - writePin(BLUETOOTH_INT_OUTPUT_PIN, data[3]); - break; - /* Report INT state */ - // case 0xA3: - // payload[len++] = FACTORY_TEST_CMD_INT_PIN; - // payload[len++] = 0xA3; - // payload[len++] = readPin(LKBT51_INT_INPUT_PIN); - // factory_test_send(payload, len); - // break; - } - break; - case FACTORY_TEST_CMD_GET_TRANSPORT: - payload[len++] = FACTORY_TEST_CMD_GET_TRANSPORT; - payload[len++] = get_transport(); - payload[len++] = readPin(USB_POWER_SENSE_PIN); - factory_test_send(payload, len); - break; -#endif -#ifdef BATTERY_CHARGE_DONE_DETECT_ADC - case FACTORY_TEST_CMD_CHARGING_ADC: - case 0xA1: - battery_charging_monitor(data[3]); - break; - case 0xA2: - payload[len++] = FACTORY_TEST_CMD_CHARGING_ADC; - payload[len++] = battery_adc_read_charging_pin(); - factory_test_send(payload, len); - break; -#endif -#ifdef LK_WIRELESS_ENABLE - case FACTORY_TEST_CMD_RADIO_CARRIER: - if (data[2] < 79) lkbt51_radio_test(data[2]); - break; - -# ifdef WERELESS_PRESSURE_TEST - case 0x70: - switch (data[2]) { - /* Enalbe/disable test */ - case 0xB1: - SEND_STRING("abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890\n"); - break; - case 0xB2: - payload[len++] = 0x70; - payload[len++] = 0xB2; - payload[len++] = wireless_get_state(); - factory_test_send(payload, len); - break; - } - break; -# endif -#endif - case FACTORY_TEST_CMD_GET_BUILD_TIME: { - payload[len++] = FACTORY_TEST_CMD_GET_BUILD_TIME; - payload[len++] = 'v'; - if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&payload[len++], 16); - itoa((DEVICE_VER >> 8) & 0xF, (char *)&payload[len++], 16); - payload[len++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16); - payload[len++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16); - payload[len++] = ' '; - memcpy(&payload[len], QMK_BUILDDATE, sizeof(QMK_BUILDDATE)); - len += sizeof(QMK_BUILDDATE); - factory_test_send(payload, len); - } break; - } - } -} - -bool dip_switch_update_user(uint8_t index, bool active) { - if (report_os_sw_state) { -#ifdef INVERT_OS_SWITCH_STATE - active = !active; -#endif - uint8_t payload[3] = {FACTORY_TEST_CMD_OS_SWITCH, OS_SWITCH, active}; - factory_test_send(payload, 3); - } - - return true; -} diff --git a/keyboards/keychron/common/Backup 1 of keychron_common.c b/keyboards/keychron/common/Backup 1 of keychron_common.c deleted file mode 100644 index cdbf813926..0000000000 --- a/keyboards/keychron/common/Backup 1 of keychron_common.c +++ /dev/null @@ -1,210 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include QMK_KEYBOARD_H -#include "keychron_common.h" -#include "raw_hid.h" -#include "version.h" - -#ifdef FACTORY_TEST_ENABLE -# include "factory_test.h" -# include "keychron_common.h" -#endif - -#ifdef LK_WIRELESS_ENABLE -# include "lkbt51.h" -#endif - -bool is_siri_active = false; -uint32_t siri_timer = 0; - -static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD}; - -static key_combination_t key_comb_list[4] = {{2, {KC_LWIN, KC_TAB}}, {2, {KC_LWIN, KC_E}}, {3, {KC_LSFT, KC_LCMD, KC_4}}, {2, {KC_LWIN, KC_C}}}; - -bool process_record_lemokey_common(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_MCTRL: - if (record->event.pressed) { - register_code(KC_MISSION_CONTROL); - } else { - unregister_code(KC_MISSION_CONTROL); - } - return false; // Skip all further processing of this key - case KC_LNPAD: - if (record->event.pressed) { - register_code(KC_LAUNCHPAD); - } else { - unregister_code(KC_LAUNCHPAD); - } - return false; // Skip all further processing of this key - case KC_LOPTN: - case KC_ROPTN: - case KC_LCMMD: - case KC_RCMMD: - if (record->event.pressed) { - register_code(mac_keycode[keycode - KC_LOPTN]); - } else { - unregister_code(mac_keycode[keycode - KC_LOPTN]); - } - return false; // Skip all further processing of this key - case KC_SIRI: - if (record->event.pressed) { - if (!is_siri_active) { - is_siri_active = true; - register_code(KC_LCMD); - register_code(KC_SPACE); - } - siri_timer = timer_read32(); - } else { - // Do something else when release - } - return false; // Skip all further processing of this key - case KC_TASK: - case KC_FILE: - case KC_SNAP: - case KC_CTANA: - if (record->event.pressed) { - for (uint8_t i = 0; i < key_comb_list[keycode - KC_TASK].len; i++) { - register_code(key_comb_list[keycode - KC_TASK].keycode[i]); - } - } else { - for (uint8_t i = 0; i < key_comb_list[keycode - KC_TASK].len; i++) { - unregister_code(key_comb_list[keycode - KC_TASK].keycode[i]); - } - } - return false; // Skip all further processing of this key - default: - return true; // Process all other keycodes normally - } -} - -void lemokey_common_task(void) { - if (is_siri_active && timer_elapsed32(siri_timer) > 500) { - unregister_code(KC_LCMD); - unregister_code(KC_SPACE); - is_siri_active = false; - siri_timer = 0; - } -} - -#ifdef ENCODER_ENABLE -static void encoder0_pad_cb(void *param) { - (void)param; - encoder_inerrupt_read(0); -} - -void encoder_cb_init(void) { - pin_t encoders_pad_a[] = ENCODERS_PAD_A; - pin_t encoders_pad_b[] = ENCODERS_PAD_B; - palEnableLineEvent(encoders_pad_a[0], PAL_EVENT_MODE_BOTH_EDGES); - palEnableLineEvent(encoders_pad_b[0], PAL_EVENT_MODE_BOTH_EDGES); - palSetLineCallback(encoders_pad_a[0], encoder0_pad_cb, NULL); - palSetLineCallback(encoders_pad_b[0], encoder0_pad_cb, NULL); -} -#endif - -//__attribute__((weak)) bool raw_hid_receive_lemokey(uint8_t *data, uint8_t length) { return true; } -#define PROTOCOL_VERSION 0x02 - -enum { kc_get_protocol_version = 0xA0, kc_get_firmware_version = 0xA1, kc_get_support_feature = 0xA2, kc_get_default_layer = 0xA3 }; - -enum { - FEATURE_DEFAULT_LAYER = 0x01 << 0, - FEATURE_BLUETOOTH = 0x01 << 1, - FEATURE_P2P4G = 0x01 << 2, - FEATURE_ANALOG_MATRIX = 0x01 << 3, -}; - -void get_support_feature(uint8_t *data) { - data[1] = FEATURE_DEFAULT_LAYER -#ifdef KC_BLUETOOTH_ENABLE - | FEATURE_BLUETOOTH -#endif -#ifdef LK_WIRELESS_ENABLE - | FEATURE_BLUETOOTH | FEATURE_P2P4G -#endif -#ifdef ANANLOG_MATRIX - | FEATURE_ANALOG_MATRIX -#endif - ; -} - -bool via_command_kb(uint8_t *data, uint8_t length) { - // if (!raw_hid_receive_lemokey(data, length)) - // return false; - switch (data[0]) { - case kc_get_protocol_version: - data[1] = PROTOCOL_VERSION; - raw_hid_send(data, length); - break; - - case kc_get_firmware_version: { - uint8_t i = 1; - data[i++] = 'v'; - if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&data[i++], 16); - itoa((DEVICE_VER >> 8) & 0xF, (char *)&data[i++], 16); - data[i++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&data[i++], 16); - data[i++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&data[i++], 16); - data[i++] = ' '; - memcpy(&data[i], QMK_BUILDDATE, sizeof(QMK_BUILDDATE)); - i += sizeof(QMK_BUILDDATE); - raw_hid_send(data, length); - } break; - - case kc_get_support_feature: - get_support_feature(&data[1]); - raw_hid_send(data, length); - break; - - case kc_get_default_layer: - data[1] = get_highest_layer(default_layer_state); - raw_hid_send(data, length); - break; - -#ifdef ANANLOG_MATRIX - case 0xA9: - analog_matrix_rx(data, length); - break; -#endif -#ifdef LK_WIRELESS_ENABLE - case 0xAA: - lkbt51_dfu_rx(data, length); - break; -#endif -#ifdef FACTORY_TEST_ENABLE - case 0xAB: - factory_test_rx(data, length); - break; -#endif - default: - return false; - } - - return true; -} - -#if !defined(VIA_ENABLE) -void raw_hid_receive(uint8_t *data, uint8_t length) { - switch (data[0]) { - case RAW_HID_CMD: - via_command_kb(data, length); - break; - } -} -#endif diff --git a/keyboards/keychron/common/Backup 1 of keychron_common.h b/keyboards/keychron/common/Backup 1 of keychron_common.h deleted file mode 100644 index 21f8e289e7..0000000000 --- a/keyboards/keychron/common/Backup 1 of keychron_common.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.lemokey.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 . - */ - -#pragma once - -#include "stdint.h" - -// clang-format off -enum { - KC_LOPTN = QK_KB_0, - KC_ROPTN, - KC_LCMMD, - KC_RCMMD, - KC_MCTRL, - KC_LNPAD, - KC_TASK_VIEW, - KC_FILE_EXPLORER, - KC_SCREEN_SHOT, - KC_CORTANA, - KC_SIRI, -#ifdef LK_WIRELESS_ENABLE - BT_HST1, - BT_HST2, - BT_HST3, - P2P4G, - BAT_LVL, -#else - BT_HST1 = _______, - BT_HST2 = _______, - BT_HST3 = _______, - P2P4G = _______, - BAT_LVL = _______, -#endif -#ifdef DANANLOG_MATRIX - PROF1, - PROF2, - PROF3, -#else - PROF1 = _______, - PROF2 = _______, - PROF3 = _______, -#endif - NEW_SAFE_RANGE, -}; - -#define KC_TASK KC_TASK_VIEW -#define KC_FILE KC_FILE_EXPLORER -#define KC_SNAP KC_SCREEN_SHOT -#define KC_CTANA KC_CORTANA - -typedef struct PACKED { - uint8_t len; - uint8_t keycode[3]; -} key_combination_t; - -bool process_record_lemokey_common(uint16_t keycode, keyrecord_t *record); -void lemokey_common_task(void); - -#ifdef ENCODER_ENABLE -void encoder_cb_init(void); -#endif - diff --git a/keyboards/keychron/common/Backup 1 of keychron_task.c b/keyboards/keychron/common/Backup 1 of keychron_task.c deleted file mode 100644 index af4dad1619..0000000000 --- a/keyboards/keychron/common/Backup 1 of keychron_task.c +++ /dev/null @@ -1,239 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include -#include "keychron_task.h" -#include "quantum.h" -#include "keychron_common.h" -#ifdef FACTORY_TEST_ENABLE -# include "factory_test.h" -#endif - -#ifdef LEMOKEY_CALLBACK_ENABLE - -typedef struct lk_node { - lemokey_cb lk_cb; - struct lk_node *next; -} lk_Node; - -typedef struct lk_process_node { - lemokey_record_process_cb process_cb; - struct lk_process_node *next; -} lk_process_Node; - -lk_Node *p; -lk_Node *lk_task_list = NULL; -lk_process_Node *p_process; -lk_process_Node *lk_record_process_list = NULL; - -# if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -lk_Node *led_indicator_task_list = NULL; -# endif - -void register_lemokey_cb(lk_Node **head, lemokey_cb cb, bool priority) { - /* Create task node */ - lk_Node *task = (lk_Node *)malloc(sizeof(lk_Node)); - task->lk_cb = cb; - task->next = NULL; - - /* Add to the list*/ - if (*head) { - if (priority) { - task->next = *head; - *head = task; - } else { - p = *head; - while (p->next) - p = p->next; - p->next = task; - } - } else { - *head = task; - } -} - -void deregister_lemokey_cb(lk_Node **head, lemokey_cb cb) { - p = *head; - while (p) { - if (p->lk_cb == cb) { - // lk_Node* temp = p; - // if - } - } -} - -void register_lemokey_task(lemokey_cb cb, bool priority) { - register_lemokey_cb(&lk_task_list, cb, priority); -} - -void register_led_indicator_task(lemokey_cb cb, bool priority) { - register_lemokey_cb(&led_indicator_task_list, cb, priority); -} - -void register_record_process(lemokey_record_process_cb cb, bool priority) { - lk_process_Node *process = (lk_process_Node *)malloc(sizeof(lk_process_Node)); - process->process_cb = cb; - process->next = NULL; - - /* Add to the list*/ - if (lk_record_process_list) { - if (priority) { - process->next = lk_record_process_list; - lk_record_process_list = process; - } else { - p_process = lk_record_process_list; - while (p_process->next) - p_process = p_process->next; - p_process->next = process; - } - } else { - lk_record_process_list = process; - } -} - -inline void lemokey_task(void) { - p = lk_task_list; - while (p) { - p->lk_cb(); - p = p->next; - } -} - -inline bool process_record_lemokey(uint16_t keycode, keyrecord_t *record) { - p_process = lk_record_process_list; - while (p_process) { - if (!p_process->process_cb(keycode, record)) { - return false; - } - p_process = p_process->next; - } - - return true; -} - -# if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -# if defined(LED_MATRIX_ENABLE) -inline bool led_matrix_indicators_lemokey(void) { -# else -inline bool rgb_matrix_indicators_lemokey(void) { -# endif - - p = led_indicator_task_list; - while (p) { - p->lk_cb(); - p = p->next; - } - - return true; -} -# endif - -#else - -__attribute__((weak)) bool process_record_lemokey_kb(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_lemokey(uint16_t keycode, keyrecord_t *record) { -# ifdef LK_WIRELESS_ENABLE - extern bool process_record_wireless(uint16_t keycode, keyrecord_t * record); - if (!process_record_wireless(keycode, record)) return false; -# endif -# ifdef FACTORY_TEST_ENABLE - if (!process_record_factory_test(keycode, record)) return false; -# endif - // extern bool process_record_lemokey_kb(uint16_t keycode, keyrecord_t *record); - - if (!process_record_lemokey_kb(keycode, record)) return false; - - return true; -} - -# if defined(LED_MATRIX_ENABLE) -bool led_matrix_indicators_lemokey(void) { -# ifdef LK_WIRELESS_ENABLE - extern bool led_matrix_indicators_bt(void); - led_matrix_indicators_bt(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_indicator(); -# endif - return true; -} -# endif - -# if defined(RGB_MATRIX_ENABLE) -bool rgb_matrix_indicators_lemokey(void) { -# ifdef LK_WIRELESS_ENABLE - extern bool rgb_matrix_indicators_bt(void); - rgb_matrix_indicators_bt(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_indicator(); -# endif - return true; -} -# endif - -__attribute__((weak)) bool lemokey_task_kb(void) { - return true; -} - -void lemokey_task(void) { -# ifdef LK_WIRELESS_ENABLE - extern void wireless_tasks(void); - wireless_tasks(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_task(); -# endif - lemokey_common_task(); - - lemokey_task_kb(); -} -#endif // #ifdef LEMOKEY_CALLBACK_ENABLE - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - if (!process_record_user(keycode, record)) return false; - - if (!process_record_lemokey(keycode, record)) return false; - - return true; -} - -#ifdef RGB_MATRIX_ENABLE -bool rgb_matrix_indicators_kb(void) { - if (!rgb_matrix_indicators_user()) return false; - - rgb_matrix_indicators_lemokey(); - - return true; -} -#endif - -#ifdef LED_MATRIX_ENABLE -bool led_matrix_indicators_kb(void) { - if (!led_matrix_indicators_user()) return false; - - led_matrix_indicators_lemokey(); - - return true; -} -#endif - -void housekeeping_task_kb(void) { - lemokey_task(); -} diff --git a/keyboards/keychron/common/Backup 1 of keychron_task.h b/keyboards/keychron/common/Backup 1 of keychron_task.h deleted file mode 100644 index d66bde8caa..0000000000 --- a/keyboards/keychron/common/Backup 1 of keychron_task.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2022 @ Keychron (https://www.lemokey.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 . - */ - -#pragma once - -#include "stdint.h" -#include "action.h" - -#ifdef LEMOKEY_CALLBACK_ENABLE -typedef bool (*lemokey_cb)(void); -typedef bool (*lemokey_record_process_cb)(uint16_t keycode, keyrecord_t *record); - - -bool process_record_lemokey(uint16_t keycode, keyrecord_t *record); - -void register_lemokey_task(lemokey_cb cb, bool priority); -void register_record_process(lemokey_record_process_cb cb, bool priority); -#if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -void register_led_indicator_task(lemokey_cb cb, bool priority); -#endif - -#else -bool lemokey_task_kb(void); -bool process_record_lemokey_kb(uint16_t keycode, keyrecord_t *record); - -#endif -void lemokey_task(void); - diff --git a/keyboards/keychron/common/Backup 2 of factory_test.c b/keyboards/keychron/common/Backup 2 of factory_test.c deleted file mode 100644 index 8117d6559c..0000000000 --- a/keyboards/keychron/common/Backup 2 of factory_test.c +++ /dev/null @@ -1,445 +0,0 @@ -/* Copyright 2021 @ Keychron (https://www.keychron.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 . - */ - -#include "quantum.h" -#include "raw_hid.h" -#include "via.h" - -#include "keychron_task.h" -#ifdef LK_WIRELESS_ENABLE -# include "transport.h" -# include "battery.h" -# include "lpm.h" -# include "lkbt51.h" -# include "indicator.h" -#endif -#include "config.h" -#include "version.h" - -#ifndef RAW_EPSIZE -# define RAW_EPSIZE 32 -#endif - -#ifndef BL_CYCLE_KEY -# define BL_CYCLE_KEY KC_RIGHT -#endif - -#ifndef BL_TRIG_KEY -# define BL_TRIG_KEY KC_HOME -#endif - -#ifndef P2P4G_CELAR_MASK -# define P2P4G_CELAR_MASK P2P4G_CLEAR_PAIRING_TYPE_C -#endif - -enum { - BACKLIGHT_TEST_OFF = 0, - BACKLIGHT_TEST_WHITE, - BACKLIGHT_TEST_RED, - BACKLIGHT_TEST_GREEN, - BACKLIGHT_TEST_BLUE, - BACKLIGHT_TEST_MAX, -}; - -enum { - KEY_PRESS_FN = 0x01 << 0, - KEY_PRESS_J = 0x01 << 1, - KEY_PRESS_Z = 0x01 << 2, - KEY_PRESS_BL_KEY1 = 0x01 << 3, - KEY_PRESS_BL_KEY2 = 0x01 << 4, - KEY_PRESS_FACTORY_RESET = KEY_PRESS_FN | KEY_PRESS_J | KEY_PRESS_Z, - KEY_PRESS_BACKLIGTH_TEST = KEY_PRESS_FN | KEY_PRESS_BL_KEY1 | KEY_PRESS_BL_KEY2, -}; - -enum { - FACTORY_TEST_CMD_BACKLIGHT = 0x01, - FACTORY_TEST_CMD_OS_SWITCH, - FACTORY_TEST_CMD_JUMP_TO_BL, - FACTORY_TEST_CMD_INT_PIN, - FACTORY_TEST_CMD_GET_TRANSPORT, - FACTORY_TEST_CMD_CHARGING_ADC, - FACTORY_TEST_CMD_RADIO_CARRIER, - FACTORY_TEST_CMD_GET_BUILD_TIME, -}; - -enum { - P2P4G_CLEAR_PAIRING_TYPE_A = 0x01 << 0, - P2P4G_CLEAR_PAIRING_TYPE_C = 0x01 << 1, -}; - -enum { - OS_SWITCH = 0x01, -}; - -static uint32_t factory_reset_timer = 0; -static uint8_t factory_reset_state = 0; -static uint8_t backlight_test_mode = BACKLIGHT_TEST_OFF; - -static uint32_t factory_reset_ind_timer = 0; -static uint8_t factory_reset_ind_state = 0; -static bool report_os_sw_state = false; -static bool keys_released = true; - -void factory_timer_start(void) { - factory_reset_timer = timer_read32(); -} - -static inline void factory_timer_check(void) { - if (timer_elapsed32(factory_reset_timer) > 3000) { - factory_reset_timer = 0; - - if (factory_reset_state == KEY_PRESS_FACTORY_RESET) { - factory_reset_ind_timer = timer_read32(); - factory_reset_ind_state++; - keys_released = false; - - clear_keyboard(); // Avoid key being pressed after NKRO state changed - layer_state_t default_layer_tmp = default_layer_state; - eeconfig_init(); - keymap_config.raw = eeconfig_read_keymap(); - default_layer_set(default_layer_tmp); -#ifdef LED_MATRIX_ENABLE - if (!led_matrix_is_enabled()) led_matrix_enable(); - led_matrix_init(); -#endif -#ifdef RGB_MATRIX_ENABLE - if (!rgb_matrix_is_enabled()) rgb_matrix_enable(); - rgb_matrix_init(); -#endif -#ifdef LK_WIRELESS_ENABLE - lkbt51_factory_reset(P2P4G_CELAR_MASK); -#endif - } else if (factory_reset_state == KEY_PRESS_BACKLIGTH_TEST) { -#ifdef LED_MATRIX_ENABLE - if (!led_matrix_is_enabled()) led_matrix_enable(); -#endif -#ifdef RGB_MATRIX_ENABLE - if (!rgb_matrix_is_enabled()) rgb_matrix_enable(); -#endif - backlight_test_mode = BACKLIGHT_TEST_WHITE; - } - - factory_reset_state = 0; - } -} - -static inline void factory_reset_ind_timer_check(void) { - if (factory_reset_ind_timer && timer_elapsed32(factory_reset_ind_timer) > 250) { - if (factory_reset_ind_state++ > 6) { - factory_reset_ind_timer = factory_reset_ind_state = 0; - } else { - factory_reset_ind_timer = timer_read32(); - } - } -} - -bool process_record_factory_test(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { -#if defined(FN_KEY_1) || defined(FN_KEY_2) -# if defined(FN_KEY_1) - case FN_KEY_1: /* fall through */ -# endif -# if defined(FN_KEY_2) - case FN_KEY_2: -# endif -# if defined(FN_KEY_3) - case FN_KEY_3: -# endif - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_FN; - } else { - factory_reset_state &= ~KEY_PRESS_FN; - factory_reset_timer = 0; - } - break; -#endif - case KC_J: - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_J; - if (factory_reset_state == 0x07) factory_timer_start(); - if (factory_reset_state & KEY_PRESS_FN) return false; - } else { - factory_reset_state &= ~KEY_PRESS_J; - factory_reset_timer = 0; - } - break; - case KC_Z: -#if defined(FN_Z_KEY) - case FN_Z_KEY: -#endif - if (record->event.pressed) { - factory_reset_state |= KEY_PRESS_Z; - if (factory_reset_state == 0x07) factory_timer_start(); - if ((factory_reset_state & KEY_PRESS_FN) && keycode == KC_Z) return false; - } else { - factory_reset_state &= ~KEY_PRESS_Z; - factory_reset_timer = 0; - /* Avoid changing backlight effect on key released if FN_Z_KEY is mode*/ - - if (!keys_released && keycode >= QK_BACKLIGHT_ON && keycode <= RGB_MODE_TWINKLE) { - keys_released = true; - return false; - } - } - break; -#if defined(BL_CYCLE_KEY) || defined(BL_CYCLE_KEY_2) -# if defined(BL_CYCLE_KEY) - case BL_CYCLE_KEY: -# endif -# if defined(FN_BL_CYCLE_KEY) - case FN_BL_CYCLE_KEY: -# endif - if (record->event.pressed) { - if (backlight_test_mode) { - if (++backlight_test_mode >= BACKLIGHT_TEST_MAX) { - backlight_test_mode = BACKLIGHT_TEST_WHITE; - } - } else { - factory_reset_state |= KEY_PRESS_BL_KEY1; - if (factory_reset_state == 0x19) { - factory_timer_start(); - } - } - } else { - factory_reset_state &= ~KEY_PRESS_BL_KEY1; - factory_reset_timer = 0; - } - break; -#endif -#if defined(BL_TRIG_KEY) || defined(BL_TRIG_KEY_2) -# if defined(BL_TRIG_KEY) - case BL_TRIG_KEY: -# endif -# if defined(FN_BL_TRIG_KEY) - case FN_BL_TRIG_KEY: -# endif - if (record->event.pressed) { - if (backlight_test_mode) { - backlight_test_mode = BACKLIGHT_TEST_OFF; - } else { - factory_reset_state |= KEY_PRESS_BL_KEY2; - if (factory_reset_state == 0x19) { - factory_timer_start(); - } - } - } else { - factory_reset_state &= ~KEY_PRESS_BL_KEY2; - factory_reset_timer = 0; - } - break; -#endif - } - - return true; -} - -#ifdef LED_MATRIX_ENABLE -bool factory_test_indicator(void) { - if (factory_reset_ind_state) { - led_matrix_set_value_all(factory_reset_ind_state % 2 ? 0 : 255); - return false; - } - - return true; -} -#endif - -#ifdef RGB_MATRIX_ENABLE -bool factory_test_indicator(void) { - if (factory_reset_ind_state) { - backlight_test_mode = BACKLIGHT_TEST_OFF; - rgb_matrix_set_color_all(factory_reset_ind_state % 2 ? 0 : 255, 0, 0); - return false; - } else if (backlight_test_mode) { - switch (backlight_test_mode) { - case BACKLIGHT_TEST_WHITE: - rgb_matrix_set_color_all(255, 255, 255); - break; - case BACKLIGHT_TEST_RED: - rgb_matrix_set_color_all(255, 0, 0); - break; - case BACKLIGHT_TEST_GREEN: - rgb_matrix_set_color_all(0, 255, 0); - break; - case BACKLIGHT_TEST_BLUE: - rgb_matrix_set_color_all(0, 0, 255); - break; - } - return false; - } - - return true; -} -#endif - -bool factory_reset_indicating(void) { - return factory_reset_ind_timer; -} - -bool factory_test_task(void) { - if (factory_reset_timer) factory_timer_check(); - if (factory_reset_ind_timer) factory_reset_ind_timer_check(); - - return true; -} - -#ifdef LEMOKEY_CALLBACK_ENABLE -void factory_test_init(void) { - register_keychron_task(factory_test_task, false); - register_record_process(process_record_factory_test, false); - register_led_indicator_task(factory_test_indicator, false); -} -#endif - -void factory_test_send(uint8_t *payload, uint8_t length) { -#ifdef RAW_ENABLE - uint16_t checksum = 0; - uint8_t data[RAW_EPSIZE] = {0}; - - uint8_t i = 0; - data[i++] = 0xAB; - - memcpy(&data[i], payload, length); - i += length; - - for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) - checksum += data[i]; - data[RAW_EPSIZE - 2] = checksum & 0xFF; - data[RAW_EPSIZE - 1] = (checksum >> 8) & 0xFF; - - raw_hid_send(data, RAW_EPSIZE); -#endif -} - -void factory_test_rx(uint8_t *data, uint8_t length) { - if (data[0] == 0xAB) { - uint16_t checksum = 0; - - for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) { - checksum += data[i]; - } - /* Verify checksum */ - if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) return; - -#ifdef LK_WIRELESS_ENABLE - uint8_t payload[32]; - uint8_t len = 0; -#endif - - switch (data[1]) { - case FACTORY_TEST_CMD_BACKLIGHT: - backlight_test_mode = data[2]; - factory_reset_timer = 0; - break; - case FACTORY_TEST_CMD_OS_SWITCH: - report_os_sw_state = data[2]; - if (report_os_sw_state) { - // dip_switch_read(true); - } - break; - case FACTORY_TEST_CMD_JUMP_TO_BL: - // if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump(); - break; -#ifdef LK_WIRELESS_ENABLE - case FACTORY_TEST_CMD_INT_PIN: - switch (data[2]) { - /* Enalbe/disable test */ - case 0xA1: - lkbt51_int_pin_test(data[3]); - break; - /* Set INT state */ - case 0xA2: - kc_printf("pin %d\n\r", data[3]); - writePin(BLUETOOTH_INT_OUTPUT_PIN, data[3]); - break; - /* Report INT state */ - // case 0xA3: - // payload[len++] = FACTORY_TEST_CMD_INT_PIN; - // payload[len++] = 0xA3; - // payload[len++] = readPin(LKBT51_INT_INPUT_PIN); - // factory_test_send(payload, len); - // break; - } - break; - case FACTORY_TEST_CMD_GET_TRANSPORT: - payload[len++] = FACTORY_TEST_CMD_GET_TRANSPORT; - payload[len++] = get_transport(); - payload[len++] = readPin(USB_POWER_SENSE_PIN); - factory_test_send(payload, len); - break; -#endif -#ifdef BATTERY_CHARGE_DONE_DETECT_ADC - case FACTORY_TEST_CMD_CHARGING_ADC: - case 0xA1: - battery_charging_monitor(data[3]); - break; - case 0xA2: - payload[len++] = FACTORY_TEST_CMD_CHARGING_ADC; - payload[len++] = battery_adc_read_charging_pin(); - factory_test_send(payload, len); - break; -#endif -#ifdef LK_WIRELESS_ENABLE - case FACTORY_TEST_CMD_RADIO_CARRIER: - if (data[2] < 79) lkbt51_radio_test(data[2]); - break; - -# ifdef WERELESS_PRESSURE_TEST - case 0x70: - switch (data[2]) { - /* Enalbe/disable test */ - case 0xB1: - SEND_STRING("abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890\n"); - break; - case 0xB2: - payload[len++] = 0x70; - payload[len++] = 0xB2; - payload[len++] = wireless_get_state(); - factory_test_send(payload, len); - break; - } - break; -# endif -#endif - case FACTORY_TEST_CMD_GET_BUILD_TIME: { - payload[len++] = FACTORY_TEST_CMD_GET_BUILD_TIME; - payload[len++] = 'v'; - if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&payload[len++], 16); - itoa((DEVICE_VER >> 8) & 0xF, (char *)&payload[len++], 16); - payload[len++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16); - payload[len++] = '.'; - itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16); - payload[len++] = ' '; - memcpy(&payload[len], QMK_BUILDDATE, sizeof(QMK_BUILDDATE)); - len += sizeof(QMK_BUILDDATE); - factory_test_send(payload, len); - } break; - } - } -} - -bool dip_switch_update_user(uint8_t index, bool active) { - if (report_os_sw_state) { -#ifdef INVERT_OS_SWITCH_STATE - active = !active; -#endif - uint8_t payload[3] = {FACTORY_TEST_CMD_OS_SWITCH, OS_SWITCH, active}; - factory_test_send(payload, 3); - } - - return true; -} diff --git a/keyboards/keychron/common/Backup 2 of keychron_task.c b/keyboards/keychron/common/Backup 2 of keychron_task.c deleted file mode 100644 index abcc65fa09..0000000000 --- a/keyboards/keychron/common/Backup 2 of keychron_task.c +++ /dev/null @@ -1,239 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include -#include "keychron_task.h" -#include "quantum.h" -#include "keychron_common.h" -#ifdef FACTORY_TEST_ENABLE -# include "factory_test.h" -#endif - -#ifdef LEMOKEY_CALLBACK_ENABLE - -typedef struct lk_node { - keychron_cb lk_cb; - struct lk_node *next; -} lk_Node; - -typedef struct lk_process_node { - keychron_record_process_cb process_cb; - struct lk_process_node *next; -} lk_process_Node; - -lk_Node *p; -lk_Node *lk_task_list = NULL; -lk_process_Node *p_process; -lk_process_Node *lk_record_process_list = NULL; - -# if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -lk_Node *led_indicator_task_list = NULL; -# endif - -void register_keychron_cb(lk_Node **head, keychron_cb cb, bool priority) { - /* Create task node */ - lk_Node *task = (lk_Node *)malloc(sizeof(lk_Node)); - task->lk_cb = cb; - task->next = NULL; - - /* Add to the list*/ - if (*head) { - if (priority) { - task->next = *head; - *head = task; - } else { - p = *head; - while (p->next) - p = p->next; - p->next = task; - } - } else { - *head = task; - } -} - -void deregister_keychron_cb(lk_Node **head, keychron_cb cb) { - p = *head; - while (p) { - if (p->lk_cb == cb) { - // lk_Node* temp = p; - // if - } - } -} - -void register_keychron_task(keychron_cb cb, bool priority) { - register_keychron_cb(&lk_task_list, cb, priority); -} - -void register_led_indicator_task(keychron_cb cb, bool priority) { - register_keychron_cb(&led_indicator_task_list, cb, priority); -} - -void register_record_process(keychron_record_process_cb cb, bool priority) { - lk_process_Node *process = (lk_process_Node *)malloc(sizeof(lk_process_Node)); - process->process_cb = cb; - process->next = NULL; - - /* Add to the list*/ - if (lk_record_process_list) { - if (priority) { - process->next = lk_record_process_list; - lk_record_process_list = process; - } else { - p_process = lk_record_process_list; - while (p_process->next) - p_process = p_process->next; - p_process->next = process; - } - } else { - lk_record_process_list = process; - } -} - -inline void keychron_task(void) { - p = lk_task_list; - while (p) { - p->lk_cb(); - p = p->next; - } -} - -inline bool process_record_keychron(uint16_t keycode, keyrecord_t *record) { - p_process = lk_record_process_list; - while (p_process) { - if (!p_process->process_cb(keycode, record)) { - return false; - } - p_process = p_process->next; - } - - return true; -} - -# if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -# if defined(LED_MATRIX_ENABLE) -inline bool led_matrix_indicators_keychron(void) { -# else -inline bool rgb_matrix_indicators_keychron(void) { -# endif - - p = led_indicator_task_list; - while (p) { - p->lk_cb(); - p = p->next; - } - - return true; -} -# endif - -#else - -__attribute__((weak)) bool process_record_keychron_kb(uint16_t keycode, keyrecord_t *record) { - return true; -} - -bool process_record_keychron(uint16_t keycode, keyrecord_t *record) { -# ifdef LK_WIRELESS_ENABLE - extern bool process_record_wireless(uint16_t keycode, keyrecord_t * record); - if (!process_record_wireless(keycode, record)) return false; -# endif -# ifdef FACTORY_TEST_ENABLE - if (!process_record_factory_test(keycode, record)) return false; -# endif - // extern bool process_record_keychron_kb(uint16_t keycode, keyrecord_t *record); - - if (!process_record_keychron_kb(keycode, record)) return false; - - return true; -} - -# if defined(LED_MATRIX_ENABLE) -bool led_matrix_indicators_keychron(void) { -# ifdef LK_WIRELESS_ENABLE - extern bool led_matrix_indicators_bt(void); - led_matrix_indicators_bt(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_indicator(); -# endif - return true; -} -# endif - -# if defined(RGB_MATRIX_ENABLE) -bool rgb_matrix_indicators_keychron(void) { -# ifdef LK_WIRELESS_ENABLE - extern bool rgb_matrix_indicators_bt(void); - rgb_matrix_indicators_bt(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_indicator(); -# endif - return true; -} -# endif - -__attribute__((weak)) bool keychron_task_kb(void) { - return true; -} - -void keychron_task(void) { -# ifdef LK_WIRELESS_ENABLE - extern void wireless_tasks(void); - wireless_tasks(); -# endif -# ifdef FACTORY_TEST_ENABLE - factory_test_task(); -# endif - keychron_common_task(); - - keychron_task_kb(); -} -#endif // #ifdef LEMOKEY_CALLBACK_ENABLE - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - if (!process_record_user(keycode, record)) return false; - - if (!process_record_keychron(keycode, record)) return false; - - return true; -} - -#ifdef RGB_MATRIX_ENABLE -bool rgb_matrix_indicators_kb(void) { - if (!rgb_matrix_indicators_user()) return false; - - rgb_matrix_indicators_keychron(); - - return true; -} -#endif - -#ifdef LED_MATRIX_ENABLE -bool led_matrix_indicators_kb(void) { - if (!led_matrix_indicators_user()) return false; - - led_matrix_indicators_keychron(); - - return true; -} -#endif - -void housekeeping_task_kb(void) { - keychron_task(); -} diff --git a/keyboards/keychron/common/Backup 2 of keychron_task.h b/keyboards/keychron/common/Backup 2 of keychron_task.h deleted file mode 100644 index 5ba8895795..0000000000 --- a/keyboards/keychron/common/Backup 2 of keychron_task.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2022 @ Keychron (https://www.keychron.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 . - */ - -#pragma once - -#include "stdint.h" -#include "action.h" - -#ifdef LEMOKEY_CALLBACK_ENABLE -typedef bool (*keychron_cb)(void); -typedef bool (*keychron_record_process_cb)(uint16_t keycode, keyrecord_t *record); - - -bool process_record_keychron(uint16_t keycode, keyrecord_t *record); - -void register_keychron_task(keychron_cb cb, bool priority); -void register_record_process(keychron_record_process_cb cb, bool priority); -#if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) -void register_led_indicator_task(keychron_cb cb, bool priority); -#endif - -#else -bool keychron_task_kb(void); -bool process_record_keychron_kb(uint16_t keycode, keyrecord_t *record); - -#endif -void keychron_task(void); - diff --git a/keyboards/keychron/k10_pro/ansi/white/config.h b/keyboards/keychron/k10_pro/ansi/white/config.h index 0c0e8bf4d0..fc5f06f5b4 100644 --- a/keyboards/keychron/k10_pro/ansi/white/config.h +++ b/keyboards/keychron/k10_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED matrix configuration */ # define LED_MATRIX_LED_COUNT 108 diff --git a/keyboards/keychron/k10_pro/iso/white/config.h b/keyboards/keychron/k10_pro/iso/white/config.h index 224991ffb8..3cd4b96d89 100644 --- a/keyboards/keychron/k10_pro/iso/white/config.h +++ b/keyboards/keychron/k10_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 109 diff --git a/keyboards/keychron/k10_pro/jis/white/config.h b/keyboards/keychron/k10_pro/jis/white/config.h index dd4d4377ec..07cd9e49b4 100644 --- a/keyboards/keychron/k10_pro/jis/white/config.h +++ b/keyboards/keychron/k10_pro/jis/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 112 diff --git a/keyboards/keychron/k11_pro/ansi/white/config.h b/keyboards/keychron/k11_pro/ansi/white/config.h index d127324042..0f9a670167 100644 --- a/keyboards/keychron/k11_pro/ansi/white/config.h +++ b/keyboards/keychron/k11_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 69 diff --git a/keyboards/keychron/k11_pro/ansi_encoder/white/config.h b/keyboards/keychron/k11_pro/ansi_encoder/white/config.h index cbac1ba498..c9bcd78cf3 100644 --- a/keyboards/keychron/k11_pro/ansi_encoder/white/config.h +++ b/keyboards/keychron/k11_pro/ansi_encoder/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 69 diff --git a/keyboards/keychron/k12_pro/ansi/white/config.h b/keyboards/keychron/k12_pro/ansi/white/config.h index 7c53c65c0d..46b219a133 100644 --- a/keyboards/keychron/k12_pro/ansi/white/config.h +++ b/keyboards/keychron/k12_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 61 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k13_pro/ansi/white/config.h b/keyboards/keychron/k13_pro/ansi/white/config.h index a053a14d59..8ecbee2b98 100644 --- a/keyboards/keychron/k13_pro/ansi/white/config.h +++ b/keyboards/keychron/k13_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define DRIVER_1_LED_TOTAL 90 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL diff --git a/keyboards/keychron/k14_pro/ansi/white/config.h b/keyboards/keychron/k14_pro/ansi/white/config.h index ae50f84cb6..5602c8f470 100644 --- a/keyboards/keychron/k14_pro/ansi/white/config.h +++ b/keyboards/keychron/k14_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 72 diff --git a/keyboards/keychron/k1_pro/ansi/white/config.h b/keyboards/keychron/k1_pro/ansi/white/config.h index 5008b47f66..9e40af306a 100644 --- a/keyboards/keychron/k1_pro/ansi/white/config.h +++ b/keyboards/keychron/k1_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 87 diff --git a/keyboards/keychron/k1_pro/iso/white/config.h b/keyboards/keychron/k1_pro/iso/white/config.h index e2564042e1..5cf423073d 100644 --- a/keyboards/keychron/k1_pro/iso/white/config.h +++ b/keyboards/keychron/k1_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 88 diff --git a/keyboards/keychron/k2_pro/ansi/white/config.h b/keyboards/keychron/k2_pro/ansi/white/config.h index 585d082f94..3ca193cfcb 100644 --- a/keyboards/keychron/k2_pro/ansi/white/config.h +++ b/keyboards/keychron/k2_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 84 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k2_pro/iso/white/config.h b/keyboards/keychron/k2_pro/iso/white/config.h index 1f5082c192..a223a04db7 100644 --- a/keyboards/keychron/k2_pro/iso/white/config.h +++ b/keyboards/keychron/k2_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 85 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k2_pro/jis/white/config.h b/keyboards/keychron/k2_pro/jis/white/config.h index 00f0d241b4..349dce28f7 100644 --- a/keyboards/keychron/k2_pro/jis/white/config.h +++ b/keyboards/keychron/k2_pro/jis/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define DRIVER_1_LED_COUNT 87 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_COUNT diff --git a/keyboards/keychron/k3_pro/ansi/white/config.h b/keyboards/keychron/k3_pro/ansi/white/config.h index 78d9dfc163..bb018416fd 100644 --- a/keyboards/keychron/k3_pro/ansi/white/config.h +++ b/keyboards/keychron/k3_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 84 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k3_pro/iso/white/config.h b/keyboards/keychron/k3_pro/iso/white/config.h index 10f17b83b1..5f5d3bdd29 100644 --- a/keyboards/keychron/k3_pro/iso/white/config.h +++ b/keyboards/keychron/k3_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 85 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k3_pro/jis/white/config.h b/keyboards/keychron/k3_pro/jis/white/config.h index dfb555befc..faab11eb65 100644 --- a/keyboards/keychron/k3_pro/jis/white/config.h +++ b/keyboards/keychron/k3_pro/jis/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 87 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k4_pro/ansi/white/config.h b/keyboards/keychron/k4_pro/ansi/white/config.h index c684f52f8a..889abced24 100644 --- a/keyboards/keychron/k4_pro/ansi/white/config.h +++ b/keyboards/keychron/k4_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 100 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k4_pro/iso/white/config.h b/keyboards/keychron/k4_pro/iso/white/config.h index 7b38e534ef..792b1cad28 100644 --- a/keyboards/keychron/k4_pro/iso/white/config.h +++ b/keyboards/keychron/k4_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define DRIVER_1_LED_COUNT 101 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_COUNT diff --git a/keyboards/keychron/k5_pro/ansi/white/config.h b/keyboards/keychron/k5_pro/ansi/white/config.h index 265579546b..01bc296ed6 100644 --- a/keyboards/keychron/k5_pro/ansi/white/config.h +++ b/keyboards/keychron/k5_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 108 diff --git a/keyboards/keychron/k5_pro/iso/white/config.h b/keyboards/keychron/k5_pro/iso/white/config.h index d05d60e45b..b37b3a103e 100644 --- a/keyboards/keychron/k5_pro/iso/white/config.h +++ b/keyboards/keychron/k5_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 109 diff --git a/keyboards/keychron/k5_pro/jis/white/config.h b/keyboards/keychron/k5_pro/jis/white/config.h index b135883e42..2bdd8cab96 100644 --- a/keyboards/keychron/k5_pro/jis/white/config.h +++ b/keyboards/keychron/k5_pro/jis/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 112 diff --git a/keyboards/keychron/k6_pro/ansi/white/config.h b/keyboards/keychron/k6_pro/ansi/white/config.h index c28390475d..b9d52ec03d 100644 --- a/keyboards/keychron/k6_pro/ansi/white/config.h +++ b/keyboards/keychron/k6_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 68 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k6_pro/iso/white/config.h b/keyboards/keychron/k6_pro/iso/white/config.h index a136735d2c..f827608a64 100644 --- a/keyboards/keychron/k6_pro/iso/white/config.h +++ b/keyboards/keychron/k6_pro/iso/white/config.h @@ -17,7 +17,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 69 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k7_pro/ansi/white/config.h b/keyboards/keychron/k7_pro/ansi/white/config.h index 88634356ed..54861f6f82 100644 --- a/keyboards/keychron/k7_pro/ansi/white/config.h +++ b/keyboards/keychron/k7_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 68 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k7_pro/iso/white/config.h b/keyboards/keychron/k7_pro/iso/white/config.h index a621a7aea0..1e30a17a46 100644 --- a/keyboards/keychron/k7_pro/iso/white/config.h +++ b/keyboards/keychron/k7_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED matrix Configuration */ # define LED_MATRIX_LED_COUNT 69 diff --git a/keyboards/keychron/k8_pro/ansi/white/config.h b/keyboards/keychron/k8_pro/ansi/white/config.h index fa2271be29..2fbec99d3f 100644 --- a/keyboards/keychron/k8_pro/ansi/white/config.h +++ b/keyboards/keychron/k8_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 88 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k8_pro/iso/white/config.h b/keyboards/keychron/k8_pro/iso/white/config.h index fa2271be29..2fbec99d3f 100644 --- a/keyboards/keychron/k8_pro/iso/white/config.h +++ b/keyboards/keychron/k8_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED matrix driver configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND # define LED_MATRIX_LED_COUNT 88 /* Set to infinit, which is use in USB mode by default */ diff --git a/keyboards/keychron/k8_pro/jis/white/config.h b/keyboards/keychron/k8_pro/jis/white/config.h index 5f96b685c5..aeadf4be9c 100644 --- a/keyboards/keychron/k8_pro/jis/white/config.h +++ b/keyboards/keychron/k8_pro/jis/white/config.h @@ -17,7 +17,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 91 diff --git a/keyboards/keychron/k9_pro/ansi/white/config.h b/keyboards/keychron/k9_pro/ansi/white/config.h index 74d2bdf62d..7c89023d1c 100644 --- a/keyboards/keychron/k9_pro/ansi/white/config.h +++ b/keyboards/keychron/k9_pro/ansi/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 61 diff --git a/keyboards/keychron/k9_pro/iso/white/config.h b/keyboards/keychron/k9_pro/iso/white/config.h index 41c2eccc5d..75c280cd69 100644 --- a/keyboards/keychron/k9_pro/iso/white/config.h +++ b/keyboards/keychron/k9_pro/iso/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 62 diff --git a/keyboards/keychron/k9_pro/jis/white/config.h b/keyboards/keychron/k9_pro/jis/white/config.h index c5ff2fe1df..193d765a63 100644 --- a/keyboards/keychron/k9_pro/jis/white/config.h +++ b/keyboards/keychron/k9_pro/jis/white/config.h @@ -19,7 +19,7 @@ #ifdef LED_MATRIX_ENABLE /* LED Matrix Driver Configuration */ # define DRIVER_COUNT 1 -# define DRIVER_ADDR_1 0b1110100 +# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND /* LED Matrix Configuration */ # define LED_MATRIX_LED_COUNT 65 diff --git a/keyboards/keychron/v1_max/Backup 1 of v1_max.c b/keyboards/keychron/v1_max/Backup 1 of v1_max.c deleted file mode 100644 index 6890f03a3f..0000000000 --- a/keyboards/keychron/v1_max/Backup 1 of v1_max.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 "quantum.h" -#include "keychron_task.h" -#ifdef FACTORY_TEST_ENABLE -# include "factory_test.h" -# include "keychron_common.h" -#endif -#ifdef LK_WIRELESS_ENABLE -# include "lkbt51.h" -# include "wireless.h" -# include "lemokey_wireless_common.h" -# include "battery.h" -#endif - -#define POWER_ON_LED_DURATION 3000 -static uint32_t power_on_indicator_timer_buffer; - -#ifdef LEMOKEY_CALLBACK_ENABLE -bool lemokey_task_kb(void); -#endif - -bool dip_switch_update_kb(uint8_t index, bool active) { - if (index == 0) { - default_layer_set(1UL << (active ? 0 : 2)); - } - dip_switch_update_user(index, active); - - return true; -} - -void keyboard_post_init_kb(void) { -#ifdef LK_WIRELESS_ENABLE - palSetLineMode(P2P4_MODE_SELECT_PIN, PAL_MODE_INPUT); - palSetLineMode(BT_MODE_SELECT_PIN, PAL_MODE_INPUT); - - writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); - - lkbt51_init(false); - wireless_init(); -#endif - - power_on_indicator_timer_buffer = timer_read32(); -#ifdef ENCODER_ENABLE - encoder_cb_init(); -#endif -#ifdef LEMOKEY_CALLBACK_ENABLE - factory_test_init(); - register_record_process(process_record_lemokey_kb, false); - register_lemokey_task(lemokey_task_kb, false); -#endif - keyboard_post_init_user(); -} - -bool lemokey_task_kb(void) { - if (power_on_indicator_timer_buffer) { - if (timer_elapsed32(power_on_indicator_timer_buffer) > POWER_ON_LED_DURATION) { - power_on_indicator_timer_buffer = 0; - -#ifdef LK_WIRELESS_ENABLE - writePin(BAT_LOW_LED_PIN, !BAT_LOW_LED_PIN_ON_STATE); -#endif - - } else { -#ifdef LK_WIRELESS_ENABLE - writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); -#endif - } - } - return true; -} - -#ifdef LK_WIRELESS_ENABLE -bool lpm_is_kb_idle(void) { - return power_on_indicator_timer_buffer == 0 && !factory_reset_indicating(); -} -#endif diff --git a/keyboards/keychron/v1_max/Backup 2 of v1_max.c b/keyboards/keychron/v1_max/Backup 2 of v1_max.c deleted file mode 100644 index a5ed0fcd42..0000000000 --- a/keyboards/keychron/v1_max/Backup 2 of v1_max.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 "quantum.h" -#include "keychron_task.h" -#ifdef FACTORY_TEST_ENABLE -# include "factory_test.h" -# include "keychron_common.h" -#endif -#ifdef LK_WIRELESS_ENABLE -# include "lkbt51.h" -# include "wireless.h" -# include "keychron_wireless_common.h" -# include "battery.h" -#endif - -#define POWER_ON_LED_DURATION 3000 -static uint32_t power_on_indicator_timer_buffer; - -#ifdef LEMOKEY_CALLBACK_ENABLE -bool keychron_task_kb(void); -#endif - -bool dip_switch_update_kb(uint8_t index, bool active) { - if (index == 0) { - default_layer_set(1UL << (active ? 0 : 2)); - } - dip_switch_update_user(index, active); - - return true; -} - -void keyboard_post_init_kb(void) { -#ifdef LK_WIRELESS_ENABLE - palSetLineMode(P2P4_MODE_SELECT_PIN, PAL_MODE_INPUT); - palSetLineMode(BT_MODE_SELECT_PIN, PAL_MODE_INPUT); - - writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); - - lkbt51_init(false); - wireless_init(); -#endif - - power_on_indicator_timer_buffer = timer_read32(); -#ifdef ENCODER_ENABLE - encoder_cb_init(); -#endif -#ifdef LEMOKEY_CALLBACK_ENABLE - factory_test_init(); - register_record_process(process_record_keychron_kb, false); - register_keychron_task(keychron_task_kb, false); -#endif - keyboard_post_init_user(); -} - -bool keychron_task_kb(void) { - if (power_on_indicator_timer_buffer) { - if (timer_elapsed32(power_on_indicator_timer_buffer) > POWER_ON_LED_DURATION) { - power_on_indicator_timer_buffer = 0; - -#ifdef LK_WIRELESS_ENABLE - writePin(BAT_LOW_LED_PIN, !BAT_LOW_LED_PIN_ON_STATE); -#endif - - } else { -#ifdef LK_WIRELESS_ENABLE - writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); -#endif - } - } - return true; -} - -#ifdef LK_WIRELESS_ENABLE -bool lpm_is_kb_idle(void) { - return power_on_indicator_timer_buffer == 0 && !factory_reset_indicating(); -} -#endif diff --git a/keyboards/keychron/v1_max/ansi_encoder/keymaps/default/Backup 1 of keymap.c b/keyboards/keychron/v1_max/ansi_encoder/keymaps/default/Backup 1 of keymap.c deleted file mode 100644 index 0085b34ebf..0000000000 --- a/keyboards/keychron/v1_max/ansi_encoder/keymaps/default/Backup 1 of keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include QMK_KEYBOARD_H -#include "keychron_common.h" - -enum layers { - MAC_BASE, - MAC_FN, - WIN_BASE, - WIN_FN, -}; -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [MAC_BASE] = LAYOUT_ansi_82( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_BSLS, KC_PGDN, - KC_CAPS, 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_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [MAC_FN] = LAYOUT_ansi_82( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_TOG, - KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, 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), - - [WIN_BASE] = LAYOUT_ansi_82( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_BSLS, KC_PGDN, - KC_CAPS, 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_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [WIN_FN] = LAYOUT_ansi_82( - KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_TOG, - KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, 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) -}; - -// clang-format on -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_lemokey_common(keycode, record)) { - return false; - } - return true; -} - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, - [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, -}; -#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/v1_max/ansi_encoder/keymaps/via/Backup 1 of keymap.c b/keyboards/keychron/v1_max/ansi_encoder/keymaps/via/Backup 1 of keymap.c deleted file mode 100644 index 0085b34ebf..0000000000 --- a/keyboards/keychron/v1_max/ansi_encoder/keymaps/via/Backup 1 of keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include QMK_KEYBOARD_H -#include "keychron_common.h" - -enum layers { - MAC_BASE, - MAC_FN, - WIN_BASE, - WIN_FN, -}; -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [MAC_BASE] = LAYOUT_ansi_82( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_BSLS, KC_PGDN, - KC_CAPS, 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_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [MAC_FN] = LAYOUT_ansi_82( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_TOG, - KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, 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), - - [WIN_BASE] = LAYOUT_ansi_82( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_BSLS, KC_PGDN, - KC_CAPS, 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_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [WIN_FN] = LAYOUT_ansi_82( - KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_TOG, - KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, 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) -}; - -// clang-format on -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_lemokey_common(keycode, record)) { - return false; - } - return true; -} - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, - [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, -}; -#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/v1_max/iso_encoder/keymaps/default/Backup 1 of keymap.c b/keyboards/keychron/v1_max/iso_encoder/keymaps/default/Backup 1 of keymap.c deleted file mode 100644 index 698b6808e0..0000000000 --- a/keyboards/keychron/v1_max/iso_encoder/keymaps/default/Backup 1 of keymap.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include QMK_KEYBOARD_H -#include "keychron_common.h" - -enum layers { - MAC_BASE, - MAC_FN, - WIN_BASE, - WIN_FN, -}; -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [MAC_BASE] = LAYOUT_ansi_83( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [MAC_FN] = LAYOUT_ansi_83( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [WIN_BASE] = LAYOUT_ansi_83( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [WIN_FN] = LAYOUT_ansi_83( - _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) - -}; -// clang-format on -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_lemokey_common(keycode, record)) { - return false; - } - - return true; -} - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, - [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, -}; -#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/v1_max/iso_encoder/keymaps/via/Backup 1 of keymap.c b/keyboards/keychron/v1_max/iso_encoder/keymaps/via/Backup 1 of keymap.c deleted file mode 100644 index 698b6808e0..0000000000 --- a/keyboards/keychron/v1_max/iso_encoder/keymaps/via/Backup 1 of keymap.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2023 @ Keychron (https://www.keychron.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 . - */ - -#include QMK_KEYBOARD_H -#include "keychron_common.h" - -enum layers { - MAC_BASE, - MAC_FN, - WIN_BASE, - WIN_FN, -}; -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [MAC_BASE] = LAYOUT_ansi_83( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [MAC_FN] = LAYOUT_ansi_83( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [WIN_BASE] = LAYOUT_ansi_83( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - 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, KC_BSPC, KC_PGUP, - 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_RBRC, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [WIN_FN] = LAYOUT_ansi_83( - _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) - -}; -// clang-format on -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_lemokey_common(keycode, record)) { - return false; - } - - return true; -} - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, - [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, -}; -#endif // ENCODER_MAP_ENABLE diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 2390324134..1bccc84f18 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -87,6 +87,10 @@ const led_matrix_driver_t led_matrix_driver = { .flush = snled27351_flush, .set_value = snled27351_set_value, .set_value_all = snled27351_set_value_all, +#ifdef LED_MATRIX_SHUTDOWN_ENABLE + .shutdown = snled27351_shutdown, + .exit_shutdown = snled27351_exit_shutdown, +#endif }; #elif defined(LED_MATRIX_SNLED27351_SPI) diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c index 13a660600c..6b209648ed 100644 --- a/quantum/rgb_matrix/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c @@ -86,6 +86,10 @@ const rgb_matrix_driver_t rgb_matrix_driver = { .flush = snled27351_flush, .set_color = snled27351_set_color, .set_color_all = snled27351_set_color_all, +# if defined(RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE) + .shutdown = snled27351_shutdown, + .exit_shutdown = snled27351_exit_shutdown +# endif }; #elif defined(RGB_MATRIX_SNLED27351_SPI) const rgb_matrix_driver_t rgb_matrix_driver = {