}
-/*
-static const action_t PROGMEM fn_actions[] = {
- ACTION_LAYER_TO_DEFAULT_ON_RELEASED, // Fn0
- ACTION_LAYER_SET_ON_PRESSED(1), // Fn1
- ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH), // Fn2
- ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN), // Fn3
- ACTION_LAYER_SET_ON_PRESSED(3), // Fn4
- ACTION_LAYER_SET_TAP_KEY(5, KC_SPC), // Fn5
- ACTION_NO, // Fn6
- ACTION_NO, // Fn7
-};
-*/
static const uint16_t PROGMEM fn_actions[] = {
ACTION_LAYER_TO_DEFAULT_ON_RELEASED, // Fn0
ACTION_LAYER_SET_ON_PRESSED(1), // Fn1
ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH), // Fn2
ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN), // Fn3
- ACTION_LAYER_SET_ON_PRESSED(3), // Fn4
+ //ACTION_LAYER_SET_ON_PRESSED(3), // Fn4
+ ACTION_FUNCTION(0x01, 0xA), // Fn4
ACTION_LAYER_SET_TAP_KEY(5, KC_SPC), // Fn5
- ACTION_NO, // Fn6
- ACTION_NO, // Fn7
+ ACTION_LMODS_TAP(MOD_BIT(KC_LCTL), KC_BSPC), // Fn6
+ ACTION_RMODS_TAP(MOD_BIT(KC_RCTL), KC_ENT), // Fn7
+
+ ACTION_LMODS_TAP(MOD_BIT(KC_LSFT), ONE_SHOT), // Fn8
+ ACTION_LAYER_SET_ON_RELEASED_TAP_TOGGLE(1), // Fn9
+ ACTION_LAYER_BIT_TAP_TOGGLE(1), // Fn10
};
*/
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, \
- LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,ENT, \
- LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \
+ FN6, A, S, D, F, G, H, J, K, L, FN3, QUOT,FN7, \
+ FN8, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN10, \
LGUI,LALT, FN5, RALT,FN4),
/* Layer 1: HHKB mode (HHKB Fn)
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,BRK, 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,FN10, \
LGUI,LALT, SPC, RALT,RGUI),
/* Layer 2: Vi mode (Slash)
case KC_MS_UP ... KC_MS_ACCEL2:
action.code = ACTION_MOUSEKEY(key);
break;
-/*
+/* TODO
case KC_LCTRL ... KC_LGUI:
action.code = ACTION_LMODS(MOD_BIT(key));
break;
action.code = ACTION_RMODS(MOD_BIT(key)>>4);
break;
*/
- case KC_FN0 ... KC_FN7:
- action.code = pgm_read_word(&fn_actions[FN_INDEX(key)]);
+ case KC_FN0 ... FN_MAX:
+ if (FN_INDEX(key) < sizeof(fn_actions) / sizeof(fn_actions[0])) {
+ action.code = pgm_read_word(&fn_actions[FN_INDEX(key)]);
+ } else {
+ action.code = ACTION_NO;
+ }
break;
case KC_NO ... KC_UNDEFINED:
default:
}
return action;
}
+
+// TODO: how to define action function
+void action_call_function(keyevent_t event, uint8_t id)
+{
+ // '(' Shift+9
+ if (event.pressed) {
+ register_code(KC_LSHIFT);
+ register_code(KC_9);
+ debug("action_call_function: pressed: id: "); debug_hex(id); debug("\n");
+ } else {
+ unregister_code(KC_9);
+ unregister_code(KC_LSHIFT);
+ debug("action_call_function: released: id: "); debug_hex(id); debug("\n");
+ }
+}