keymap.c 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "viterbi.h"
  2. #include "action_layer.h"
  3. #include "eeconfig.h"
  4. extern keymap_config_t keymap_config;
  5. #define _QWERTY 0
  6. #define _FN 1
  7. enum custom_keycodes {
  8. QWERTY = SAFE_RANGE,
  9. FN,
  10. };
  11. #define KC_ KC_TRNS
  12. #define _______ KC_TRNS
  13. #define KC_SWIN LGUI(KC_TILD) // Switch between windows
  14. #define KC_SAPP LGUI(KC_TAB) // Switch between applications
  15. #define KC_FN1 MO(_FN)
  16. #define KC_LCAG LCAG(KC_NO)
  17. #define KC_RVAD RGB_VAD
  18. #define KC_RVAI RGB_VAI
  19. #define KC_CLRM KC_NO // TODO: Clear sticky modifiers
  20. #define KC_RST RESET
  21. // TODO: Make modifiers sticky
  22. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  23. [_QWERTY] = KC_KEYMAP(
  24. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  25. GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL ,BSPC,
  26. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  27. TAB , Q , W , E , R , T ,LBRC, Y , U , I , O , P ,BSLS,PGUP,
  28. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  29. ESC , A , S , D , F , G ,RBRC, H , J , K , L ,SCLN,QUOT,ENT ,
  30. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  31. LSFT, Z , X , C , V , B ,SWIN, N , M ,COMM,DOT , UP ,SLSH,RSFT,
  32. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  33. LCTL,LCAG,LALT,LGUI,SPC ,CLRM,SAPP, FN1 ,SPC ,RGUI,LEFT,DOWN,RGHT,PGDN
  34. //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
  35. ),
  36. [_FN] = KC_KEYMAP(
  37. //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
  38. , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , ,
  39. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  40. , , , ,RST , , , , , , , , , ,
  41. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  42. , , , , , , , , ,RVAD,RVAI, , , ,
  43. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  44. , , , , , , , ,MUTE,VOLD,VOLU, , , ,
  45. //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
  46. , , , , , , , , , , , , ,
  47. //`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
  48. )
  49. };
  50. #ifdef AUDIO_ENABLE
  51. float tone_qwerty[][2] = SONG(QWERTY_SOUND);
  52. #endif
  53. void persistent_default_layer_set(uint16_t default_layer) {
  54. eeconfig_update_default_layer(default_layer);
  55. default_layer_set(default_layer);
  56. }
  57. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  58. switch (keycode) {
  59. case QWERTY:
  60. if (record->event.pressed) {
  61. #ifdef AUDIO_ENABLE
  62. PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
  63. #endif
  64. persistent_default_layer_set(1UL<<_QWERTY);
  65. }
  66. return false;
  67. break;
  68. }
  69. return true;
  70. }