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/haptic/haptic.c | |
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/haptic/haptic.c')
-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 | } |