hakbraley

QMK Alt Layer Code

Jul 20th, 2021 (edited)
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. /* remove ALT keys,
  2.  * press the keycode by itself,
  3.  * release the keycode on key up,
  4.  * return false to avoid sending the original keypress [;'/
  5.  */
  6. #define NO_ALT(kc)              \
  7.   if (record->event.pressed) {  \
  8.     del_mods(MOD_MASK_ALT);     \
  9.     register_code16(kc);        \
  10.   } else {                      \
  11.     unregister_code16(kc);      \
  12.   }                             \
  13.   return false;
  14.  
  15.  
  16. bool alt_down = false;
  17.  
  18. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  19.   //if an ALT key is held down
  20.   if (alt_down) {  
  21.     switch (keycode) {
  22.       case KC_LBRC:         //if ALT + [
  23.         NO_ALT(KC_UP);      //  press UP
  24.       case KC_SCLN:         //if ALT + ;
  25.         NO_ALT(KC_LEFT);    //  press LEFT
  26.       case KC_QUOT:         //if ALT + '
  27.         NO_ALT(KC_DOWN);    //  press DOWN
  28.       case KC_SLSH:         //if ALT + /
  29.         NO_ALT(KC_RIGHT);   //  press RIGHT
  30.       default:
  31.         return true;
  32.     }
  33.   }
  34.   switch (keycode) {
  35.       case KC_LALT:  //for left or right ALT,
  36.       case KC_RALT:  //set alt_down to true if pressed
  37.         if (record->event.pressed) {
  38.             alt_down = true;
  39.         } else {  //on ALT keyup
  40.             alt_down = false;
  41.         }
  42.         break;
  43.   return true;
  44. }
Add Comment
Please, Sign In to add comment