Преглед изворни кода

Add keymap clear/reset action

tags/v1.9
tmk пре 11 година
родитељ
комит
c3d57b69e0
3 измењених фајлова са 44 додато и 17 уклоњено
  1. 29
    5
      common/action.c
  2. 13
    10
      common/action.h
  3. 2
    2
      common/keymap.c

+ 29
- 5
common/action.c Прегледај датотеку



case ACT_KEYMAP: case ACT_KEYMAP:
switch (action.layer.code) { switch (action.layer.code) {
/* Keymap Reset */
/* Keymap clear */
case OP_RESET: case OP_RESET:
default_layer_set(action.layer.val);
switch (action.layer.val & 0x03) {
case 0:
overlay_clear();
keymap_clear();
break;
case ON_PRESS:
if (event.pressed) {
overlay_clear();
keymap_clear();
}
break;
case ON_RELEASE:
if (!event.pressed) {
overlay_clear();
keymap_clear();
}
break;
case ON_BOTH:
overlay_clear();
keymap_clear();
break;
}
break; break;
/* Keymap Reset default layer */ /* Keymap Reset default layer */
case (OP_RESET | ON_PRESS): case (OP_RESET | ON_PRESS):
if (event.pressed) { if (event.pressed) {
default_layer_set(action.layer.val);
overlay_clear(); overlay_clear();
keymap_clear();
default_layer_set(action.layer.val);
} }
break; break;
case (OP_RESET | ON_RELEASE): case (OP_RESET | ON_RELEASE):
if (!event.pressed) { if (!event.pressed) {
default_layer_set(action.layer.val);
overlay_clear(); overlay_clear();
keymap_clear();
default_layer_set(action.layer.val);
} }
break; break;
case (OP_RESET | ON_BOTH): case (OP_RESET | ON_BOTH):
default_layer_set(action.layer.val);
overlay_clear(); overlay_clear();
keymap_clear();
default_layer_set(action.layer.val);
break; break;


/* Keymap Bit invert */ /* Keymap Bit invert */

+ 13
- 10
common/action.h Прегледај датотеку

* Layer Actions * Layer Actions
* ------------- * -------------
* ACT_KEYMAP: * ACT_KEYMAP:
* 1000|LLLL|0000 0000 Reset default layer
* 1000|LLLL|0000 00xx Reset default layer and clear overlay
* 1000|--xx|0000 0000 Clear keyamp and overlay
* 1000|LLLL|0000 00xx Reset default layer and clear keymap and overlay
* 1000|LLLL| keycode Invert with tap key * 1000|LLLL| keycode Invert with tap key
* 1000|LLLL|1111 0000 Invert with tap toggle * 1000|LLLL|1111 0000 Invert with tap toggle
* 1000|LLLL|1111 00xx Invert[^= L] * 1000|LLLL|1111 00xx Invert[^= L]
OP_SET = 0xFC, OP_SET = 0xFC,
}; };


/*
/*
* Default Layer * Default Layer
*/ */
#define ACTION_KEYMAP(layer) ACTION_KEYMAP_MOMENTARY(layer)
#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_INV_B(layer)
#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV_R(layer)
/* Set default layer */
#define ACTION_DEFAULT_LAYER ACTION(ACT_KEYMAP, 0<<8 | OP_RESET | 0)
#define ACTION_SET_DEFAULT_LAYER(layer) ACTION_KEYMAP_RESET(layer) #define ACTION_SET_DEFAULT_LAYER(layer) ACTION_KEYMAP_RESET(layer)
#define ACTION_SET_DEFAULT_LAYER_P(layer) ACTION_KEYMAP_RESET_P(layer) #define ACTION_SET_DEFAULT_LAYER_P(layer) ACTION_KEYMAP_RESET_P(layer)
#define ACTION_SET_DEFAULT_LAYER_R(layer) ACTION_KEYMAP_RESET_R(layer) #define ACTION_SET_DEFAULT_LAYER_R(layer) ACTION_KEYMAP_RESET_R(layer)
#define ACTION_SET_DEFAULT_LAYER_B(layer) ACTION_KEYMAP_RESET_B(layer) #define ACTION_SET_DEFAULT_LAYER_B(layer) ACTION_KEYMAP_RESET_B(layer)
/*
* Keymap Layer
*/
#define ACTION_KEYMAP(layer) ACTION_KEYMAP_MOMENTARY(layer)
#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_ON_OFF(layer)
#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV_R(layer)
/* Keymap Set and clear overaly */ /* Keymap Set and clear overaly */
#define ACTION_KEYMAP_RESET(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | 0)
#define ACTION_KEYMAP_RESET(layer) ACTION_KEYMAP_RESET_R(layer)
#define ACTION_KEYMAP_RESET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS) #define ACTION_KEYMAP_RESET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
#define ACTION_KEYMAP_RESET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
#define ACTION_KEYMAP_RESET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
#define ACTION_KEYMAP_RESET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_RELEASE)
#define ACTION_KEYMAP_RESET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_BOTH)
/* Keymap Invert */ /* Keymap Invert */
#define ACTION_KEYMAP_INV(layer) ACTION_KEYMAP_INV_B(layer) #define ACTION_KEYMAP_INV(layer) ACTION_KEYMAP_INV_B(layer)
#define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0) #define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0)

+ 2
- 2
common/keymap.c Прегледај датотеку

} }


__attribute__ ((weak)) __attribute__ ((weak))
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
} }
#else #else
} }
} }
/* not used for legacy keymap */ /* not used for legacy keymap */
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
} }
#endif #endif

Loading…
Откажи
Сачувај