Skip to content

Commit

Permalink
Pearly_v2: enable key_override
Browse files Browse the repository at this point in the history
  • Loading branch information
yangdigi committed Jan 8, 2025
1 parent 656c808 commit 3938389
Show file tree
Hide file tree
Showing 9 changed files with 218 additions and 230 deletions.
46 changes: 7 additions & 39 deletions keyboards/ydkb/pearly_v2/config.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
#pragma once

#include "config_common.h"
#include "config_ble51.h"

/* USB Device descriptor parameter */
#define FW_VER_DATE DO69
#define CONTACT(x,y) x##y
#define CONTACT2(x,y) CONTACT(x,y)
#define FW_VER CONTACT2(VIAL_, FW_VER_DATE)
#define FW_VER_DATE DP18
#define VENDOR_ID 0x9D5B
#define PRODUCT_ID 0x2242
#define DEVICE_VER 0x0001
Expand All @@ -26,46 +24,15 @@
#define TAPPING_TOGGLE 2


/* key combination for command */
#define IS_COMMAND() ( \
(get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) || \
(get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT))) \
)

#define DEFAULT_6KRO // macOS's Capslock switching between Chinese and English has compatibility issues with NKRO

#define ws2812_PORTREG PORTD
#define ws2812_DDRREG DDRD
#define ws2812_pin PD0
#define RGBLED_NUM 12 // Number of LEDs
#define RGBLIGHT_MODES 14 //less rgblight mode to save some space for vial

/* disable command for default layer */
#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS 0
#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS 0


#if defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB1286__)
#define UCSR1D _SFR_MEM8(0xCB)
#define RTSEN 0
#define CTSEN 1

#define SERIAL_UART_BAUD 76800
#define SERIAL_UART_DATA UDR1
#define SERIAL_UART_UBRR ((F_CPU/(8.0*SERIAL_UART_BAUD)-1+0.5))
#define SERIAL_UART_RXD_VECT USART1_RX_vect
#define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
#define SERIAL_UART_INIT() do { \
cli(); \
UBRR1L = (uint8_t) SERIAL_UART_UBRR; \
UBRR1H = ((uint16_t)SERIAL_UART_UBRR>>8); \
UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
UCSR1B |= (0<<TXCIE1) | (1<<TXEN1); \
UCSR1C |= (0<<UPM11) | (0<<UPM10); \
UCSR1A |= (1<<U2X1); \
sei(); \
} while(0)
#else
#error "USART configuration is needed."
#endif
/* BT Power Control */
#define BT_POWERED (~PORTD & (1<<5))
#define bt_power_init() do { DDRD |= (1<<5); PORTD &= ~(1<<5); } while(0)
Expand Down Expand Up @@ -99,7 +66,8 @@
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT //930B
#define NO_ACTION_ONESHOT //930B
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#define NO_DEFAULT_COMMAND
#define NO_DEFAULT_COMMAND
#define NO_RESET
3 changes: 2 additions & 1 deletion keyboards/ydkb/pearly_v2/keymaps/vial/config.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
#define FLASH_KEYMAP_COUNT 2
#define FLASH_KEYMAP8_COUNT 1
//#define FLASH_KEYMAP_COUNT 2
#define VIAL_KEYBOARD_UID {0x2E, 0xE6, 0x0E, 0x23, 0x34, 0xEF, 0x99, 0x37}
14 changes: 12 additions & 2 deletions keyboards/ydkb/pearly_v2/keymaps/vial/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ enum user_keycode {
RGB_LUM_UP,
};

#ifdef FLASH_KEYMAP8_COUNT
const uint8_t PROGMEM keymaps8[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = {
{KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_BSPACE, KC_MUTE},
{KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENTER},
{KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT},
{KC_MS_L, KC_LCTRL, KC_LALT, KC_LGUI, KC_MS_R, KC_SPACE, KC_VOLD, KC_P, KC_RGUI, KC_RALT, KC_RCTRL, KC_VOLU}
},
};
#else
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = {
{KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_BSPACE, KC_MUTE},
Expand All @@ -28,6 +38,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUE_UP, RGB_SAT_UP, RGB_LUM_UP, KC_TRNS, KC_LBRACKET, KC_RBRACKET, KC_QUOTE, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_Toogle, RGB_Mode_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLASH, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},

},
};
#endif
2 changes: 1 addition & 1 deletion keyboards/ydkb/pearly_v2/keymaps/vial/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ VIAL_INSECURE = yes
QMK_SETTINGS = no
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
KEY_OVERRIDE_ENABLE = no
KEY_OVERRIDE_ENABLE = yes
32 changes: 11 additions & 21 deletions keyboards/ydkb/pearly_v2/keymaps/vial/vial.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,22 @@
{
"lighting": "none",
"matrix": {"rows": 4, "cols": 12},
"customKeycodes": [
{"name": "BT/USB", "title": "", "shortName": "BT/U"},
{"name": "RESET", "title": "", "shortName": "BLERST"},
{"name": "BT/USB", "title": "", "shortName": "BT/USB"},
{"name": "BLERST", "title": "", "shortName": "BLERST"},
{"name": "BAT%", "title": "", "shortName": "BAT%"},
{"name": "LkMode", "title": "", "shortName": "Lk.M"},
{"name": "RGB_TG", "title": "", "shortName": "R.TG"},
{"name": "RGB_M-", "title": "", "shortName": "R.M-"},
{"name": "RGB_M+", "title": "", "shortName": "R.M+"},
{"name": "HUE-", "title": "", "shortName": "HUE-"},
{"name": "HUE+", "title": "", "shortName": "HUE+"},
{"name": "SAT-", "title": "", "shortName": "SAT-"},
{"name": "SAT+", "title": "", "shortName": "SAT+"},
{"name": "LUM-", "title": "", "shortName": "LUM-"},
{"name": "LUM+", "title": "", "shortName": "LUM+"}
{"name": "LkMode", "title": "", "shortName": "LkMode"}
],
"layouts": {
"labels":[["Overall", "13 Cols","12 Cols"], ["12C Enter","13C", "12C ANSI Enter", "12C ISO Enter"],["12C LShift","13C", "2.25u","1.25u+1u"],"Split Space"],
"keymap": [
["0,0\n\n\n0,0","0,1\n\n\n0,0","0,2\n\n\n0,0","0,3\n\n\n0,0","0,4\n\n\n0,0","0,5\n\n\n0,0","0,6\n\n\n0,0","0,7\n\n\n0,0","0,8\n\n\n0,0","0,9\n\n\n0,0","3,7\n\n\n0,0",{"x":-0.5,"d":true},"0,10\n\n\n1,0",{"x":-0.5},"0,10\n\n\n0,0","0,11\n\n\n0,0"],
[{"w":1.25},"1,0\n\n\n0,0","1,1\n\n\n0,0","1,2\n\n\n0,0","1,3\n\n\n0,0","1,4\n\n\n0,0","1,5\n\n\n0,0","1,6\n\n\n0,0","1,7\n\n\n0,0","1,8\n\n\n0,0","1,9\n\n\n0,0","1,10\n\n\n0,0",{"w":1.75},"1,11\n\n\n0,0"],
[{"w":1.75},"2,0\n\n\n0,0",{"x":-1.75,"w":2.25,"d":true},"2,0\n\n\n2,0",{"x":-0.5},"2,1\n\n\n0,0","2,2\n\n\n0,0","2,3\n\n\n0,0","2,4\n\n\n0,0","2,5\n\n\n0,0","2,6\n\n\n0,0","2,7\n\n\n0,0","2,8\n\n\n0,0","2,9\n\n\n0,0","2,10\n\n\n0,0",{"w":1.25},"2,11\n\n\n0,0"],
[{"x":1.125},"3,1\n\n\n3,0",{"x":0.005,"w":1.25},"3,2\n\n\n3,0",{"w":6.25},"3,5\n\n\n3,0",{"x":-0.005,"w":1.25},"3,9\n\n\n3,0",{"x":0.005},"3,10\n\n\n3,0"],
[{"y":0.25,"w":1.5},"0,0\n\n\n0,1","0,1\n\n\n0,1","0,2\n\n\n0,1","0,3\n\n\n0,1","0,4\n\n\n0,1","0,5\n\n\n0,1","0,6\n\n\n0,1","0,7\n\n\n0,1","0,8\n\n\n0,1","0,9\n\n\n0,1","0,10\n\n\n1,1",{"w":1.5},"0,11\n\n\n1,1",{"x":0.5},"0,10\n\n\n1,2",{"x":0.25,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"1,11\n\n\n1,2"],
[{"w":1.75},"1,0\n\n\n0,1","1,1\n\n\n0,1","1,2\n\n\n0,1","1,3\n\n\n0,1","1,4\n\n\n0,1","1,5\n\n\n0,1","1,6\n\n\n0,1","1,7\n\n\n0,1","1,8\n\n\n0,1","1,9\n\n\n0,1",{"w":2.25},"1,11\n\n\n1,1",{"x":0.75},"1,10\n\n\n1,2"],
[{"w":2.25},"2,0\n\n\n2,1","2,1\n\n\n0,1","2,2\n\n\n0,1","2,3\n\n\n0,1","2,4\n\n\n0,1","2,5\n\n\n0,1","2,6\n\n\n0,1","2,7\n\n\n0,1","2,8\n\n\n0,1","2,9\n\n\n0,1",{"w":1.75},"2,11\n\n\n0,1",{"x":0.5,"w":1.25},"2,0\n\n\n2,2","3,0\n\n\n2,2"],
[{"x":1.125},"3,1\n\n\n3,1",{"x":0.01,"w":1.25},"3,2\n\n\n3,1",{"w":1.25},"3,3\n\n\n3,1",{"w":1.75},"3,4\n\n\n3,1",{"w":2},"3,5\n\n\n3,1",{"x":-0.01,"w":1.25},"3,8\n\n\n3,1",{"w":1.25},"3,9\n\n\n3,1","3,10\n\n\n3,1"]
["0,0\n\n\n0,0","0,1\n\n\n0,0","0,2\n\n\n0,0","0,3\n\n\n0,0","0,4\n\n\n0,0","0,5\n\n\n0,0","0,6\n\n\n0,0","0,7\n\n\n0,0","0,8\n\n\n0,0","0,9\n\n\n0,0","3,7\n\n\n0,0",{"x":-0.5,"d":true},"0,10\n\n\n1,0",{"x":-0.5},"0,10\n\n\n0,0","0,11\n\n\n0,0"],
[{"w":1.25},"1,0\n\n\n0,0","1,1\n\n\n0,0","1,2\n\n\n0,0","1,3\n\n\n0,0","1,4\n\n\n0,0","1,5\n\n\n0,0","1,6\n\n\n0,0","1,7\n\n\n0,0","1,8\n\n\n0,0","1,9\n\n\n0,0","1,10\n\n\n0,0",{"w":1.75},"1,11\n\n\n0,0"],
[{"w":1.75},"2,0\n\n\n0,0",{"x":-1.75,"w":2.25,"d":true},"2,0\n\n\n2,0",{"x":-0.5},"2,1\n\n\n0,0","2,2\n\n\n0,0","2,3\n\n\n0,0","2,4\n\n\n0,0","2,5\n\n\n0,0","2,6\n\n\n0,0","2,7\n\n\n0,0","2,8\n\n\n0,0","2,9\n\n\n0,0","2,10\n\n\n0,0",{"w":1.25},"2,11\n\n\n0,0"],
[{"x":1.125},"3,1\n\n\n3,0",{"x":0.005,"w":1.25},"3,2\n\n\n3,0",{"w":6.25},"3,5\n\n\n3,0",{"x":-0.005,"w":1.25},"3,9\n\n\n3,0",{"x":0.005},"3,10\n\n\n3,0"],
[{"y":0.25,"w":1.5},"0,0\n\n\n0,1","0,1\n\n\n0,1","0,2\n\n\n0,1","0,3\n\n\n0,1","0,4\n\n\n0,1","0,5\n\n\n0,1","0,6\n\n\n0,1","0,7\n\n\n0,1","0,8\n\n\n0,1","0,9\n\n\n0,1","0,10\n\n\n1,1",{"w":1.5},"0,11\n\n\n1,1",{"x":0.5},"0,10\n\n\n1,2",{"x":0.25,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"1,11\n\n\n1,2"],
[{"w":1.75},"1,0\n\n\n0,1","1,1\n\n\n0,1","1,2\n\n\n0,1","1,3\n\n\n0,1","1,4\n\n\n0,1","1,5\n\n\n0,1","1,6\n\n\n0,1","1,7\n\n\n0,1","1,8\n\n\n0,1","1,9\n\n\n0,1",{"w":2.25},"1,11\n\n\n1,1",{"x":0.75},"1,10\n\n\n1,2"],
[{"w":2.25},"2,0\n\n\n2,1","2,1\n\n\n0,1","2,2\n\n\n0,1","2,3\n\n\n0,1","2,4\n\n\n0,1","2,5\n\n\n0,1","2,6\n\n\n0,1","2,7\n\n\n0,1","2,8\n\n\n0,1","2,9\n\n\n0,1",{"w":1.75},"2,11\n\n\n0,1",{"x":0.5,"w":1.25},"2,0\n\n\n2,2","3,0\n\n\n2,2"],
[{"x":1.125},"3,1\n\n\n3,1",{"x":0.01,"w":1.25},"3,2\n\n\n3,1",{"w":1.25},"3,3\n\n\n3,1",{"w":1.75},"3,4\n\n\n3,1",{"w":2},"3,5\n\n\n3,1",{"x":-0.01,"w":1.25},"3,8\n\n\n3,1",{"w":1.25},"3,9\n\n\n3,1","3,10\n\n\n3,1"]
]
}
}
62 changes: 50 additions & 12 deletions keyboards/ydkb/pearly_v2/led_fn.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,58 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdint.h"
#include "led.h"
#include "via.h"
#include "rgblight.h"
#include "command.h"
#include "ble51.h"
#include "rgblight.h"

#if 0
void led_set_user(uint8_t usb_led)
void indicator_task(void)
{
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// output high
PORTB |= (1<<2);
} else {
// output low
PORTB &= ~(1<<2);
static uint8_t steps = 0;
if ((steps++ & 0b11)) return;
// run every 4*40 = 160ms
PORTB &= ~(1<<2); //caps off

bool indicator_need_update = 0;
// low_battery and display_connection_status when ble51_on
if (ble51_boot_on && (low_battery || display_connection_status_check_times)) {
// 320ms on,320ms off. bt connected: 320ms*3 on, 320ms off.
if (low_battery) {
rgblight_timer_disable();
if (steps & 0b1000) PORTB |= (1<<2);
} else {
indicator_need_update = 1;
if (bt_connected) {
if (steps & 0b11000) {
PORTB |= (1<<2);
rgbled[0].g = 128;
}
} else {
if (steps & 0b1000) {
PORTB |= (1<<2);
rgbled[0].b = 128;
}
}
//所有灯用于连接指示
rgblight_set_all_as(&rgbled[0]);
//rgblight_setrgb(rgbled[0].r, rgbled[0].g, rgbled[0].b);
}
}
// capslock
else if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
PORTB |= (1<<2);
}

if (indicator_need_update) {
rgblight_timer_enable();
//直接更新,防止连接指示灯或低电量也fading
ws2812_setleds(rgbled);
// 清除,为下一次更新做准备。也避免连接指示后,底灯依然处于亮的状态。
rgblight_clear();
} else if (rgblight_config.enable == 0) {
//rgblight off and no indicator
rgblight_timer_disable();
}
}
#endif

void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
Expand All @@ -45,9 +81,11 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
KC_V, // 2 Output Battery Value
KC_L // 3 Lock Mode
};
if (keycode >= USER00) {
// RGB_TOG 0x5cc1, RGB_VAI 0x5cc9, RGB_VAD 0x5cca
// Toggle, M+, M-, HUE+, HUE-, SAT+, SAT-, VAL+, VAL-
if (keycode >= RGB_TOG && keycode <= RGB_VAD) rgblight_action(keycode - RGB_TOG);
else if (keycode >= USER00) {
if (keycode < USER04) command_extra(userx_to_command[keycode-USER00]);
else if (keycode <= USER12) rgblight_action(keycode - USER04);
}
}
}
7 changes: 6 additions & 1 deletion keyboards/ydkb/pearly_v2/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,9 @@ static void select_row(uint8_t row)

bool suspend_wakeup_condition(void)
{
uint8_t matrix_keys_down = matrix_scan();
if (BLE51_PowerState >= 10) {
uint8_t matrix_keys_down = matrix_scan();
//uint8_t matrix_keys_down = matrix_scan();
if (matrix_keys_down == 2) {
// K14 F, K17 J
if (matrix_debouncing[1][4] == 0xff && matrix_debouncing[1][7] == 0xff) return true;
Expand All @@ -216,13 +217,17 @@ bool suspend_wakeup_condition(void)
return false;

} else {
#if 1
if (matrix_keys_down) return true;
#else
select_all_rows();
_delay_us(6);
for (uint8_t i = 0; i < MATRIX_COLS; i++) {
if (get_key(i)) {
return true;
}
}
#endif
}
return false;
}
Expand Down
Loading

0 comments on commit 3938389

Please sign in to comment.