aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2013-03-05 02:42:28 +0900
committertmk <nobody@nowhere>2013-03-05 02:42:28 +0900
commit1aa067e5414873559f59e310f38bb43e8803a45f (patch)
tree7dcf57fd127ae32e1828a6e28a60dbcc5220c56c /common
parent083c75816fbad6bcbbc268eb77e5011d2d16656b (diff)
downloadqmk_firmware-1aa067e5414873559f59e310f38bb43e8803a45f.tar.gz
qmk_firmware-1aa067e5414873559f59e310f38bb43e8803a45f.zip
Clean action.h and add keymap doc
Diffstat (limited to 'common')
-rw-r--r--common/action.c6
-rw-r--r--common/action.h68
2 files changed, 20 insertions, 54 deletions
diff --git a/common/action.c b/common/action.c
index 7ca481fba..15e125a3e 100644
--- a/common/action.c
+++ b/common/action.c
@@ -360,6 +360,7 @@ static void process_action(keyrecord_t *record)
360 case OP_RESET: 360 case OP_RESET:
361 switch (action.layer.val & 0x03) { 361 switch (action.layer.val & 0x03) {
362 case 0: 362 case 0:
363 // NOTE: reserved
363 overlay_clear(); 364 overlay_clear();
364 keymap_clear(); 365 keymap_clear();
365 break; 366 break;
@@ -379,6 +380,7 @@ static void process_action(keyrecord_t *record)
379 overlay_clear(); 380 overlay_clear();
380 keymap_clear(); 381 keymap_clear();
381 break; 382 break;
383 /* NOTE: 4-7 rserved */
382 } 384 }
383 break; 385 break;
384 /* Keymap Reset default layer */ 386 /* Keymap Reset default layer */
@@ -519,6 +521,7 @@ static void process_action(keyrecord_t *record)
519 // Overlay Invert bit4 521 // Overlay Invert bit4
520 case OP_INV4 | 0: 522 case OP_INV4 | 0:
521 if (action.layer.val == 0) { 523 if (action.layer.val == 0) {
524 // NOTE: reserved for future use
522 overlay_clear(); 525 overlay_clear();
523 } else { 526 } else {
524 overlay_set(overlay_stat ^ action.layer.val); 527 overlay_set(overlay_stat ^ action.layer.val);
@@ -526,6 +529,7 @@ static void process_action(keyrecord_t *record)
526 break; 529 break;
527 case OP_INV4 | 1: 530 case OP_INV4 | 1:
528 if (action.layer.val == 0) { 531 if (action.layer.val == 0) {
532 // on pressed
529 if (event.pressed) overlay_clear(); 533 if (event.pressed) overlay_clear();
530 } else { 534 } else {
531 overlay_set(overlay_stat ^ action.layer.val<<4); 535 overlay_set(overlay_stat ^ action.layer.val<<4);
@@ -533,6 +537,7 @@ static void process_action(keyrecord_t *record)
533 break; 537 break;
534 case OP_INV4 | 2: 538 case OP_INV4 | 2:
535 if (action.layer.val == 0) { 539 if (action.layer.val == 0) {
540 // on released
536 if (!event.pressed) overlay_clear(); 541 if (!event.pressed) overlay_clear();
537 } else { 542 } else {
538 overlay_set(overlay_stat ^ action.layer.val<<8); 543 overlay_set(overlay_stat ^ action.layer.val<<8);
@@ -540,6 +545,7 @@ static void process_action(keyrecord_t *record)
540 break; 545 break;
541 case OP_INV4 | 3: 546 case OP_INV4 | 3:
542 if (action.layer.val == 0) { 547 if (action.layer.val == 0) {
548 // on both
543 overlay_clear(); 549 overlay_clear();
544 } else { 550 } else {
545 overlay_set(overlay_stat ^ action.layer.val<<12); 551 overlay_set(overlay_stat ^ action.layer.val<<12);
diff --git a/common/action.h b/common/action.h
index a8c56a613..ead917983 100644
--- a/common/action.h
+++ b/common/action.h
@@ -298,90 +298,50 @@ enum layer_params {
298/* 298/*
299 * Default Layer 299 * Default Layer
300 */ 300 */
301#define ACTION_DEFAULT_LAYER ACTION(ACT_KEYMAP, 0<<8 | OP_RESET | 0) 301#define ACTION_DEFAULT_LAYER ACTION(ACT_KEYMAP, ON_RELEASE<<8 | OP_RESET | 0)
302#define ACTION_DEFAULT_LAYER_SET(layer) ACTION_KEYMAP_RESET(layer) 302#define ACTION_DEFAULT_LAYER_SET(layer) ACTION_DEFAULT_LAYER_TO(layer, ON_RELEASE)
303#define ACTION_DEFAULT_LAYER_SET_P(layer) ACTION_KEYMAP_RESET_P(layer) 303#define ACTION_DEFAULT_LAYER_TO(layer, on) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | (on))
304#define ACTION_DEFAULT_LAYER_SET_R(layer) ACTION_KEYMAP_RESET_R(layer)
305#define ACTION_DEFAULT_LAYER_SET_B(layer) ACTION_KEYMAP_RESET_B(layer)
306#define ACTION_SET_DEFAULT_LAYER(layer) ACTION_KEYMAP_RESET(layer)
307#define ACTION_SET_DEFAULT_LAYER_P(layer) ACTION_KEYMAP_RESET_P(layer)
308#define ACTION_SET_DEFAULT_LAYER_R(layer) ACTION_KEYMAP_RESET_R(layer)
309#define ACTION_SET_DEFAULT_LAYER_B(layer) ACTION_KEYMAP_RESET_B(layer)
310/* 304/*
311 * Keymap Layer 305 * Keymap Layer
312 */ 306 */
313#define ACTION_KEYMAP(layer) ACTION_KEYMAP_MOMENTARY(layer)
314#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_ON_OFF(layer) 307#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_ON_OFF(layer)
315#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV_R(layer) 308#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV(layer, ON_RELEASE)
316/* Keymap Set and clear overaly */
317#define ACTION_KEYMAP_RESET(layer) ACTION_KEYMAP_RESET_R(layer)
318#define ACTION_KEYMAP_RESET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
319#define ACTION_KEYMAP_RESET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_RELEASE)
320#define ACTION_KEYMAP_RESET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_BOTH)
321/* Keymap Invert */ 309/* Keymap Invert */
322#define ACTION_KEYMAP_INV(layer) ACTION_KEYMAP_INV_B(layer) 310#define ACTION_KEYMAP_INV(layer, on) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | (on))
323#define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0) 311#define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0)
324#define ACTION_KEYMAP_INV_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | ON_PRESS)
325#define ACTION_KEYMAP_INV_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | ON_RELEASE)
326#define ACTION_KEYMAP_INV_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | ON_BOTH)
327/* Keymap On */ 312/* Keymap On */
328#define ACTION_KEYMAP_ON(layer) ACTION_KEYMAP_ON_OFF(layer) 313#define ACTION_KEYMAP_ON(layer, on) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | (on))
329#define ACTION_KEYMAP_ON_OFF(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | 0) 314#define ACTION_KEYMAP_ON_OFF(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | 0)
330#define ACTION_KEYMAP_ON_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | ON_PRESS)
331#define ACTION_KEYMAP_ON_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | ON_RELEASE)
332#define ACTION_KEYMAP_ON_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON | ON_BOTH)
333/* Keymap Off */ 315/* Keymap Off */
334#define ACTION_KEYMAP_OFF(layer) ACTION_KEYMAP_OFF_ON(layer) 316#define ACTION_KEYMAP_OFF(layer, on) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | (on))
335#define ACTION_KEYMAP_OFF_ON(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | 0) 317#define ACTION_KEYMAP_OFF_ON(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | 0)
336#define ACTION_KEYMAP_OFF_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | ON_PRESS)
337#define ACTION_KEYMAP_OFF_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | ON_RELEASE)
338#define ACTION_KEYMAP_OFF_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | ON_BOTH)
339/* Keymap Set */ 318/* Keymap Set */
340#define ACTION_KEYMAP_SET(layer) ACTION_KEYMAP_SET_CLEAR(layer) 319#define ACTION_KEYMAP_SET(layer, on) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | (on))
341#define ACTION_KEYMAP_SET_CLEAR(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | 0) 320#define ACTION_KEYMAP_SET_CLEAR(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | 0)
342#define ACTION_KEYMAP_SET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | ON_PRESS)
343#define ACTION_KEYMAP_SET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | ON_RELEASE)
344#define ACTION_KEYMAP_SET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | ON_BOTH)
345/* Keymap Invert with tap key */ 321/* Keymap Invert with tap key */
346#define ACTION_KEYMAP_TAP_KEY(layer, key) ACTION(ACT_KEYMAP, (layer)<<8 | (key)) 322#define ACTION_KEYMAP_TAP_KEY(layer, key) ACTION(ACT_KEYMAP, (layer)<<8 | (key))
347 323
348/* 324/*
349 * Overlay Layer 325 * Overlay Layer
350 */ 326 */
351#define ACTION_OVERLAY(layer) ACTION_OVERLAY_MOMENTARY(layer)
352#define ACTION_OVERLAY_MOMENTARY(layer) ACTION_OVERLAY_ON_OFF(layer) 327#define ACTION_OVERLAY_MOMENTARY(layer) ACTION_OVERLAY_ON_OFF(layer)
353#define ACTION_OVERLAY_TOGGLE(layer) ACTION_OVERLAY_INV_R(layer) 328#define ACTION_OVERLAY_TOGGLE(layer) ACTION_OVERLAY_INV(layer, ON_RELEASE)
354/* Overlay Clear */ 329/* Overlay Clear */
355#define ACTION_OVERLAY_CLEAR ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | 0) 330#define ACTION_OVERLAY_CLEAR(on) ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | (on))
356#define ACTION_OVERLAY_CLEAR_P ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | ON_PRESS)
357#define ACTION_OVERLAY_CLEAR_R ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | ON_RELEASE)
358#define ACTION_OVERLAY_CLEAR_B ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | ON_BOTH)
359/* Overlay Invert 4-bit chunk */ 331/* Overlay Invert 4-bit chunk */
360#define ACTION_OVERLAY_INV4(bits, shift) ACTION(ACT_OVERLAY, (bits)<<8 | OP_INV4 | shift) 332#define ACTION_OVERLAY_INV4(bits, shift) ACTION(ACT_OVERLAY, (bits)<<8 | OP_INV4 | shift)
361/* Overlay Invert */ 333/* Overlay Invert */
362#define ACTION_OVERLAY_INV(layer) ACTION_OVERLAY_INV_B(layer) 334#define ACTION_OVERLAY_INV(layer, on) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | (on))
363#define ACTION_OVERLAY_TAP_TOGGLE(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | 0) 335#define ACTION_OVERLAY_TAP_TOGGLE(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | 0)
364#define ACTION_OVERLAY_INV_P(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | ON_PRESS)
365#define ACTION_OVERLAY_INV_R(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | ON_RELEASE)
366#define ACTION_OVERLAY_INV_B(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | ON_BOTH)
367/* Overlay On */ 336/* Overlay On */
368#define ACTION_OVERLAY_ON(layer) ACTION_OVERLAY_ON_OFF(layer) 337#define ACTION_OVERLAY_ON(layer, on) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | (on))
369#define ACTION_OVERLAY_ON_OFF(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | 0) 338#define ACTION_OVERLAY_ON_OFF(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | 0)
370#define ACTION_OVERLAY_ON_P(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | ON_PRESS)
371#define ACTION_OVERLAY_ON_R(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | ON_RELEASE)
372#define ACTION_OVERLAY_ON_B(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON | ON_BOTH)
373/* Overlay Off */ 339/* Overlay Off */
374#define ACTION_OVERLAY_OFF(layer) ACTION_OVERLAY_OFF_ON(layer) 340#define ACTION_OVERLAY_OFF(layer, on) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | (on))
375#define ACTION_OVERLAY_OFF_ON(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | 0) 341#define ACTION_OVERLAY_OFF_ON(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | 0)
376#define ACTION_OVERLAY_OFF_P(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | ON_PRESS)
377#define ACTION_OVERLAY_OFF_R(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | ON_RELEASE)
378#define ACTION_OVERLAY_OFF_B(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | ON_BOTH)
379/* Overlay Set */ 342/* Overlay Set */
380#define ACTION_OVERLAY_SET(layer) ACTION_OVERLAY_SET_CLEAR(layer) 343#define ACTION_OVERLAY_SET(layer, on) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | (on))
381#define ACTION_OVERLAY_SET_CLEAR(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | 0) 344#define ACTION_OVERLAY_SET_CLEAR(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | 0)
382#define ACTION_OVERLAY_SET_P(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | ON_PRESS)
383#define ACTION_OVERLAY_SET_R(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | ON_RELEASE)
384#define ACTION_OVERLAY_SET_B(layer) ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | ON_BOTH)
385/* Overlay Invert with tap key */ 345/* Overlay Invert with tap key */
386#define ACTION_OVERLAY_TAP_KEY(layer, key) ACTION(ACT_OVERLAY, (layer)<<8 | (key)) 346#define ACTION_OVERLAY_TAP_KEY(layer, key) ACTION(ACT_OVERLAY, (layer)<<8 | (key))
387 347