diff options
| author | tmk <nobody@nowhere> | 2013-02-25 15:48:34 +0900 |
|---|---|---|
| committer | tmk <nobody@nowhere> | 2013-02-25 16:14:44 +0900 |
| commit | 6778324de2f8cbdf4eeada7b2be05937dc833e9b (patch) | |
| tree | ae877150ec20baa72995163427838ff4067fb1ff | |
| parent | 23c32d304bcc5146a575e547bba80ee8d86a2856 (diff) | |
| download | qmk_firmware-6778324de2f8cbdf4eeada7b2be05937dc833e9b.tar.gz qmk_firmware-6778324de2f8cbdf4eeada7b2be05937dc833e9b.zip | |
Fix keymap MACRO of pc98 adn hhkb
| -rw-r--r-- | converter/pc98_usb/keymap.c | 64 | ||||
| -rw-r--r-- | keyboard/hhkb/keymap.c | 37 |
2 files changed, 78 insertions, 23 deletions
diff --git a/converter/pc98_usb/keymap.c b/converter/pc98_usb/keymap.c index 6bc549b05..f793539df 100644 --- a/converter/pc98_usb/keymap.c +++ b/converter/pc98_usb/keymap.c | |||
| @@ -64,10 +64,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 64 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ | 64 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
| 65 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ | 65 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
| 66 | { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ | 66 | { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
| 67 | { KC_NO, KC_NO, KC_##K5A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ | 67 | { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
| 68 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ | 68 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ |
| 69 | { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \ | 69 | { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
| 70 | { KC_##K70, KC_NO, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \ | 70 | { KC_##K70, KC_##K71, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \ |
| 71 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ | 71 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ |
| 72 | } | 72 | } |
| 73 | 73 | ||
| @@ -91,11 +91,11 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 91 | `-----------------------------------------------' | 91 | `-----------------------------------------------' |
| 92 | */ | 92 | */ |
| 93 | KEYMAP( | 93 | KEYMAP( |
| 94 | CANCEL,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, | 94 | CANCEL,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, FN6, |
| 95 | ESC, 1, 2, 3, 4, 5, NO, NO, 6, 7, 8, 9, 0, BSPC, | 95 | ESC, 1, 2, 3, 4, 5, FN4, FN5, 6, 7, 8, 9, 0, BSPC, |
| 96 | TAB, Q, W, E, R, T, UP, Y, U, I, O, P, ENT, | 96 | TAB, Q, W, E, R, T, UP, Y, U, I, O, P, ENT, |
| 97 | LCTL, A, S, D, F, G, MINS, EQL, H, J, K, L, FN2, | 97 | LCTL, A, S, D, F, G, MINS, EQL, H, J, K, L, FN2, |
| 98 | LSFT, Z, X, C, V, B, INS, DOWN, DEL, N, M,COMM, DOT, FN1, | 98 | LSFT, Z, X, C, V, B, GRV, BSLS, QUOT, N, M,COMM, DOT, FN1, |
| 99 | LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT | 99 | LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT |
| 100 | ), | 100 | ), |
| 101 | KEYMAP( | 101 | KEYMAP( |
| @@ -115,18 +115,70 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 115 | LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT | 115 | LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT |
| 116 | ), | 116 | ), |
| 117 | }; | 117 | }; |
| 118 | |||
| 119 | static const uint8_t PROGMEM overlays[][MATRIX_ROWS][MATRIX_COLS] = {}; | 118 | static const uint8_t PROGMEM overlays[][MATRIX_ROWS][MATRIX_COLS] = {}; |
| 120 | 119 | ||
| 120 | /* | ||
| 121 | * Macro definition | ||
| 122 | */ | ||
| 123 | enum macro_id { | ||
| 124 | LBRACKET, | ||
| 125 | RBRACKET, | ||
| 126 | DUMMY, | ||
| 127 | }; | ||
| 128 | |||
| 129 | const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
| 130 | { | ||
| 131 | keyevent_t event = record->event; | ||
| 132 | //uint8_t tap_count = record->tap_count; | ||
| 133 | |||
| 134 | switch (id) { | ||
| 135 | case LBRACKET: | ||
| 136 | return (event.pressed ? | ||
| 137 | MACRO( T(LBRC), END ) : | ||
| 138 | MACRO( T(LBRC), END ) ); | ||
| 139 | case RBRACKET: | ||
| 140 | return (event.pressed ? | ||
| 141 | MACRO( T(RBRC), END ) : | ||
| 142 | MACRO( T(RBRC), END ) ); | ||
| 143 | } | ||
| 144 | return MACRO_NONE; | ||
| 145 | } | ||
| 146 | |||
| 147 | /* | ||
| 148 | * Action function | ||
| 149 | */ | ||
| 150 | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
| 151 | { | ||
| 152 | /* | ||
| 153 | keyevent_t event = record->event; | ||
| 154 | uint8_t tap_count = record->tap_count; | ||
| 155 | switch (id) { | ||
| 156 | case 0xFF: | ||
| 157 | action_macro_play(get_macro(opt, event.pressed)); | ||
| 158 | break; | ||
| 159 | } | ||
| 160 | */ | ||
| 161 | } | ||
| 162 | |||
| 163 | |||
| 164 | /* | ||
| 165 | * Fn actions | ||
| 166 | */ | ||
| 121 | static const uint16_t PROGMEM fn_actions[] = { | 167 | static const uint16_t PROGMEM fn_actions[] = { |
| 122 | ACTION_KEYMAP_TAP_TOGGLE(0), // FN0 | 168 | ACTION_KEYMAP_TAP_TOGGLE(0), // FN0 |
| 123 | ACTION_KEYMAP_TAP_KEY(1, KC_SLASH), // FN1 | 169 | ACTION_KEYMAP_TAP_KEY(1, KC_SLASH), // FN1 |
| 124 | ACTION_KEYMAP_TAP_KEY(2, KC_SCLN), // FN2 | 170 | ACTION_KEYMAP_TAP_KEY(2, KC_SCLN), // FN2 |
| 125 | ACTION_KEYMAP(2), // FN3 | 171 | ACTION_KEYMAP(2), // FN3 |
| 172 | ACTION_MACRO(LBRACKET), // FN4 | ||
| 173 | ACTION_MACRO(RBRACKET), // FN5 | ||
| 174 | ACTION_MACRO(DUMMY), // FN6 | ||
| 126 | }; | 175 | }; |
| 127 | 176 | ||
| 128 | 177 | ||
| 129 | 178 | ||
| 179 | |||
| 180 | |||
| 181 | |||
| 130 | /* | 182 | /* |
| 131 | * No need to edit. | 183 | * No need to edit. |
| 132 | */ | 184 | */ |
diff --git a/keyboard/hhkb/keymap.c b/keyboard/hhkb/keymap.c index 1fb65873d..d4e009ede 100644 --- a/keyboard/hhkb/keymap.c +++ b/keyboard/hhkb/keymap.c | |||
| @@ -65,9 +65,9 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 65 | */ | 65 | */ |
| 66 | KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ | 66 | KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ |
| 67 | TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ | 67 | TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ |
| 68 | FN6, A, S, D, F, G, H, J, K, L, FN3, QUOT,FN7, \ | 68 | LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN7, \ |
| 69 | FN8, Z, X, C, V, B, N, M, COMM,DOT, FN2, FN12,FN9, \ | 69 | LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, FN12,FN9, \ |
| 70 | LGUI,LALT, FN5, FN13,FN4), | 70 | LGUI,LALT, FN5, FN14,FN4), |
| 71 | 71 | ||
| 72 | /* Layer 1: HHKB mode (HHKB Fn) | 72 | /* Layer 1: HHKB mode (HHKB Fn) |
| 73 | * ,-----------------------------------------------------------. | 73 | * ,-----------------------------------------------------------. |
| @@ -173,7 +173,11 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 173 | enum function_id { | 173 | enum function_id { |
| 174 | LSHIFT_LPAREN, | 174 | LSHIFT_LPAREN, |
| 175 | RSHIFT_RPAREN, | 175 | RSHIFT_RPAREN, |
| 176 | MACRO = 0xff | 176 | }; |
| 177 | |||
| 178 | enum macro_id { | ||
| 179 | SHIFT_D, | ||
| 180 | HELLO, | ||
| 177 | }; | 181 | }; |
| 178 | 182 | ||
| 179 | 183 | ||
| @@ -198,28 +202,30 @@ static const uint16_t PROGMEM fn_actions[] = { | |||
| 198 | [9] = ACTION_KEYMAP_TAP_TOGGLE(1), // FN9 | 202 | [9] = ACTION_KEYMAP_TAP_TOGGLE(1), // FN9 |
| 199 | [11] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // FN11 Function: LShift with tap '(' | 203 | [11] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // FN11 Function: LShift with tap '(' |
| 200 | [12] = ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // FN12 Function: RShift with tap ')' | 204 | [12] = ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // FN12 Function: RShift with tap ')' |
| 201 | [13] = ACTION_FUNCTION(MACRO, 1), // FN13 Macro: | 205 | [13] = ACTION_MACRO(SHIFT_D), |
| 206 | [14] = ACTION_MACRO(HELLO), | ||
| 202 | }; | 207 | }; |
| 203 | 208 | ||
| 204 | 209 | ||
| 205 | /* | 210 | /* |
| 206 | * Macro definition | 211 | * Macro definition |
| 207 | */ | 212 | */ |
| 208 | #define MACRO(...) ({ static prog_macro_t _m[] PROGMEM = { __VA_ARGS__ }; _m; }) | 213 | const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) |
| 209 | #define MACRO_NONE 0 | ||
| 210 | static const prog_macro_t *get_macro(uint8_t id, bool pressed) | ||
| 211 | { | 214 | { |
| 215 | keyevent_t event = record->event; | ||
| 216 | //uint8_t tap_count = record->tap_count; | ||
| 217 | |||
| 212 | switch (id) { | 218 | switch (id) { |
| 213 | case 0: | 219 | case SHIFT_D: |
| 214 | return (pressed ? | 220 | return (event.pressed ? |
| 215 | MACRO( MD(LSHIFT), D(D), END ) : | 221 | MACRO( MD(LSHIFT), D(D), END ) : |
| 216 | MACRO( U(D), MU(LSHIFT), END ) ); | 222 | MACRO( U(D), MU(LSHIFT), END ) ); |
| 217 | case 1: | 223 | case HELLO: |
| 218 | return (pressed ? | 224 | return (event.pressed ? |
| 219 | MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ) : | 225 | MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : |
| 220 | MACRO_NONE ); | 226 | MACRO_NONE ); |
| 221 | } | 227 | } |
| 222 | return 0; | 228 | return MACRO_NONE; |
| 223 | } | 229 | } |
| 224 | 230 | ||
| 225 | 231 | ||
| @@ -300,9 +306,6 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 300 | } | 306 | } |
| 301 | } | 307 | } |
| 302 | break; | 308 | break; |
| 303 | case MACRO: | ||
| 304 | action_macro_play(get_macro(opt, event.pressed)); | ||
| 305 | break; | ||
| 306 | } | 309 | } |
| 307 | } | 310 | } |
| 308 | 311 | ||
