extrakeys.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /* Copyright 2021 Nguyen Vu Khang <brew4k@gmail.com>
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. enum my_keycodes {
  18. ______ = SAFE_RANGE,
  19. HYPR1, HYPR2, HYPR3, HYPR4, HYPR5, HYPR6, HYPR7, HYPR8, HYPR9, HYPR0,
  20. HYPRL,
  21. HYPRM,
  22. HYPRP,
  23. HYPRQ,
  24. HYPRS,
  25. HYPRT,
  26. KC_STAB
  27. };
  28. #undef _______
  29. #define ______ KC_NO
  30. #define HYPR1 HYPR(KC_1)
  31. #define HYPR2 HYPR(KC_2)
  32. #define HYPR3 HYPR(KC_3)
  33. #define HYPR4 HYPR(KC_4)
  34. #define HYPR5 HYPR(KC_5)
  35. #define HYPR6 HYPR(KC_6)
  36. #define HYPR7 HYPR(KC_7)
  37. #define HYPR8 HYPR(KC_8)
  38. #define HYPR9 HYPR(KC_9)
  39. #define HYPR0 HYPR(KC_0)
  40. #define HYPRL HYPR(KC_L)
  41. #define HYPRM HYPR(KC_M)
  42. #define HYPRP HYPR(KC_P)
  43. #define HYPRQ HYPR(KC_Q)
  44. #define HYPRS HYPR(KC_S)
  45. #define HYPRT HYPR(KC_T)
  46. #define KC_STAB LSFT(KC_TAB)
  47. uint8_t mod_state;
  48. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  49. mod_state = get_mods();
  50. switch (keycode) {
  51. case KC_BSPC: {
  52. static bool delkey_registered;
  53. if (record->event.pressed) { // on key-down of Backspace
  54. if (mod_state & MOD_MASK_CTRL) {
  55. // Ctrl + Backspace -> Forward Delete
  56. del_mods(MOD_MASK_CTRL);
  57. register_code(KC_DEL);
  58. delkey_registered = true;
  59. set_mods(mod_state);
  60. return false;
  61. }
  62. } else { // on release of Backspace
  63. if (delkey_registered) {
  64. unregister_code(KC_DEL);
  65. delkey_registered = false;
  66. return false;
  67. }
  68. }
  69. return true;
  70. };
  71. break;
  72. }
  73. return true;
  74. };