]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - keyboard/hhkb/keymap.c
Merge remote-tracking branch 'tmk/master' into cub_layout
[max/tmk_keyboard.git] / keyboard / hhkb / keymap.c
index 265fb87290a4e3a441a2c5d6a23c886b5ca01b6b..f2c6caf48026b9b082349b5eb8955d34eb2f2a28 100644 (file)
@@ -48,8 +48,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_NO    } \
 }
 
-
-static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+static const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
     /* Layer 0: Default Layer
      * ,-----------------------------------------------------------.
      * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
@@ -67,7 +70,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
            TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
            LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN4, \
             FN5,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT,FN1, \
-                LGUI,LALT,          FN6,                RALT,NO),
+                LGUI,LALT,          FN6,                RALT,RGUI),
 
     /* Layer 1: HHKB mode (HHKB Fn)
      * ,-----------------------------------------------------------.
@@ -179,13 +182,18 @@ enum macro_id {
     LSHIFT_PAREN,
     RSHIFT_PAREN,
     HELLO,
+    VOLUP,
 };
 
 
 /*
  * Fn action definition
  */
-static const uint16_t PROGMEM fn_actions[] = {
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+static const uint16_t fn_actions[] PROGMEM = {
+#endif
     [0] = ACTION_DEFAULT_LAYER_SET(0),                // Default layer(not used)
     [1] = ACTION_LAYER_TAP_TOGGLE(1),                 // HHKB layer(toggle with 5 taps)
     [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
@@ -203,6 +211,7 @@ static const uint16_t PROGMEM fn_actions[] = {
 //  [13] = ACTION_MACRO_TAP(LSHIFT_PAREN),             // Macro: LShift with tap '('
 //  [14] = ACTION_MACRO_TAP(RSHIFT_PAREN),             // Macro: RShift with tap ')'
 //  [15] = ACTION_MACRO(HELLO),                        // Macro: say hello
+//  [9] = ACTION_MACRO(VOLUP),                         // Macro: media key
 };
 
 
@@ -218,23 +227,27 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
         case LSHIFT_PAREN:
             if (tap.count > 0 && !tap.interrupted) {
                 return (event.pressed ?
-                        MACRO( MD(LSHIFT), D(9), U(9), MU(LSHIFT), END ) : MACRO_NONE);
+                        MACRO( D(LSHIFT), D(9), U(9), U(LSHIFT), END ) : MACRO_NONE);
             } else {
                 return (event.pressed ?
-                        MACRO( MD(LSHIFT), END ) : MACRO( MU(LSHIFT), END ) );
+                        MACRO( D(LSHIFT), END ) : MACRO( U(LSHIFT), END ) );
             }
         case RSHIFT_PAREN:
             if (tap.count > 0 && !tap.interrupted) {
                 return (event.pressed ?
-                        MACRO( MD(RSHIFT), D(0), U(0), MU(RSHIFT), END ) : MACRO_NONE);
+                        MACRO( D(RSHIFT), D(0), U(0), U(RSHIFT), END ) : MACRO_NONE);
             } else {
                 return (event.pressed ?
-                        MACRO( MD(RSHIFT), END ) : MACRO( MU(RSHIFT), END ) );
+                        MACRO( D(RSHIFT), END ) : MACRO( U(RSHIFT), END ) );
             }
         case HELLO:
             return (event.pressed ?
                     MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
                     MACRO_NONE );
+        case VOLUP:
+            return (event.pressed ?
+                    MACRO( D(VOLU), U(VOLU), END ) :
+                    MACRO_NONE );
     }
     return MACRO_NONE;
 }
@@ -304,10 +317,6 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key)
 action_t keymap_fn_to_action(uint8_t keycode)
 {
     action_t action;
-    if (FN_INDEX(keycode) < sizeof(fn_actions) / sizeof(fn_actions[0])) {
-        action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
-    } else {
-        action.code = ACTION_NO;
-    }
+    action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
     return action;
 }