Keycode refactor

This commit is contained in:
Wilba6582
2016-12-29 18:28:48 +11:00
parent 223cffd92f
commit d8a608f3ff
4 changed files with 331 additions and 314 deletions

View File

File diff suppressed because it is too large Load Diff

View File

@@ -48,12 +48,10 @@ action_t action_for_key(uint8_t layer, keypos_t key)
action_t action;
uint8_t action_layer, when, mod;
// The arm-none-eabi compiler generates out of bounds warnings when using the fn_actions directly for some reason
const uint16_t* actions = fn_actions;
switch (keycode) {
case KC_FN0 ... KC_FN31:
action.code = pgm_read_word(&actions[FN_INDEX(keycode)]);
action.code = keymap_function_id_to_action(FN_INDEX(keycode));
break;
case KC_A ... KC_EXSEL:
case KC_LCTRL ... KC_RGUI:
@@ -79,7 +77,7 @@ action_t action_for_key(uint8_t layer, keypos_t key)
case QK_FUNCTION ... QK_FUNCTION_MAX: ;
// Is a shortcut for function action_layer, pull last 12bits
// This means we have 4,096 FN macros at our disposal
action.code = pgm_read_word(&actions[(int)keycode & 0xFFF]);
action.code = keymap_function_id_to_action( (int)keycode & 0xFFF );
break;
case QK_MACRO ... QK_MACRO_MAX:
action.code = ACTION_MACRO(keycode & 0xFF);
@@ -163,9 +161,17 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
}
/* translates key to keycode */
// translates key to keycode
__attribute__ ((weak))
uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
// Read entire word (16bits)
return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
}
// translates function id to action
__attribute__ ((weak))
uint16_t keymap_function_id_to_action( uint16_t function_id )
{
return pgm_read_word(&fn_actions[function_id]);
}

313
quantum/quantum_keycodes.h Normal file
View File

File diff suppressed because it is too large Load Diff

View File

@@ -85,7 +85,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_LCAP KC_LOCKING_CAPS
#define KC_LNUM KC_LOCKING_NUM
#define KC_LSCR KC_LOCKING_SCROLL
#define KC_ERAS KC_ALT_ERASE,
#define KC_ERAS KC_ALT_ERASE
#define KC_CLR KC_CLEAR
/* Japanese specific */
#define KC_ZKHK KC_GRAVE