Pouknouki

Keymap (Save)

Jan 8th, 2017
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.90 KB | None | 0 0
  1. #include "Hamilton.h"
  2. #include "keys.h"
  3.  
  4. #define GLS 1 //Greek Layer ACTION_MACRO ID (Shift)
  5. #define GLG 2 //Greek Layer ACTION_MACRO ID (Greek)
  6.  
  7. #define AM ACTION_MACRO
  8. #define ALTP ACTION_LAYER_TAP
  9.  
  10. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  11.     // [0] Base layer
  12.     KEYMAP(ESC,     F1,   F1,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,  F11,  F12,   PSCR,  HOME,   \
  13.            GRV,     KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQL,   BSPC,  END,    \
  14.            TAB,     Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC,  ENT,   PGUP,   \
  15.            CAPS,    A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT, NUHS,  /*E*/  PGDN,   \
  16.            RSFT,    Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN4,  FN2,   UP,    DEL,    \
  17.            LCTL,    FN1,  LALT,             SPC,              RALT, RGUI, RCTL, LEFT, DOWN,  RIGHT),
  18.    
  19.     // [1] Media Layer
  20.     KEYMAP(TRNS, MUTE, VDWN, VLUP, MPLY, MPRV, MNXT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,   TRNS,   \
  21.            TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,   TRNS,   \
  22.            TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,   TRNS,   \
  23.            TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, /* E */ TRNS,   \
  24.            TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,   TRNS,   \
  25.            TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
  26.    
  27.     // [2] Greek Layer
  28.     KEYMAP(TRNS,     TRNS,       TRNS,      TRNS,         TRNS,         TRNS,      TRNS, TRNS, TRNS,      TRNS,       TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  29.            TRNS,     TRNS,       TRNS,      TRNS,         TRNS,         TRNS,      TRNS, TRNS, TRNS,      TRNS,       TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  30.            TRNS,     UC(ALPHA),  UC(ZETA),  TRNS,         UC(EPSILON),  UC(TAU),   TRNS, TRNS, TRNS,      UC(OMEGA),  UC(PI),    TRNS, TRNS, TRNS,   TRNS,  \
  31.            TRNS,     TRNS,       UC(SIGMA), UC(DELTA),    UC(PHI),      UC(GAMMA), TRNS, TRNS, UC(CHI),   UC(LAMBDA), UC(KC_MU), TRNS, TRNS, /* E */ TRNS,  \
  32.             FN3,     UC(PSI),    UC(XI),    TRNS,         TRNS,         UC(BETA),  TRNS, TRNS, TRNS,      TRNS,       TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  33.            TRNS,     TRNS,       TRNS,      TRNS,                     /* SPACE */                         TRNS,       TRNS,      TRNS, TRNS, TRNS,   TRNS),
  34.  
  35.     // [3] Capital Greek Layer
  36.  
  37.     KEYMAP(TRNS,     TRNS,       TRNS,        TRNS,         TRNS,         TRNS,        TRNS, TRNS, TRNS,      TRNS,         TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  38.            TRNS,     TRNS,       TRNS,        TRNS,         TRNS,         TRNS,        TRNS, TRNS, TRNS,      TRNS,         TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  39.            TRNS,     TRNS,       TRNS,        TRNS,         TRNS,         UC(C_THETA), TRNS, TRNS, TRNS,      UC(C_OMEGA),  UC(C_PI),  TRNS, TRNS, TRNS,   TRNS,  \
  40.            TRNS,     TRNS,       UC(C_SIGMA), UC(C_DELTA),  UC(C_PHI),    UC(C_GAMMA), TRNS, TRNS, UC(C_CHI), UC(C_LAMBDA), TRNS,      TRNS, TRNS, /* E */ TRNS,  \
  41.             FN3,     UC(C_PSI),  UC(C_XI),    TRNS,         TRNS,         TRNS,        TRNS, TRNS, TRNS,      TRNS,         TRNS,      TRNS, TRNS, TRNS,   TRNS,  \
  42.            TRNS,     TRNS,       TRNS,        TRNS,                     /* SPACE */                         TRNS,           TRNS,      TRNS, TRNS, TRNS,   TRNS),
  43.  
  44.     // [4] Mathematical Layer
  45.     KEYMAP(TRNS,    TRNS,       TRNS,      TRNS,         TRNS,         TRNS,      TRNS,     TRNS,     TRNS,     TRNS,     TRNS,     TRNS,     TRNS,       TRNS,      TRNS,  \
  46.            UC(_IN), UC(LOR),    TRNS,      TRNS,         TRNS,         TRNS,      TRNS,     TRNS,     TRNS,     TRNS,     TRNS,     TRNS,     UC(DIFF),   TRNS,      TRNS,  \
  47.            TRNS,    UC(ALL),    UC(BBZ),   UC(EXIS),     UC(BBR),      UC(EQUV),  UC(UPAR), UC(UNIN), UC(INTR), UC(IFF),  UC(IF),   TRNS,     TRNS,       TRNS,      TRNS,  \
  48.            TRNS,    UC(BBQ),    UC(EMPT),  UC(PART),     UC(INFY),     UC(LEAR),  UC(DNAR), UC(RIAR), UC(APPX), UC(NABL), TRNS,     UC(PROP), UC(INFR),   /* E */    TRNS,  \
  49.            TRNS,    UC(LNOT),   UC(TIMS),  UC(BBC),      UC(SQRT),     TRNS,      UC(BBN),  UC(INTG), UC(DIVD), UC(PSMN), TRNS,     TRNS,     TRNS,       UC(UPAR),  TRNS,  \
  50.            TRNS,    TRNS,       TRNS,       TRNS,                     /* SPACE */                                TRNS,     TRNS,     TRNS,    UC(LEAR),   UC(DNAR),  UC(RIAR)),    
  51. };
  52.  
  53. #define L_DEFAULT      0
  54. #define L_MEDIA        1
  55. #define L_GREEK        2
  56. #define L_CAPITALGREEK 3
  57. #define L_MATH         4
  58.  
  59. const uint16_t PROGMEM fn_actions[] =
  60. {
  61.     ACTION_LAYER_MOMENTARY (L_DEFAULT),               // FN0 (Default)
  62.     ACTION_LAYER_MOMENTARY (L_MEDIA),                 // FN1 (Media)
  63.     ACTION_LAYER_MOMENTARY (L_GREEK),                 // FN2 (Greek)
  64.     ACTION_LAYER_TAP_TOGGLE(L_CAPITALGREEK),          // FN3 (Capital Greek)
  65.     ACTION_LAYER_MOMENTARY (L_MATH),                  // FN4 (Math)    
  66. };
  67.  
  68. int currentLayer = L_DEFAULT;
  69. bool greekPressed = false;
  70. bool shiftPressed = false;
  71.  
  72. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  73. {
  74.   // MACRODOWN only works in this function
  75.       switch(id) {
  76.         case 0:
  77.           if (record->event.pressed) {
  78.             register_code(KC_LSFT);
  79.           } else {
  80.             unregister_code(KC_LSFT);
  81.           }
  82.           break;
  83.       //   case GLS: // Left Shift was pressed (or released)
  84.       //     shiftPressed = !shiftPressed;
  85.       //     // Send the signal to the computer
  86.       //     if (record->event.pressed)
  87.       //       register_code(KC_LSFT);
  88.       //     else
  89.       //       unregister_code(KC_LSFT);
  90.       //     // Refresh Greek mode state
  91.       //     enableDisableGreek();
  92.       //     break;
  93.       //   case GLG: // Greek key was pressed (or released)
  94.       //     greekPressed = !greekPressed;
  95.       //     enableDisableGreek();            
  96.     }
  97.     return MACRO_NONE;
  98. };
  99.  
  100. // void enableDisableGreek()
  101. // {
  102. //   if (!shiftPressed && !greekPressed)
  103. //   {
  104. //     ACTION_LAYER_OFF(L_CAPITALGREEK);
  105. //     ACTION_LAYER_OFF(L_GREEK);
  106. //   }
  107. //   else if (!shiftPressed && greekPressed)
  108. //   {
  109. //     ACTION_LAYER_OFF(L_CAPITALGREEK);
  110. //     ACTION_LAYER_ON (L_GREEK);
  111. //   }
  112. //   else if (shiftPressed && !greekPressed)
  113. //   {
  114. //     ACTION_LAYER_OFF(L_CAPITALGREEK);
  115. //     ACTION_LAYER_OFF(L_GREEK);
  116. //   }
  117. //   else if (shiftPressed && greekPressed)
  118. //   {
  119. //     ACTION_LAYER_ON (L_CAPITALGREEK);
  120. //     ACTION_LAYER_OFF(L_GREEK);
  121. //   }
  122. // }
  123.  
  124. void matrix_init_user(void) {
  125.   print("coucou");
  126. }
  127.  
  128. void matrix_scan_user(void) {
  129.  
  130. }
  131.  
  132. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  133.   return true;
  134. }
  135.  
  136. void led_set_user(uint8_t usb_led) {
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment