|
@@ -58,12 +58,53 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
* `-------------------------------------------'
|
|
|
*/
|
|
|
KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, \
|
|
|
- TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, \
|
|
|
+ TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS, \
|
|
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS, \
|
|
|
TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO, \
|
|
|
TRNS,TRNS, TRNS, TRNS,TRNS),
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ * user defined action function
|
|
|
+ */
|
|
|
+enum function_id {
|
|
|
+ CTRL_SPACE_I,
|
|
|
+};
|
|
|
+
|
|
|
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|
|
+{
|
|
|
+# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
|
|
|
+ static uint8_t ctrl_space_i_prev_ctrl;
|
|
|
+
|
|
|
+ switch (id) {
|
|
|
+
|
|
|
+ case CTRL_SPACE_I:
|
|
|
+ ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
|
|
|
+ if (record->event.pressed) {
|
|
|
+ if (ctrl_space_i_prev_ctrl) {
|
|
|
+ del_mods(ctrl_space_i_prev_ctrl);
|
|
|
+ add_key(KC_PGUP);
|
|
|
+ send_keyboard_report();
|
|
|
+ add_mods(ctrl_space_i_prev_ctrl);
|
|
|
+ } else {
|
|
|
+ add_key(KC_UP);
|
|
|
+ send_keyboard_report();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (ctrl_space_i_prev_ctrl) {
|
|
|
+ del_key(KC_PGUP);
|
|
|
+ send_keyboard_report();
|
|
|
+ } else {
|
|
|
+ del_key(KC_UP);
|
|
|
+ send_keyboard_report();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
* Fn action definition
|
|
|
*/
|
|
@@ -71,5 +112,5 @@ const uint16_t PROGMEM fn_actions[] = {
|
|
|
[0] = ACTION_LAYER_MOMENTARY(1),
|
|
|
[1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
|
|
|
[2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
|
|
|
+ [3] = ACTION_FUNCTION(CTRL_SPACE_I),
|
|
|
};
|
|
|
-
|