diff options
| -rw-r--r-- | common/action.c | 213 | ||||
| -rw-r--r-- | common/action.h | 190 | ||||
| -rw-r--r-- | keyboard/hhkb/keymap.c | 77 |
3 files changed, 199 insertions, 281 deletions
diff --git a/common/action.c b/common/action.c index 301a9b6a0..f6e50032e 100644 --- a/common/action.c +++ b/common/action.c | |||
| @@ -319,14 +319,14 @@ static void process_action(keyrecord_t *record) | |||
| 319 | case ACT_USAGE: | 319 | case ACT_USAGE: |
| 320 | #ifdef EXTRAKEY_ENABLE | 320 | #ifdef EXTRAKEY_ENABLE |
| 321 | switch (action.usage.page) { | 321 | switch (action.usage.page) { |
| 322 | case ACTION_USAGE_PAGE_SYSTEM: | 322 | case PAGE_SYSTEM: |
| 323 | if (event.pressed) { | 323 | if (event.pressed) { |
| 324 | host_system_send(action.usage.code); | 324 | host_system_send(action.usage.code); |
| 325 | } else { | 325 | } else { |
| 326 | host_system_send(0); | 326 | host_system_send(0); |
| 327 | } | 327 | } |
| 328 | break; | 328 | break; |
| 329 | case ACTION_USAGE_PAGE_CONSUMER: | 329 | case PAGE_CONSUMER: |
| 330 | if (event.pressed) { | 330 | if (event.pressed) { |
| 331 | host_consumer_send(action.usage.code); | 331 | host_consumer_send(action.usage.code); |
| 332 | } else { | 332 | } else { |
| @@ -351,20 +351,44 @@ static void process_action(keyrecord_t *record) | |||
| 351 | break; | 351 | break; |
| 352 | 352 | ||
| 353 | /* Layer key */ | 353 | /* Layer key */ |
| 354 | case ACT_LAYER_PRESSED: | 354 | case ACT_LAYER: |
| 355 | // layer action when pressed | ||
| 356 | switch (action.layer.code) { | 355 | switch (action.layer.code) { |
| 357 | case 0x00: | 356 | case LAYER_MOMENTARY: /* momentary */ |
| 358 | if (event.pressed) { | 357 | if (event.pressed) { |
| 359 | layer_switch(action.layer.val); | 358 | layer_switch(action.layer.val); |
| 360 | } | 359 | } |
| 361 | //TODO: this is ok? | ||
| 362 | else { | 360 | else { |
| 363 | layer_switch(default_layer); | 361 | layer_switch(default_layer); |
| 364 | } | 362 | } |
| 365 | break; | 363 | break; |
| 366 | case 0xF0: | 364 | case LAYER_ON_PRESS: |
| 367 | // tap toggle | 365 | if (event.pressed) { |
| 366 | layer_switch(action.layer.val); | ||
| 367 | } | ||
| 368 | break; | ||
| 369 | case LAYER_ON_RELEASE: | ||
| 370 | if (!event.pressed) { | ||
| 371 | layer_switch(action.layer.val); | ||
| 372 | } | ||
| 373 | break; | ||
| 374 | case LAYER_DEFAULT: /* default layer */ | ||
| 375 | switch (action.layer.val) { | ||
| 376 | case DEFAULT_ON_BOTH: | ||
| 377 | layer_switch(default_layer); | ||
| 378 | break; | ||
| 379 | case DEFAULT_ON_PRESS: | ||
| 380 | if (event.pressed) { | ||
| 381 | layer_switch(default_layer); | ||
| 382 | } | ||
| 383 | break; | ||
| 384 | case DEFAULT_ON_RELEASE: | ||
| 385 | if (!event.pressed) { | ||
| 386 | layer_switch(default_layer); | ||
| 387 | } | ||
| 388 | break; | ||
| 389 | } | ||
| 390 | break; | ||
| 391 | case LAYER_TAP_TOGGLE: /* switch on hold and toggle on several taps */ | ||
| 368 | if (event.pressed) { | 392 | if (event.pressed) { |
| 369 | if (tap_count < TAPPING_TOGGLE) { | 393 | if (tap_count < TAPPING_TOGGLE) { |
| 370 | layer_switch(action.layer.val); | 394 | layer_switch(action.layer.val); |
| @@ -376,15 +400,13 @@ static void process_action(keyrecord_t *record) | |||
| 376 | } | 400 | } |
| 377 | } | 401 | } |
| 378 | break; | 402 | break; |
| 379 | case 0xFF: | 403 | case LAYER_CHANGE_DEFAULT: /* change default layer */ |
| 380 | // change default layer | ||
| 381 | if (event.pressed) { | 404 | if (event.pressed) { |
| 382 | default_layer = action.layer.val; | 405 | default_layer = action.layer.val; |
| 383 | layer_switch(default_layer); | 406 | layer_switch(default_layer); |
| 384 | } | 407 | } |
| 385 | break; | 408 | break; |
| 386 | default: | 409 | default: /* switch layer on hold and key on tap*/ |
| 387 | // with tap key | ||
| 388 | if (event.pressed) { | 410 | if (event.pressed) { |
| 389 | if (tap_count > 0) { | 411 | if (tap_count > 0) { |
| 390 | debug("LAYER_PRESSED: Tap: register_code\n"); | 412 | debug("LAYER_PRESSED: Tap: register_code\n"); |
| @@ -407,65 +429,26 @@ static void process_action(keyrecord_t *record) | |||
| 407 | break; | 429 | break; |
| 408 | } | 430 | } |
| 409 | break; | 431 | break; |
| 410 | case ACT_LAYER_RELEASED: | 432 | case ACT_LAYER_BIT: |
| 411 | switch (action.layer.code) { | 433 | switch (action.layer.code) { |
| 412 | case 0x00: | 434 | case LAYER_MOMENTARY: /* momentary */ |
| 413 | if (!event.pressed) { | ||
| 414 | layer_switch(action.layer.val); | ||
| 415 | } | ||
| 416 | break; | ||
| 417 | case 0xF0: | ||
| 418 | // tap toggle | ||
| 419 | if (event.pressed) { | 435 | if (event.pressed) { |
| 420 | if (tap_count >= TAPPING_TOGGLE) { | 436 | layer_switch(current_layer ^ action.layer.val); |
| 421 | debug("LAYER_RELEASED: tap toggle.\n"); | ||
| 422 | layer_switch(action.layer.val); | ||
| 423 | } | ||
| 424 | } else { | 437 | } else { |
| 425 | if (tap_count < TAPPING_TOGGLE) { | 438 | layer_switch(current_layer ^ action.layer.val); |
| 426 | layer_switch(action.layer.val); | ||
| 427 | } | ||
| 428 | } | ||
| 429 | break; | ||
| 430 | case 0xFF: | ||
| 431 | // change default layer | ||
| 432 | if (!event.pressed) { | ||
| 433 | default_layer = action.layer.val; | ||
| 434 | layer_switch(default_layer); | ||
| 435 | } | 439 | } |
| 436 | break; | 440 | break; |
| 437 | default: | 441 | case LAYER_ON_PRESS: |
| 438 | // with tap key | ||
| 439 | if (event.pressed) { | 442 | if (event.pressed) { |
| 440 | if (tap_count > 0) { | 443 | layer_switch(current_layer ^ action.layer.val); |
| 441 | debug("LAYER_RELEASED: Tap: register_code\n"); | ||
| 442 | register_code(action.layer.code); | ||
| 443 | } else { | ||
| 444 | debug("LAYER_RELEASED: No tap: NO ACTION\n"); | ||
| 445 | } | ||
| 446 | } else { | ||
| 447 | if (tap_count > 0) { | ||
| 448 | debug("LAYER_RELEASED: Tap: unregister_code\n"); | ||
| 449 | unregister_code(action.layer.code); | ||
| 450 | } else { | ||
| 451 | debug("LAYER_RELEASED: No tap: layer_switch\n"); | ||
| 452 | layer_switch(action.layer.val); | ||
| 453 | } | ||
| 454 | } | 444 | } |
| 455 | break; | 445 | break; |
| 456 | } | 446 | case LAYER_ON_RELEASE: |
| 457 | break; | 447 | if (!event.pressed) { |
| 458 | case ACT_LAYER_BIT: | ||
| 459 | switch (action.layer.code) { | ||
| 460 | case 0x00: | ||
| 461 | if (event.pressed) { | ||
| 462 | layer_switch(current_layer ^ action.layer.val); | ||
| 463 | } else { | ||
| 464 | layer_switch(current_layer ^ action.layer.val); | 448 | layer_switch(current_layer ^ action.layer.val); |
| 465 | } | 449 | } |
| 466 | break; | 450 | break; |
| 467 | case 0xF0: | 451 | case LAYER_TAP_TOGGLE: /* switch on hold and toggle on several taps */ |
| 468 | // tap toggle | ||
| 469 | if (event.pressed) { | 452 | if (event.pressed) { |
| 470 | if (tap_count < TAPPING_TOGGLE) { | 453 | if (tap_count < TAPPING_TOGGLE) { |
| 471 | debug("LAYER_BIT: tap toggle(press).\n"); | 454 | debug("LAYER_BIT: tap toggle(press).\n"); |
| @@ -510,108 +493,6 @@ static void process_action(keyrecord_t *record) | |||
| 510 | break; | 493 | break; |
| 511 | } | 494 | } |
| 512 | break; | 495 | break; |
| 513 | case ACT_LAYER_EXT: | ||
| 514 | switch (action.layer.val) { | ||
| 515 | case 0x00: | ||
| 516 | // set default layer when pressed | ||
| 517 | switch (action.layer.code) { | ||
| 518 | case 0x00: | ||
| 519 | if (event.pressed) { | ||
| 520 | layer_switch(default_layer); | ||
| 521 | } | ||
| 522 | break; | ||
| 523 | case 0xF0: | ||
| 524 | // tap toggle | ||
| 525 | if (event.pressed) { | ||
| 526 | if (tap_count < TAPPING_TOGGLE) { | ||
| 527 | layer_switch(default_layer); | ||
| 528 | } | ||
| 529 | } else { | ||
| 530 | if (tap_count >= TAPPING_TOGGLE) { | ||
| 531 | debug("LAYER_EXT_PRESSED: tap toggle.\n"); | ||
| 532 | layer_switch(default_layer); | ||
| 533 | } | ||
| 534 | } | ||
| 535 | break; | ||
| 536 | case 0xFF: | ||
| 537 | // change default layer | ||
| 538 | if (event.pressed) { | ||
| 539 | default_layer = current_layer; | ||
| 540 | layer_switch(default_layer); | ||
| 541 | } | ||
| 542 | break; | ||
| 543 | default: | ||
| 544 | // with tap key | ||
| 545 | if (event.pressed) { | ||
| 546 | if (tap_count > 0) { | ||
| 547 | debug("LAYER_EXT_PRESSED: Tap: register_code\n"); | ||
| 548 | register_code(action.layer.code); | ||
| 549 | } else { | ||
| 550 | debug("LAYER_EXT_PRESSED: No tap: layer_switch\n"); | ||
| 551 | layer_switch(default_layer); | ||
| 552 | } | ||
| 553 | } else { | ||
| 554 | if (tap_count > 0) { | ||
| 555 | debug("LAYER_EXT_PRESSED: Tap: unregister_code\n"); | ||
| 556 | unregister_code(action.layer.code); | ||
| 557 | } else { | ||
| 558 | debug("LAYER_EXT_PRESSED: No tap: NO ACTION\n"); | ||
| 559 | } | ||
| 560 | } | ||
| 561 | break; | ||
| 562 | } | ||
| 563 | break; | ||
| 564 | case 0x01: | ||
| 565 | // set default layer when released | ||
| 566 | switch (action.layer.code) { | ||
| 567 | case 0x00: | ||
| 568 | if (!event.pressed) { | ||
| 569 | layer_switch(default_layer); | ||
| 570 | } | ||
| 571 | break; | ||
| 572 | case 0xF0: | ||
| 573 | // tap toggle | ||
| 574 | if (event.pressed) { | ||
| 575 | if (tap_count >= TAPPING_TOGGLE) { | ||
| 576 | debug("LAYER_EXT_RELEASED: tap toggle.\n"); | ||
| 577 | layer_switch(default_layer); | ||
| 578 | } | ||
| 579 | } else { | ||
| 580 | if (tap_count < TAPPING_TOGGLE) { | ||
| 581 | layer_switch(default_layer); | ||
| 582 | } | ||
| 583 | } | ||
| 584 | break; | ||
| 585 | case 0xFF: | ||
| 586 | // change default layer | ||
| 587 | if (!event.pressed) { | ||
| 588 | default_layer = current_layer; | ||
| 589 | layer_switch(default_layer); | ||
| 590 | } | ||
| 591 | break; | ||
| 592 | default: | ||
| 593 | // with tap key | ||
| 594 | if (event.pressed) { | ||
| 595 | if (tap_count > 0) { | ||
| 596 | debug("LAYER_EXT_RELEASED: Tap: register_code\n"); | ||
| 597 | register_code(action.layer.code); | ||
| 598 | } else { | ||
| 599 | debug("LAYER_EXT_RELEASED: No tap: NO ACTION\n"); | ||
| 600 | } | ||
| 601 | } else { | ||
| 602 | if (tap_count > 0) { | ||
| 603 | debug("LAYER_EXT_RELEASED: Tap: unregister_code\n"); | ||
| 604 | unregister_code(action.layer.code); | ||
| 605 | } else { | ||
| 606 | debug("LAYER_EXT_RELEASED: No tap: layer_switch\n"); | ||
| 607 | layer_switch(default_layer); | ||
| 608 | } | ||
| 609 | } | ||
| 610 | break; | ||
| 611 | } | ||
| 612 | break; | ||
| 613 | } | ||
| 614 | break; | ||
| 615 | 496 | ||
| 616 | /* Extentions */ | 497 | /* Extentions */ |
| 617 | case ACT_MACRO: | 498 | case ACT_MACRO: |
| @@ -932,7 +813,7 @@ bool is_tap_key(key_t key) | |||
| 932 | case ACT_LMODS_TAP: | 813 | case ACT_LMODS_TAP: |
| 933 | case ACT_RMODS_TAP: | 814 | case ACT_RMODS_TAP: |
| 934 | return true; | 815 | return true; |
| 935 | case ACT_LAYER_PRESSED: | 816 | case ACT_LAYER: |
| 936 | case ACT_LAYER_BIT: | 817 | case ACT_LAYER_BIT: |
| 937 | switch (action.layer.code) { | 818 | switch (action.layer.code) { |
| 938 | case 0x00: | 819 | case 0x00: |
| @@ -944,7 +825,7 @@ bool is_tap_key(key_t key) | |||
| 944 | } | 825 | } |
| 945 | return false; | 826 | return false; |
| 946 | case ACT_FUNCTION: | 827 | case ACT_FUNCTION: |
| 947 | if (action.func.opt & O_TAP) { | 828 | if (action.func.opt & FUNC_TAP) { |
| 948 | return true; | 829 | return true; |
| 949 | } | 830 | } |
| 950 | return false; | 831 | return false; |
| @@ -975,10 +856,8 @@ static void debug_action(action_t action) | |||
| 975 | case ACT_RMODS_TAP: debug("ACT_RMODS_TAP"); break; | 856 | case ACT_RMODS_TAP: debug("ACT_RMODS_TAP"); break; |
| 976 | case ACT_USAGE: debug("ACT_USAGE"); break; | 857 | case ACT_USAGE: debug("ACT_USAGE"); break; |
| 977 | case ACT_MOUSEKEY: debug("ACT_MOUSEKEY"); break; | 858 | case ACT_MOUSEKEY: debug("ACT_MOUSEKEY"); break; |
| 978 | case ACT_LAYER_PRESSED: debug("ACT_LAYER_PRESSED"); break; | 859 | case ACT_LAYER: debug("ACT_LAYER"); break; |
| 979 | case ACT_LAYER_RELEASED: debug("ACT_LAYER_RELEASED"); break; | ||
| 980 | case ACT_LAYER_BIT: debug("ACT_LAYER_BIT"); break; | 860 | case ACT_LAYER_BIT: debug("ACT_LAYER_BIT"); break; |
| 981 | case ACT_LAYER_EXT: debug("ACT_LAYER_EXT"); break; | ||
| 982 | case ACT_MACRO: debug("ACT_MACRO"); break; | 861 | case ACT_MACRO: debug("ACT_MACRO"); break; |
| 983 | case ACT_COMMAND: debug("ACT_COMMAND"); break; | 862 | case ACT_COMMAND: debug("ACT_COMMAND"); break; |
| 984 | case ACT_FUNCTION: debug("ACT_FUNCTION"); break; | 863 | case ACT_FUNCTION: debug("ACT_FUNCTION"); break; |
diff --git a/common/action.h b/common/action.h index b1e958a26..800554eb8 100644 --- a/common/action.h +++ b/common/action.h | |||
| @@ -150,42 +150,26 @@ ACT_MOUSEKEY(0110): | |||
| 150 | 150 | ||
| 151 | Layer Actions | 151 | Layer Actions |
| 152 | ------------- | 152 | ------------- |
| 153 | TODO: reconsider layer methods. | 153 | ACT_LAYER(1000): Set layer |
| 154 | 1 momemtary + tap key up: L, down: default | 154 | ACT_LAYER_BIT(1001): Bit-op layer |
| 155 | 1 bitwise + tap key up: xor B, down: xor B | 155 | |
| 156 | 3 momemtary go + tap key? up: X, down: | 156 | 1000|LLLL|0000 0000 set L to layer on press and set default on release(momentary) |
| 157 | 3 toggle(mementary back) + tap key? up: down: Y | 157 | 1000|LLLL|0000 0001 set L to layer on press |
| 158 | 3 no tap up: X, down: Y | 158 | 1000|LLLL|0000 0010 set L to layer on release |
| 159 | 159 | 1000|----|0000 0011 set default to layer on both(return to default layer) | |
| 160 | ACT_LAYER_PRESSED(1000): Set layer on key pressed | 160 | 1000|LLLL|xxxx xxxx set L to layer while hold and send key on tap |
| 161 | ACT_LAYER_RELEASED(1001): Set layer on key released | 161 | 1000|LLLL|1111 0000 set L to layer while hold and toggle on several taps |
| 162 | ACT_LAYER_BIT(1010): On/Off layer bit | 162 | 1000|LLLL|1111 1111 set L to default and layer(on press) |
| 163 | ACT_LAYER_EXT(1011): Extentions | 163 | |
| 164 | 164 | 1001|BBBB|0000 0000 (not used) | |
| 165 | 1000|LLLL|0000 0000 set layer L when pressed | 165 | 1001|BBBB|0000 0001 bit-xor layer with B on press |
| 166 | 1001|LLLL|0000 0000 set layer L when released | 166 | 1001|BBBB|0000 0010 bit-xor layer with B on release |
| 167 | 1010|BBBB|0000 0000 on/off bit B when pressed/released | 167 | 1001|BBBB|0000 0011 bit-xor layer with B on both(momentary) |
| 168 | 1011|0000|0000 0000 set default layer when pressed | 168 | 1001|BBBB|xxxx xxxx bit-xor layer with B while hold and send key on tap |
| 169 | 1011|0001|0000 0000 set default layer when released | 169 | 1001|BBBB|1111 0000 bit-xor layer with B while hold and toggle on several taps |
| 170 | 170 | 1001|BBBB|1111 1111 bit-xor default with B and set layer(on press) | |
| 171 | 1000|LLLL|1111 0000 set layer L when pressed + tap toggle | 171 | |
| 172 | 1001|LLLL|1111 0000 set layer L when released + tap toggle | 172 | |
| 173 | 1010|BBBB|1111 0000 on/off bit B when pressed/released + tap toggle | ||
| 174 | 1011|0000|1111 0000 set default layer when pressed + tap toggle | ||
| 175 | 1011|0001|1111 0000 set default layer when released + tap toggle | ||
| 176 | |||
| 177 | 1000|LLLL|1111 1111 set L to default layer when pressed | ||
| 178 | 1001|LLLL|1111 1111 set L to default layer when released | ||
| 179 | 1010|BBBB|1111 1111 on/off bit B of default layer when pressed/released | ||
| 180 | 1011|0000|1111 1111 set current to default layer when pressed | ||
| 181 | 1011|0001|1111 1111 set current to default layer when released | ||
| 182 | |||
| 183 | 1000|LLLL| keycode set layer L when pressed + tap key | ||
| 184 | 1001|LLLL| keyocde set layer L when released + tap key | ||
| 185 | 1010|BBBB| keyocde on/off bit B when pressed/released + tap key | ||
| 186 | 1011|0000| keyocde set default layer when pressed + tap key | ||
| 187 | 1011|0001| keyocde set default layer when released + tap key | ||
| 188 | |||
| 189 | 173 | ||
| 190 | Extensions(11XX) | 174 | Extensions(11XX) |
| 191 | ---------------- | 175 | ---------------- |
| @@ -212,24 +196,14 @@ enum action_kind_id { | |||
| 212 | ACT_USAGE = 0b0100, | 196 | ACT_USAGE = 0b0100, |
| 213 | ACT_MOUSEKEY = 0b0101, | 197 | ACT_MOUSEKEY = 0b0101, |
| 214 | 198 | ||
| 215 | ACT_LAYER_PRESSED = 0b1000, | 199 | ACT_LAYER = 0b1000, |
| 216 | ACT_LAYER_RELEASED = 0b1001, | 200 | ACT_LAYER_BIT = 0b1001, |
| 217 | ACT_LAYER_BIT = 0b1010, | ||
| 218 | ACT_LAYER_EXT = 0b1011, | ||
| 219 | 201 | ||
| 220 | ACT_MACRO = 0b1100, | 202 | ACT_MACRO = 0b1100, |
| 221 | ACT_COMMAND = 0b1110, | 203 | ACT_COMMAND = 0b1110, |
| 222 | ACT_FUNCTION = 0b1111 | 204 | ACT_FUNCTION = 0b1111 |
| 223 | }; | 205 | }; |
| 224 | 206 | ||
| 225 | enum params { | ||
| 226 | P_ONESHOT = 0x00, | ||
| 227 | }; | ||
| 228 | |||
| 229 | enum options { | ||
| 230 | O_TAP = 0x8, | ||
| 231 | }; | ||
| 232 | |||
| 233 | 207 | ||
| 234 | /* action utility */ | 208 | /* action utility */ |
| 235 | #define ACTION_NO 0 | 209 | #define ACTION_NO 0 |
| @@ -250,48 +224,93 @@ enum options { | |||
| 250 | #define ACTION_RMOD_KEY(mod, key) ACTION(ACT_RMODS, MODS4(MOD_BIT(mod))<<8 | (key)) | 224 | #define ACTION_RMOD_KEY(mod, key) ACTION(ACT_RMODS, MODS4(MOD_BIT(mod))<<8 | (key)) |
| 251 | 225 | ||
| 252 | /* Mods + Tap key */ | 226 | /* Mods + Tap key */ |
| 227 | enum mods_codes { | ||
| 228 | MODS_ONESHOT = 0x00, | ||
| 229 | }; | ||
| 253 | #define ACTION_LMODS_TAP_KEY(mods, key) ACTION(ACT_LMODS_TAP, MODS4(mods)<<8 | (key)) | 230 | #define ACTION_LMODS_TAP_KEY(mods, key) ACTION(ACT_LMODS_TAP, MODS4(mods)<<8 | (key)) |
| 254 | #define ACTION_LMODS_ONESHOT(mods) ACTION(ACT_LMODS_TAP, MODS4(mods)<<8 | P_ONESHOT) | 231 | #define ACTION_LMODS_ONESHOT(mods) ACTION(ACT_LMODS_TAP, MODS4(mods)<<8 | MODS_ONESHOT) |
| 255 | #define ACTION_RMODS_TAP_KEY(mods, key) ACTION(ACT_RMODS_TAP, MODS4(mods)<<8 | (key)) | 232 | #define ACTION_RMODS_TAP_KEY(mods, key) ACTION(ACT_RMODS_TAP, MODS4(mods)<<8 | (key)) |
| 256 | #define ACTION_RMODS_ONESHOT(mods) ACTION(ACT_RMODS_TAP, MODS4(mods)<<8 | P_ONESHOT) | 233 | #define ACTION_RMODS_ONESHOT(mods) ACTION(ACT_RMODS_TAP, MODS4(mods)<<8 | MODS_ONESHOT) |
| 257 | /* Mod + Tap key */ | 234 | /* Mod + Tap key */ |
| 258 | #define ACTION_LMOD_TAP_KEY(mod, key) ACTION(ACT_LMODS_TAP, MODS4(MOD_BIT(mod))<<8 | (key)) | 235 | #define ACTION_LMOD_TAP_KEY(mod, key) ACTION(ACT_LMODS_TAP, MODS4(MOD_BIT(mod))<<8 | (key)) |
| 259 | #define ACTION_LMOD_ONESHOT(mod) ACTION(ACT_LMODS_TAP, MODS4(MOD_BIT(mod))<<8 | P_ONESHOT) | 236 | #define ACTION_LMOD_ONESHOT(mod) ACTION(ACT_LMODS_TAP, MODS4(MOD_BIT(mod))<<8 | MODS_ONESHOT) |
| 260 | #define ACTION_RMOD_TAP_KEY(mod, key) ACTION(ACT_RMODS_TAP, MODS4(MOD_BIT(mod))<<8 | (key)) | 237 | #define ACTION_RMOD_TAP_KEY(mod, key) ACTION(ACT_RMODS_TAP, MODS4(MOD_BIT(mod))<<8 | (key)) |
| 261 | #define ACTION_RMOD_ONESHOT(mod) ACTION(ACT_RMODS_TAP, MODS4(MOD_BIT(mod))<<8 | P_ONESHOT) | 238 | #define ACTION_RMOD_ONESHOT(mod) ACTION(ACT_RMODS_TAP, MODS4(MOD_BIT(mod))<<8 | MODS_ONESHOT) |
| 262 | 239 | ||
| 263 | // TODO: contemplate about layer action | 240 | |
| 264 | /* Switch current layer */ | 241 | /* |
| 265 | #define ACTION_LAYER_SET(layer) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | 0x00) | 242 | * Switch layer |
| 266 | #define ACTION_LAYER_SET_ON_PRESSED(layer) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | 0x00) | 243 | */ |
| 267 | #define ACTION_LAYER_SET_ON_RELEASED(layer) ACTION(ACT_LAYER_RELEASED, (layer)<<8 | 0x00) | 244 | enum layer_codes { |
| 268 | #define ACTION_LAYER_BIT(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | 0x00) | 245 | LAYER_MOMENTARY = 0, |
| 269 | #define ACTION_LAYER_SET_DEFAULT ACTION(ACT_LAYER_EXT, 0x0<<8 | 0x00) | 246 | LAYER_ON_PRESS = 1, |
| 270 | #define ACTION_LAYER_RETURN_DEFAULT ACTION(ACT_LAYER_EXT, 0x1<<8 | 0x00) | 247 | LAYER_ON_RELEASE = 2, |
| 271 | #define ACTION_LAYER_SET_DEFAULT_ON_PRESSED ACTION(ACT_LAYER_EXT, 0x0<<8 | 0x00) | 248 | LAYER_DEFAULT =3, |
| 272 | #define ACTION_LAYER_SET_DEFAULT_ON_RELEASED ACTION(ACT_LAYER_EXT, 0x1<<8 | 0x00) | 249 | LAYER_TAP_TOGGLE = 0xF0, |
| 273 | /* Switch default layer */ | 250 | LAYER_CHANGE_DEFAULT = 0xFF |
| 274 | #define ACTION_LAYER_DEFAULT_SET(layer) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | 0xFF) | 251 | }; |
| 275 | #define ACTION_LAYER_DEFAULT_SET_ON_PRESSED(layer) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | 0xFF) | 252 | enum layer_vals_default { |
| 276 | #define ACTION_LAYER_DEFAULT_SET_ON_RELEASED(layer) ACTION(ACT_LAYER_RELEASED, (layer)<<8 | 0xFF) | 253 | DEFAULT_ON_PRESS = 1, |
| 277 | #define ACTION_LAYER_DEFAULT_BIT(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | 0xFF) | 254 | DEFAULT_ON_RELEASE = 2, |
| 278 | #define ACTION_LAYER_DEFAULT_SET_CURRENT_ON_PRESSED ACTION(ACT_LAYER_EXT, 0x0<<8 | 0xFF) | 255 | DEFAULT_ON_BOTH = 3, |
| 279 | #define ACTION_LAYER_DEFAULT_SET_CURRENT_ON_RELEASED ACTION(ACT_LAYER_EXT, 0x1<<8 | 0xFF) | 256 | }; |
| 280 | /* Layer switch with tap key */ | 257 | |
| 281 | #define ACTION_LAYER_SET_TAP_KEY(layer, key) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | (key)) | 258 | /* |
| 282 | #define ACTION_LAYER_BIT_TAP_KEY(bits, key) ACTION(ACT_LAYER_BIT, (bits)<<8 | (key)) | 259 | * return to default layer |
| 283 | #define ACTION_LAYER_DEFAULT_SET_TAP_KEY(key) ACTION(ACT_LAYER_EXT, 0x0<<8 | (key)) | 260 | */ |
| 284 | /* Layer switch with tap toggle */ | 261 | #define ACTION_LAYER_DEFAULT ACTION_LAYER_DEFAULT_R |
| 285 | #define ACTION_LAYER_SET_ON_PRESSED_TAP_TOGGLE(layer) ACTION(ACT_LAYER_PRESSED, (layer)<<8 | 0xF0) | 262 | /* set default layer on press */ |
| 286 | #define ACTION_LAYER_SET_ON_RELEASED_TAP_TOGGLE(layer) ACTION(ACT_LAYER_RELEASED, (layer)<<8 | 0xF0) | 263 | #define ACTION_LAYER_DEFAULT_P ACTION(ACT_LAYER, DEFAULT_ON_PRESS<<8 | LAYER_DEFAULT) |
| 287 | #define ACTION_LAYER_BIT_TAP_TOGGLE(layer) ACTION(ACT_LAYER_BIT, (layer)<<8 | 0xF0) | 264 | /* set default layer on release */ |
| 288 | #define ACTION_LAYER_DEFAULT_TAP_TOGGLE ACTION(ACT_LAYER_EXT, 0x0<<8 | 0xF0) | 265 | #define ACTION_LAYER_DEFAULT_R ACTION(ACT_LAYER, DEFAULT_ON_RELEASE<<8 | LAYER_DEFAULT) |
| 266 | /* change default layer and set layer */ | ||
| 267 | |||
| 268 | /* | ||
| 269 | * Set layer | ||
| 270 | */ | ||
| 271 | /* set layer on press and set default on release */ | ||
| 272 | #define ACTION_LAYER_SET(layer) ACTION_LAYER_SET_MOMENTARY(layer) | ||
| 273 | #define ACTION_LAYER_SET_MOMENTARY(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_MOMENTARY) | ||
| 274 | /* set layer on press and none on release */ | ||
| 275 | #define ACTION_LAYER_SET_TOGGLE(layer) ACTION_LAYER_SET_R(layer) | ||
| 276 | /* set layer while hold and send key on tap */ | ||
| 277 | #define ACTION_LAYER_SET_TAP_KEY(layer, key) ACTION(ACT_LAYER, (layer)<<8 | (key)) | ||
| 278 | /* set layer on press */ | ||
| 279 | #define ACTION_LAYER_SET_P(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_ON_PRESS) | ||
| 280 | /* set layer on release */ | ||
| 281 | #define ACTION_LAYER_SET_R(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_ON_RELEASE) | ||
| 282 | /* set layer on hold and toggle on several taps */ | ||
| 283 | #define ACTION_LAYER_SET_TAP_TOGGLE(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_TAP_TOGGLE) | ||
| 284 | /* set default layer on both press and release */ | ||
| 285 | #define ACTION_LAYER_SET_DEFAULT(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_CHANGE_DEFAULT) | ||
| 286 | |||
| 287 | /* | ||
| 288 | * Bit-op layer | ||
| 289 | */ | ||
| 290 | /* bit-xor on both press and release */ | ||
| 291 | #define ACTION_LAYER_BIT(bits) ACTION_LAYER_BIT_MOMENTARY(bits) | ||
| 292 | #define ACTION_LAYER_BIT_MOMENTARY(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | LAYER_MOMENTARY) | ||
| 293 | /* bit-xor on press */ | ||
| 294 | #define ACTION_LAYER_BIT_TOGGLE(bits) ACTION_LAYER_BIT_R(bits) | ||
| 295 | /* bit-xor while hold and send key on tap */ | ||
| 296 | #define ACTION_LAYER_BIT_TAP_KEY(bits, key) ACTION(ACT_LAYER_BIT, (bits)<<8 | (key)) | ||
| 297 | /* bit-xor on press */ | ||
| 298 | #define ACTION_LAYER_BIT_P(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | LAYER_ON_PRESS) | ||
| 299 | /* bit-xor on release */ | ||
| 300 | #define ACTION_LAYER_BIT_R(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | LAYER_ON_RELEASE) | ||
| 301 | /* bit-xor while hold and toggle on several taps */ | ||
| 302 | #define ACTION_LAYER_BIT_TAP_TOGGLE(bits) ACTION(ACT_LAYER_BIT, (bits)<<8 | LAYER_TAP_TOGGLE) | ||
| 303 | /* bit-xor default layer and set layer */ | ||
| 304 | #define ACTION_LAYER_BIT_DEFAULT(bits) ACTION(ACT_LAYER, (bits)<<8 | LAYER_CHANGE_DEFAULT) | ||
| 305 | |||
| 289 | 306 | ||
| 290 | /* HID Usage */ | 307 | /* HID Usage */ |
| 291 | #define ACTION_USAGE_PAGE_SYSTEM 0 | 308 | enum usage_pages { |
| 292 | #define ACTION_USAGE_PAGE_CONSUMER 1 | 309 | PAGE_SYSTEM, |
| 293 | #define ACTION_USAGE_SYSTEM(id) ACTION(ACT_USAGE, ACTION_USAGE_PAGE_SYSTEM<<10 | (id)) | 310 | PAGE_CONSUMER |
| 294 | #define ACTION_USAGE_CONSUMER(id) ACTION(ACT_USAGE, ACTION_USAGE_PAGE_CONSUMER<<10 | (id)) | 311 | }; |
| 312 | #define ACTION_USAGE_SYSTEM(id) ACTION(ACT_USAGE, PAGE_SYSTEM<<10 | (id)) | ||
| 313 | #define ACTION_USAGE_CONSUMER(id) ACTION(ACT_USAGE, PAGE_CONSUMER<<10 | (id)) | ||
| 295 | 314 | ||
| 296 | /* Mousekey */ | 315 | /* Mousekey */ |
| 297 | #define ACTION_MOUSEKEY(key) ACTION(ACT_MOUSEKEY, key) | 316 | #define ACTION_MOUSEKEY(key) ACTION(ACT_MOUSEKEY, key) |
| @@ -303,7 +322,10 @@ enum options { | |||
| 303 | #define ACTION_COMMAND(opt, id) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) | 322 | #define ACTION_COMMAND(opt, id) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) |
| 304 | 323 | ||
| 305 | /* Function */ | 324 | /* Function */ |
| 325 | enum function_opts { | ||
| 326 | FUNC_TAP = 0x8, | ||
| 327 | }; | ||
| 306 | #define ACTION_FUNCTION(id, opt) ACTION(ACT_FUNCTION, (opt)<<8 | id) | 328 | #define ACTION_FUNCTION(id, opt) ACTION(ACT_FUNCTION, (opt)<<8 | id) |
| 307 | #define ACTION_FUNCTION_TAP(id) ACTION(ACT_FUNCTION, O_TAP<<8 | id) | 329 | #define ACTION_FUNCTION_TAP(id) ACTION(ACT_FUNCTION, FUNC_TAP<<8 | id) |
| 308 | 330 | ||
| 309 | #endif /* ACTION_H */ | 331 | #endif /* ACTION_H */ |
diff --git a/keyboard/hhkb/keymap.c b/keyboard/hhkb/keymap.c index f2f21e8ce..65ef89ad7 100644 --- a/keyboard/hhkb/keymap.c +++ b/keyboard/hhkb/keymap.c | |||
| @@ -29,8 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 29 | #include "keymap.h" | 29 | #include "keymap.h" |
| 30 | 30 | ||
| 31 | 31 | ||
| 32 | // Convert physical keyboard layout to matrix array. | ||
| 33 | // This is a macro to define keymap easily in keyboard layout form. | ||
| 34 | #define KEYMAP( \ | 32 | #define KEYMAP( \ |
| 35 | K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ | 33 | K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ |
| 36 | K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \ | 34 | K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \ |
| @@ -50,6 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 50 | } | 48 | } |
| 51 | 49 | ||
| 52 | 50 | ||
| 51 | // TODO: use [1] = KEYMAP(...) to prevent from changing index of element? | ||
| 53 | static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 52 | static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 54 | /* Layer 0: Default Layer | 53 | /* Layer 0: Default Layer |
| 55 | * ,-----------------------------------------------------------. | 54 | * ,-----------------------------------------------------------. |
| @@ -57,17 +56,17 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 57 | * |-----------------------------------------------------------| | 56 | * |-----------------------------------------------------------| |
| 58 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| | 57 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| |
| 59 | * |-----------------------------------------------------------| | 58 | * |-----------------------------------------------------------| |
| 60 | * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Return | | 59 | * |Fn6 | A| S| D| F| G| H| J| K| L|Fn3| '|Return | |
| 61 | * |-----------------------------------------------------------| | 60 | * |-----------------------------------------------------------| |
| 62 | * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1| | 61 | * |Fn8 | Z| X| C| V| B| N| M| ,| .|Fn2|Fn12 |Fn1| |
| 63 | * `-----------------------------------------------------------' | 62 | * `-----------------------------------------------------------' |
| 64 | * |Gui|Alt |Fn5 |Alt |Fn4| | 63 | * |Gui|Alt | Fn5 |Alt |Fn4| |
| 65 | * `-------------------------------------------' | 64 | * `-------------------------------------------' |
| 66 | */ | 65 | */ |
| 67 | KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ | 66 | KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ |
| 68 | TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ | 67 | TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ |
| 69 | FN6, A, S, D, F, G, H, J, K, L, FN3, QUOT,FN7, \ | 68 | FN6, A, S, D, F, G, H, J, K, L, FN3, QUOT,FN7, \ |
| 70 | FN8, Z, X, C, V, B, N, M, COMM,DOT, FN2, FN12,FN10, \ | 69 | FN8, Z, X, C, V, B, N, M, COMM,DOT, FN2, FN12,FN9, \ |
| 71 | LGUI,LALT, FN5, FN13,FN4), | 70 | LGUI,LALT, FN5, FN13,FN4), |
| 72 | 71 | ||
| 73 | /* Layer 1: HHKB mode (HHKB Fn) | 72 | /* Layer 1: HHKB mode (HHKB Fn) |
| @@ -80,13 +79,13 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 80 | * |-----------------------------------------------------------| | 79 | * |-----------------------------------------------------------| |
| 81 | * |Shift | | | | | | +| -|End|PgD|Dow|Shift |Fn0| | 80 | * |Shift | | | | | | +| -|End|PgD|Dow|Shift |Fn0| |
| 82 | * `-----------------------------------------------------------' | 81 | * `-----------------------------------------------------------' |
| 83 | * |Gui |Alt |Space |Alt |xxx| | 82 | * |Gui|Alt | Space |Alt |Gui| |
| 84 | * `--------------------------------------------' | 83 | * `-------------------------------------------' |
| 85 | */ | 84 | */ |
| 86 | KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ | 85 | KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ |
| 87 | CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,BRK, UP, NO, BSPC, \ | 86 | CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \ |
| 88 | LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ | 87 | LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ |
| 89 | LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,FN10, \ | 88 | LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,FN0, \ |
| 90 | LGUI,LALT, SPC, RALT,RGUI), | 89 | LGUI,LALT, SPC, RALT,RGUI), |
| 91 | 90 | ||
| 92 | /* Layer 2: Vi mode (Slash) | 91 | /* Layer 2: Vi mode (Slash) |
| @@ -99,7 +98,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 99 | * |-----------------------------------------------------------| | 98 | * |-----------------------------------------------------------| |
| 100 | * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | | 99 | * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | |
| 101 | * `-----------------------------------------------------------' | 100 | * `-----------------------------------------------------------' |
| 102 | * |Gui|Alt |Space |Alt |Gui| | 101 | * |Gui|Alt | Space |Alt |Gui| |
| 103 | * `-------------------------------------------' | 102 | * `-------------------------------------------' |
| 104 | */ | 103 | */ |
| 105 | KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ | 104 | KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ |
| @@ -112,13 +111,13 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 112 | * ,-----------------------------------------------------------. | 111 | * ,-----------------------------------------------------------. |
| 113 | * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| | 112 | * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| |
| 114 | * |-----------------------------------------------------------| | 113 | * |-----------------------------------------------------------| |
| 115 | * |Tab |MwL|MwU|McU|MwD|MwR|MwL|MwD|MwU|MwR| | | |Backs| | 114 | * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| |
| 116 | * |-----------------------------------------------------------| | 115 | * |-----------------------------------------------------------| |
| 117 | * |Contro| |McL|McD|McR| |McL|McD|McU|McR|Fn0| |Return | | 116 | * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | |
| 118 | * |-----------------------------------------------------------| | 117 | * |-----------------------------------------------------------| |
| 119 | * |Shift |Mb4|Mb5|Mb1|Mb2|Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | | 118 | * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | |
| 120 | * `-----------------------------------------------------------' | 119 | * `-----------------------------------------------------------' |
| 121 | * |Gui |Alt |Mb1 |Alt |Fn0| | 120 | * |Gui |Alt | Mb1 |Alt |Fn0| |
| 122 | * `--------------------------------------------' | 121 | * `--------------------------------------------' |
| 123 | * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel | 122 | * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel |
| 124 | */ | 123 | */ |
| @@ -147,10 +146,23 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 147 | LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \ | 146 | LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \ |
| 148 | LGUI,LALT, FN0, RALT,RGUI), | 147 | LGUI,LALT, FN0, RALT,RGUI), |
| 149 | 148 | ||
| 150 | /* Layer5: another Mouse mode (Space) */ | 149 | /* Layer5: another Mouse mode (Space) |
| 150 | * ,-----------------------------------------------------------. | ||
| 151 | * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| | ||
| 152 | * |-----------------------------------------------------------| | ||
| 153 | * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| | ||
| 154 | * |-----------------------------------------------------------| | ||
| 155 | * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | | ||
| 156 | * |-----------------------------------------------------------| | ||
| 157 | * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | | ||
| 158 | * `-----------------------------------------------------------' | ||
| 159 | * |Gui |Alt | Fn0 |Alt |Fn0| | ||
| 160 | * `--------------------------------------------' | ||
| 161 | * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel | ||
| 162 | */ | ||
| 151 | KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ | 163 | KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ |
| 152 | TAB, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,NO, NO, NO, BSPC, \ | 164 | TAB, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,NO, NO, NO, BSPC, \ |
| 153 | LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,FN0, NO, ENT, \ | 165 | LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,NO, NO, ENT, \ |
| 154 | LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, RSFT,NO, \ | 166 | LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, RSFT,NO, \ |
| 155 | LGUI,LALT, FN0, RALT,RGUI), | 167 | LGUI,LALT, FN0, RALT,RGUI), |
| 156 | }; | 168 | }; |
| @@ -164,27 +176,32 @@ enum function_id { | |||
| 164 | MACRO = 0xff | 176 | MACRO = 0xff |
| 165 | }; | 177 | }; |
| 166 | 178 | ||
| 179 | |||
| 167 | /* | 180 | /* |
| 168 | * Fn action definition | 181 | * Fn action definition |
| 169 | */ | 182 | */ |
| 183 | // TODO: use [1] = KEYMAP(...) to prevent from changing index of element? | ||
| 170 | static const uint16_t PROGMEM fn_actions[] = { | 184 | static const uint16_t PROGMEM fn_actions[] = { |
| 171 | ACTION_LAYER_RETURN_DEFAULT, // FN0 | 185 | ACTION_LAYER_DEFAULT, // FN0 |
| 172 | ACTION_LAYER_SET(1), // FN1 | 186 | ACTION_LAYER_SET(1), // FN1 |
| 173 | ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH), // FN2 | 187 | ACTION_LAYER_SET_TAP_KEY(2, KC_SLASH), // FN2 Layer with Slash |
| 174 | ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN), // FN3 | 188 | ACTION_LAYER_SET_TAP_KEY(3, KC_SCLN), // FN3 Layer with Semicolon |
| 175 | //ACTION_LAYER_SET(3), // FN4 | 189 | |
| 176 | ACTION_FUNCTION(MACRO, 0), // FN4 | 190 | ACTION_LAYER_SET(3), // FN4 |
| 191 | // ACTION_LAYER_SET_TOGGLE(3), // FN4 | ||
| 192 | // ACTION_FUNCTION(MACRO, 0), // FN4 | ||
| 177 | ACTION_LAYER_SET_TAP_KEY(5, KC_SPC), // FN5 | 193 | ACTION_LAYER_SET_TAP_KEY(5, KC_SPC), // FN5 |
| 178 | ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // FN6 | 194 | // ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // FN6 Control with tap Backspace |
| 179 | ACTION_RMOD_TAP_KEY(KC_RCTL, KC_ENT), // FN7 | 195 | ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // FN6 Control with tap Backspace |
| 180 | ACTION_LMOD_ONESHOT(KC_LSFT), // FN8 Oneshot Shift | 196 | ACTION_RMOD_TAP_KEY(KC_RCTL, KC_ENT), // FN7 Control with tap Enter |
| 181 | ACTION_LAYER_SET_ON_RELEASED_TAP_TOGGLE(1), // FN9 | 197 | ACTION_LMOD_ONESHOT(KC_LSFT), // FN8 Oneshot Shift |
| 182 | ACTION_LAYER_BIT_TAP_KEY(1, KC_GRV), // FN10 | 198 | ACTION_LAYER_SET_TAP_TOGGLE(1), // FN9 |
| 199 | ACTION_LAYER_BIT_TAP_KEY(1, KC_GRV), // FN10 Layer with Grave | ||
| 183 | //ACTION_LAYER_BIT(1), // FN10 | 200 | //ACTION_LAYER_BIT(1), // FN10 |
| 184 | //ACTION_LAYER_BIT_TAP_TOGGLE(1), // FN10 | 201 | //ACTION_LAYER_BIT_TAP_TOGGLE(1), // FN10 |
| 185 | ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // FN11 | 202 | ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // FN11 Function: LShift with tap '(' |
| 186 | ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // FN12 | 203 | ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // FN12 Function: RShift with tap ')' |
| 187 | ACTION_FUNCTION(MACRO, 1), // FN13 | 204 | ACTION_FUNCTION(MACRO, 1), // FN13 Macro: |
| 188 | }; | 205 | }; |
| 189 | 206 | ||
| 190 | 207 | ||
