diff options
| author | Roland Huber <36362570+darkcruix@users.noreply.github.com> | 2021-06-20 04:28:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-19 19:28:54 -0700 |
| commit | e4c5b1bbbb3d76a7632c8a9d5c19c5eb8a9a4e1f (patch) | |
| tree | e94137d55f583c5dae90e6826acce0d613eef9a7 /drivers | |
| parent | f6ac5abd95f5689542b0240a8e333ab9b3f591af (diff) | |
| download | qmk_firmware-e4c5b1bbbb3d76a7632c8a9d5c19c5eb8a9a4e1f.tar.gz qmk_firmware-e4c5b1bbbb3d76a7632c8a9d5c19c5eb8a9a4e1f.zip | |
Add Per Key exclusions for Haptic Feedback (#12386)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/haptic/haptic.c | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/drivers/haptic/haptic.c b/drivers/haptic/haptic.c index de3f40052..3fab1be1a 100644 --- a/drivers/haptic/haptic.c +++ b/drivers/haptic/haptic.c | |||
| @@ -291,6 +291,73 @@ void haptic_play(void) { | |||
| 291 | #endif | 291 | #endif |
| 292 | } | 292 | } |
| 293 | 293 | ||
| 294 | __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) { | ||
| 295 | switch(keycode) { | ||
| 296 | # ifdef NO_HAPTIC_MOD | ||
| 297 | case QK_MOD_TAP ... QK_MOD_TAP_MAX: | ||
| 298 | if (record->tap.count == 0) return false; | ||
| 299 | break; | ||
| 300 | case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: | ||
| 301 | if (record->tap.count != TAPPING_TOGGLE) return false; | ||
| 302 | break; | ||
| 303 | case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: | ||
| 304 | if (record->tap.count == 0) return false; | ||
| 305 | break; | ||
| 306 | case KC_LCTRL ... KC_RGUI: | ||
| 307 | case QK_MOMENTARY ... QK_MOMENTARY_MAX: | ||
| 308 | # endif | ||
| 309 | # ifdef NO_HAPTIC_FN | ||
| 310 | case KC_FN0 ... KC_FN31: | ||
| 311 | # endif | ||
| 312 | # ifdef NO_HAPTIC_ALPHA | ||
| 313 | case KC_A ... KC_Z: | ||
| 314 | # endif | ||
| 315 | # ifdef NO_HAPTIC_PUNCTUATION | ||
| 316 | case KC_ENTER: | ||
| 317 | case KC_ESCAPE: | ||
| 318 | case KC_BSPACE: | ||
| 319 | case KC_SPACE: | ||
| 320 | case KC_MINUS: | ||
| 321 | case KC_EQUAL: | ||
| 322 | case KC_LBRACKET: | ||
| 323 | case KC_RBRACKET: | ||
| 324 | case KC_BSLASH: | ||
| 325 | case KC_NONUS_HASH: | ||
| 326 | case KC_SCOLON: | ||
| 327 | case KC_QUOTE: | ||
| 328 | case KC_GRAVE: | ||
| 329 | case KC_COMMA: | ||
| 330 | case KC_SLASH: | ||
| 331 | case KC_DOT: | ||
| 332 | case KC_NONUS_BSLASH: | ||
| 333 | # endif | ||
| 334 | # ifdef NO_HAPTIC_LOCKKEYS | ||
| 335 | case KC_CAPSLOCK: | ||
| 336 | case KC_SCROLLLOCK: | ||
| 337 | case KC_NUMLOCK: | ||
| 338 | # endif | ||
| 339 | # ifdef NO_HAPTIC_NAV | ||
| 340 | case KC_PSCREEN: | ||
| 341 | case KC_PAUSE: | ||
| 342 | case KC_INSERT: | ||
| 343 | case KC_DELETE: | ||
| 344 | case KC_PGDOWN: | ||
| 345 | case KC_PGUP: | ||
| 346 | case KC_LEFT: | ||
| 347 | case KC_UP: | ||
| 348 | case KC_RIGHT: | ||
| 349 | case KC_DOWN: | ||
| 350 | case KC_END: | ||
| 351 | case KC_HOME: | ||
| 352 | # endif | ||
| 353 | # ifdef NO_HAPTIC_NUMERIC | ||
| 354 | case KC_1 ... KC_0: | ||
| 355 | # endif | ||
| 356 | return false; | ||
| 357 | } | ||
| 358 | return true; | ||
| 359 | } | ||
| 360 | |||
| 294 | bool process_haptic(uint16_t keycode, keyrecord_t *record) { | 361 | bool process_haptic(uint16_t keycode, keyrecord_t *record) { |
| 295 | if (keycode == HPT_ON && record->event.pressed) { | 362 | if (keycode == HPT_ON && record->event.pressed) { |
| 296 | haptic_enable(); | 363 | haptic_enable(); |
| @@ -335,12 +402,12 @@ bool process_haptic(uint16_t keycode, keyrecord_t *record) { | |||
| 335 | if (haptic_config.enable) { | 402 | if (haptic_config.enable) { |
| 336 | if (record->event.pressed) { | 403 | if (record->event.pressed) { |
| 337 | // keypress | 404 | // keypress |
| 338 | if (haptic_config.feedback < 2) { | 405 | if (haptic_config.feedback < 2 && get_haptic_enabled_key(keycode, record)) { |
| 339 | haptic_play(); | 406 | haptic_play(); |
| 340 | } | 407 | } |
| 341 | } else { | 408 | } else { |
| 342 | // keyrelease | 409 | // keyrelease |
| 343 | if (haptic_config.feedback > 0) { | 410 | if (haptic_config.feedback > 0 && get_haptic_enabled_key(keycode, record)) { |
| 344 | haptic_play(); | 411 | haptic_play(); |
| 345 | } | 412 | } |
| 346 | } | 413 | } |
