]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - keyboard/hhkb/keymap.c
Fix keymap MACRO of pc98 adn hhkb
[tmk_firmware.git] / keyboard / hhkb / keymap.c
index a5b6d3ace011b1a4546410cd4c9d64ca29501ea6..d4e009ede6fa2f050a0821d09f93db889089366b 100644 (file)
@@ -65,9 +65,9 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      */
     KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
            TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-           FN6, A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN7, \
-           FN8, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, FN12,FN9, \
-                LGUI,LALT,          FN5,                FN13,FN4),
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN7, \
+           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, FN12,FN9, \
+                LGUI,LALT,          FN5,                FN14,FN4),
 
     /* Layer 1: HHKB mode (HHKB Fn)
      * ,-----------------------------------------------------------.
@@ -85,7 +85,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
            CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS, UP,  NO,  BSPC, \
            LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,FN0, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
                 LGUI,LALT,          SPC,                RALT,RGUI),
 
     /* Layer 2: Vi mode (Slash)
@@ -104,7 +104,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KEYMAP(ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
            TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSPC, \
            LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN0, RSFT,NO, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, TRNS,RSFT,NO, \
                 LGUI,LALT,          SPC,                RALT,RGUI),
 
     /* Layer 3: Mouse mode (Semicolon)
@@ -123,9 +123,9 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      */
     KEYMAP(ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
            TAB, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,WH_U,WH_R,NO,  NO,  NO,  BSPC, \
-           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,FN0, QUOT,ENT, \
+           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
            LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,NO, \
-                LGUI,LALT,          BTN1,               RALT,FN0),
+                LGUI,LALT,          BTN1,               RALT,TRNS),
 
     /* Layer 4: Matias half keyboard style (Space)
      * ,-----------------------------------------------------------.
@@ -144,7 +144,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            BSPC,P,   O,   I,   U,   Y,   T,   R,   E,   W,   Q,   NO,  NO,  TAB, \
            LCTL,SCLN,L,   K,   J,   H,   G,   F,   D,   S,   A,   RCTL,RCTL, \
            LSFT,SLSH,DOT, COMM,M,   N,   B,   V,   C,   X,   Z,   RSFT,NO, \
-                LGUI,LALT,          FN0,                RALT,RGUI),
+                LGUI,LALT,          TRNS,               RALT,RGUI),
 
     /* Layer5: another Mouse mode (Space)
      * ,-----------------------------------------------------------.
@@ -164,7 +164,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            TAB, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,WH_U,WH_R,NO,  NO,  NO,  BSPC, \
            LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,NO,  NO,  ENT, \
            LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,BTN4,BTN5,NO,  RSFT,NO, \
-                LGUI,LALT,          FN0,                RALT,RGUI),
+                LGUI,LALT,          TRNS,               RALT,RGUI),
 };
 
 
@@ -173,7 +173,11 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 enum function_id {
     LSHIFT_LPAREN,
     RSHIFT_RPAREN,
-    MACRO                   = 0xff
+};
+
+enum macro_id {
+    SHIFT_D,
+    HELLO,
 };
 
 
@@ -182,47 +186,46 @@ enum function_id {
  */
 // TODO: use [1] = KEYMAP(...) to prevent from changing index of element?
 static const uint16_t PROGMEM fn_actions[] = {
-    ACTION_LAYER_DEFAULT,                           // FN0
-    ACTION_LAYER_SET(1),                            // FN1
-    ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH),          // FN2  Layer with Slash
-    ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN),           // FN3  Layer with Semicolon
+    ACTION_DEFAULT_LAYER,                           // FN0
+    ACTION_KEYMAP(1),                            // FN1
+    ACTION_KEYMAP_TAP_KEY(2, KC_SLASH),          // FN2  Layer with Slash
+    ACTION_KEYMAP_TAP_KEY(3, KC_SCLN),           // FN3  Layer with Semicolon
 
-    ACTION_LAYER_SET(3),                            // FN4
-//  ACTION_LAYER_SET_TOGGLE(3),                     // FN4
+    ACTION_KEYMAP(3),                            // FN4
+//  ACTION_KEYMAP_TOGGLE(3),                     // FN4
 //  ACTION_FUNCTION(MACRO, 0),                      // FN4
-    ACTION_LAYER_SET_TAP_KEY(5, KC_SPC),            // FN5
+    ACTION_KEYMAP_TAP_KEY(5, KC_SPC),            // FN5
 //  ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC),          // FN6  Control with tap Backspace
     ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC),           // FN6  Control with tap Backspace
     ACTION_RMOD_TAP_KEY(KC_RCTL, KC_ENT),           // FN7  Control with tap Enter
     ACTION_LMOD_ONESHOT(KC_LSFT),                   // FN8  Oneshot Shift
-    ACTION_LAYER_SET_TAP_TOGGLE(1),                 // FN9
-    ACTION_LAYER_BIT_TAP_KEY(1, KC_GRV),            // FN10 Layer with Grave
-    //ACTION_LAYER_BIT(1),                          // FN10
-    //ACTION_LAYER_BIT_TAP_TOGGLE(1),               // FN10
-    ACTION_FUNCTION_TAP(LSHIFT_LPAREN),             // FN11 Function: LShift with tap '('
-    ACTION_FUNCTION_TAP(RSHIFT_RPAREN),             // FN12 Function: RShift with tap ')'
-    ACTION_FUNCTION(MACRO, 1),                      // FN13 Macro:
+    [9]  = ACTION_KEYMAP_TAP_TOGGLE(1),                 // FN9
+    [11] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN),             // FN11 Function: LShift with tap '('
+    [12] = ACTION_FUNCTION_TAP(RSHIFT_RPAREN),             // FN12 Function: RShift with tap ')'
+    [13] = ACTION_MACRO(SHIFT_D),                           
+    [14] = ACTION_MACRO(HELLO),                             
 };
 
 
 /*
  * Macro definition
  */
-#define MACRO(...) ({ static prog_macro_t _m[] PROGMEM = { __VA_ARGS__ }; _m; })
-#define MACRO_NONE  0
-static const prog_macro_t *get_macro(uint8_t id, bool pressed)
+const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
+    keyevent_t event = record->event;
+    //uint8_t tap_count = record->tap_count;
+
     switch (id) {
-        case 0:
-            return (pressed ?
+        case SHIFT_D:
+            return (event.pressed ?
                     MACRO( MD(LSHIFT), D(D), END ) :
                     MACRO( U(D), MU(LSHIFT), END ) );
-        case 1:
-            return (pressed ?
-                    MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
+        case HELLO:
+            return (event.pressed ?
+                    MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
                     MACRO_NONE );
     }
-    return 0;
+    return MACRO_NONE;
 }
 
 
@@ -230,7 +233,7 @@ static const prog_macro_t *get_macro(uint8_t id, bool pressed)
 /*
  * user defined action function
  */
-void keymap_call_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
     keyevent_t event = record->event;
     uint8_t tap_count = record->tap_count;
@@ -303,9 +306,6 @@ void keymap_call_function(keyrecord_t *record, uint8_t id, uint8_t opt)
                 }
             }
             break;
-        case MACRO:
-            action_macro_play(get_macro(opt, event.pressed));
-            break;
     }
 }
 
@@ -314,7 +314,7 @@ void keymap_call_function(keyrecord_t *record, uint8_t id, uint8_t opt)
 /* translates key to keycode */
 uint8_t keymap_key_to_keycode(uint8_t layer, key_t key)
 {
-    return pgm_read_byte(&keymaps[(layer)][(key.pos.row)][(key.pos.col)]);
+    return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
 }
 
 /* translates Fn index to action */
@@ -328,18 +328,3 @@ action_t keymap_fn_to_action(uint8_t keycode)
     }
     return action;
 }
-
-/* convert key to action */
-action_t keymap_get_action(uint8_t layer, uint8_t row, uint8_t col)
-{
-    key_t key;
-    key.pos.row = row;
-    key.pos.col = col;
-    uint8_t keycode = keymap_key_to_keycode(layer, key);
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            return keymap_fn_to_action(keycode);
-        default:
-            return keymap_keycode_to_action(keycode);
-    }
-}