diff options
| author | tmk <nobody@nowhere> | 2013-02-13 11:20:47 +0900 |
|---|---|---|
| committer | tmk <nobody@nowhere> | 2013-02-13 11:20:47 +0900 |
| commit | 63c03dc137afe6600156a060b592662feaad0cdc (patch) | |
| tree | c69cb8e797ac407028426a96dfebd56cf29211e3 /keyboard/gh60/keymap.c | |
| parent | 48e6d0848cdeac26ffab101ea2ef48e5ac60acd3 (diff) | |
| download | qmk_firmware-63c03dc137afe6600156a060b592662feaad0cdc.tar.gz qmk_firmware-63c03dc137afe6600156a060b592662feaad0cdc.zip | |
Change keymap API
Diffstat (limited to 'keyboard/gh60/keymap.c')
| -rw-r--r-- | keyboard/gh60/keymap.c | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/keyboard/gh60/keymap.c b/keyboard/gh60/keymap.c index 39bb474c4..d2da50529 100644 --- a/keyboard/gh60/keymap.c +++ b/keyboard/gh60/keymap.c | |||
| @@ -162,43 +162,35 @@ static const uint16_t PROGMEM fn_actions[] = { | |||
| 162 | 162 | ||
| 163 | 163 | ||
| 164 | 164 | ||
| 165 | /* convert keycode to action */ | 165 | /* translates key to keycode */ |
| 166 | action_t keymap_get_action(uint8_t layer, uint8_t row, uint8_t col) { | 166 | uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) |
| 167 | uint8_t key = (pgm_read_byte(&keymaps[(layer)][(row)][(col)])); | 167 | { |
| 168 | return pgm_read_byte(&keymaps[(layer)][(key.pos.row)][(key.pos.col)]); | ||
| 169 | } | ||
| 168 | 170 | ||
| 171 | /* translates Fn index to action */ | ||
| 172 | action_t keymap_fn_to_action(uint8_t keycode) | ||
| 173 | { | ||
| 169 | action_t action; | 174 | action_t action; |
| 170 | switch (key) { | 175 | if (FN_INDEX(keycode) < sizeof(fn_actions) / sizeof(fn_actions[0])) { |
| 171 | case KC_A ... KC_EXSEL: | 176 | action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); |
| 172 | action.code = ACTION_KEY(key); | 177 | } else { |
| 173 | break; | 178 | action.code = ACTION_NO; |
| 174 | case KC_LCTRL ... KC_LGUI: | 179 | } |
| 175 | action.code = ACTION_LMOD(key); | 180 | return action; |
| 176 | break; | 181 | } |
| 177 | case KC_RCTRL ... KC_RGUI: | 182 | |
| 178 | action.code = ACTION_RMOD(key); | 183 | /* convert key to action */ |
| 179 | break; | 184 | action_t keymap_get_action(uint8_t layer, uint8_t row, uint8_t col) |
| 180 | case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: | 185 | { |
| 181 | action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(key)); | 186 | key_t key; |
| 182 | break; | 187 | key.pos.row = row; |
| 183 | case KC_AUDIO_MUTE ... KC_WWW_FAVORITES: | 188 | key.pos.col = col; |
| 184 | action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(key)); | 189 | uint8_t keycode = keymap_key_to_keycode(layer, key); |
| 185 | break; | 190 | switch (keycode) { |
| 186 | case KC_MS_UP ... KC_MS_ACCEL2: | ||
| 187 | action.code = ACTION_MOUSEKEY(key); | ||
| 188 | break; | ||
| 189 | case KC_FN0 ... KC_FN31: | 191 | case KC_FN0 ... KC_FN31: |
| 190 | if (FN_INDEX(key) < sizeof(fn_actions) / sizeof(fn_actions[0])) { | 192 | return keymap_fn_to_action(keycode); |
| 191 | action.code = pgm_read_word(&fn_actions[FN_INDEX(key)]); | ||
| 192 | } else { | ||
| 193 | action.code = ACTION_NO; | ||
| 194 | } | ||
| 195 | break; | ||
| 196 | case KC_TRNS: | ||
| 197 | action.code = ACTION_TRANSPARENT; | ||
| 198 | break; | ||
| 199 | default: | 193 | default: |
| 200 | action.code = ACTION_NO; | 194 | return keymap_keycode_to_action(keycode); |
| 201 | break; | ||
| 202 | } | 195 | } |
| 203 | return action; | ||
| 204 | } | 196 | } |
