Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Keyboard] [Keymap] Update G60BLE folder to allow firmware to use Bluetooth with QMK keymaps #21120

Merged
merged 13 commits into from
Jun 5, 2023
Merged
Prev Previous commit
Next Next commit
moved tap dance C file to keymap, disabled NKRO at kb level
* BT does not support NKRO
  • Loading branch information
will-hedges committed Jun 3, 2023
commit 59d9f5efbdf3aea7854b806bf2635127f9097306
89 changes: 0 additions & 89 deletions keyboards/bioi/g60ble/keymaps/chemicalwill/g60ble_tap_dances.c

This file was deleted.

92 changes: 91 additions & 1 deletion keyboards/bioi/g60ble/keymaps/chemicalwill/keymap.c
will-hedges marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@

#define FN1_CAPS LT(_FN1, KC_CAPS)

#include "g60ble_tap_dances.c"
// Tap Dance enum
enum {
N9_F9,
N0_F10,
MINS_F11,
EQL_F12
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

Expand Down Expand Up @@ -35,3 +41,87 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)

};


// Tap Dance tap vs. hold https://docs.qmk.fm/#/feature_tap_dance?id=example-3
typedef struct {
uint16_t tap;
uint16_t hold;
uint16_t held;
} tap_dance_tap_hold_t;

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
tap_dance_action_t *action;

switch (keycode) {
case TD(N9_F9):
action = &tap_dance_actions[TD_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
}
break;

case TD(N0_F10):
action = &tap_dance_actions[TD_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
}
break;

case TD(MINS_F11):
action = &tap_dance_actions[TD_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
}
break;

case TD(EQL_F12):
action = &tap_dance_actions[TD_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
}
break;
}
return true;
}

void tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;

if (state->pressed) {
if (state->count == 1
#ifndef PERMISSIVE_HOLD
&& !state->interrupted
#endif
) {
register_code16(tap_hold->hold);
tap_hold->held = tap_hold->hold;
} else {
register_code16(tap_hold->tap);
tap_hold->held = tap_hold->tap;
}
}
}

void tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;

if (tap_hold->held) {
unregister_code16(tap_hold->held);
tap_hold->held = 0;
}
}

#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
{ .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }

tap_dance_action_t tap_dance_actions[] = {
[N9_F9] = ACTION_TAP_DANCE_TAP_HOLD(KC_9, KC_F9),
[N0_F10] = ACTION_TAP_DANCE_TAP_HOLD(KC_0, KC_F10),
[MINS_F11] = ACTION_TAP_DANCE_TAP_HOLD(KC_MINS, KC_F11),
[EQL_F12] = ACTION_TAP_DANCE_TAP_HOLD(KC_EQL, KC_F12)
};
1 change: 0 additions & 1 deletion keyboards/bioi/g60ble/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
LTO_ENABLE = yes
Expand Down