aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Đorđević <konstantin.djordjevic@tradecore.com>2019-07-25 21:31:40 +0200
committerDrashna Jaelre <drashna@live.com>2019-07-25 12:31:40 -0700
commit36d3902504d6aa0d2bdac88c90339c902ade11b3 (patch)
treeb4a36c6b3cb5d54f44680df60c1845e8cb917197
parentf204ed67f210b1dde20333727c79c47a5b70518a (diff)
downloadqmk_firmware-36d3902504d6aa0d2bdac88c90339c902ade11b3.tar.gz
qmk_firmware-36d3902504d6aa0d2bdac88c90339c902ade11b3.zip
[User] Update personal userspace and keymaps, add reactive underglow (#6410)
* Update MODERN_DOLCH_RED color * Remove unused RAL_LAL tap dance * Disable Space Cadet on all boards * Rework SEND_STRING_CLEAN into CLEAN_MODS, fix DST_P_R/DST_N_A * Disable unnecessary underglow animations * Rearrange feature flags in rules.mk files * Change custom colors from structs to defines * Add some explicit initializers * Add MODERN_DOLCH_CYAN color * Add IS_LAYER_ON_STATE()/IS_LAYER_OFF_STATE() macros * Add led_set_keymap() template function * Change underglow color based on Caps/Fn state * Preserve val when changing underglow colors * Only trigger Fn light for Fn layer * Refactor fn_light() and caps_light() slightly * Add comments to fn_light() and caps_light()
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h1
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c42
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk22
-rw-r--r--keyboards/melody96/keymaps/konstantin/keymap.c2
-rw-r--r--keyboards/melody96/keymaps/konstantin/rules.mk21
-rw-r--r--keyboards/wasdat/keymaps/konstantin/rules.mk18
-rw-r--r--keyboards/whitefox/keymaps/konstantin/rules.mk22
-rw-r--r--users/konstantin/config.h6
-rw-r--r--users/konstantin/konstantin.c52
-rw-r--r--users/konstantin/konstantin.h22
-rw-r--r--users/konstantin/rgb.c7
-rw-r--r--users/konstantin/rgb.h12
-rw-r--r--users/konstantin/tap_dance.c2
-rw-r--r--users/konstantin/tap_dance.h4
14 files changed, 151 insertions, 82 deletions
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
index 16387fa2f..4b511eb84 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
@@ -1,4 +1,3 @@
1#pragma once 1#pragma once
2 2
3#define LAYER_FN 3#define LAYER_FN
4#define SEND_STRING_CLEAN
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
index b348b0b7b..c5c8c0963 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
@@ -10,7 +10,7 @@ enum layers_keymap {
10}; 10};
11 11
12void eeconfig_init_keymap(void) { 12void eeconfig_init_keymap(void) {
13 rgblight_sethsv(MODERN_DOLCH_RED.h, MODERN_DOLCH_RED.s, MODERN_DOLCH_RED.v); 13 rgblight_sethsv(MODERN_DOLCH_RED);
14 rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); 14 rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
15} 15}
16 16
@@ -31,6 +31,46 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
31 } 31 }
32} 32}
33 33
34static bool skip_caps = false;
35
36static void fn_light(uint32_t state) {
37 if (IS_LAYER_ON_STATE(state, L_FN)) {
38 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
39 rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val());
40 skip_caps = true;
41 } else {
42 rgblight_config_t saved = { .raw = eeconfig_read_rgblight() };
43 rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val);
44 rgblight_mode_noeeprom(saved.mode);
45 }
46 // caps_light will be called automatically after this
47}
48
49static void caps_light(uint8_t usb_led) {
50 if (skip_caps) {
51 skip_caps = false;
52 return; // Skip calls triggered by the Fn layer turning on
53 }
54 if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
55 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
56 rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val());
57 } else {
58 fn_light(layer_state); // Caps is off, check if Fn light should be on
59 }
60}
61
62uint32_t layer_state_set_keymap(uint32_t state) {
63 static uint32_t prev_state = L_BASE;
64 if (IS_LAYER_ON_STATE(state, L_FN) != IS_LAYER_ON_STATE(prev_state, L_FN)) {
65 fn_light(state); // Fn state changed since last time
66 }
67 return prev_state = state;
68}
69
70void led_set_keymap(uint8_t usb_led) {
71 caps_light(usb_led);
72}
73
34const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 74const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35 /* Base layer 75 /* Base layer
36 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ 76 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
index f7cf0758b..7262c6db6 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
1BOOTMAGIC_ENABLE = no 1BACKLIGHT_ENABLE = no
2COMMAND_ENABLE = yes 2BOOTMAGIC_ENABLE = no
3CONSOLE_ENABLE = no 3COMMAND_ENABLE = yes
4EXTRAKEY_ENABLE = yes 4CONSOLE_ENABLE = yes
5MOUSEKEY_ENABLE = yes 5EXTRAKEY_ENABLE = yes
6NKRO_ENABLE = yes 6MOUSEKEY_ENABLE = yes
7TAP_DANCE_ENABLE = yes 7NKRO_ENABLE = yes
8UNICODEMAP_ENABLE = no 8RGBLIGHT_ENABLE = yes
9 9SPACE_CADET_ENABLE = no
10BACKLIGHT_ENABLE = yes 10TAP_DANCE_ENABLE = yes
11RGBLIGHT_ENABLE = yes 11UNICODEMAP_ENABLE = no
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c
index c2b043104..e02ba0f85 100644
--- a/keyboards/melody96/keymaps/konstantin/keymap.c
+++ b/keyboards/melody96/keymaps/konstantin/keymap.c
@@ -1,7 +1,7 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#include "konstantin.h" 2#include "konstantin.h"
3 3
4static const HSV *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW }; 4static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
5static const size_t cnum = sizeof colors / sizeof *colors; 5static const size_t cnum = sizeof colors / sizeof *colors;
6static size_t cidx = 0; 6static size_t cidx = 0;
7 7
diff --git a/keyboards/melody96/keymaps/konstantin/rules.mk b/keyboards/melody96/keymaps/konstantin/rules.mk
index 47a859d08..995402cb0 100644
--- a/keyboards/melody96/keymaps/konstantin/rules.mk
+++ b/keyboards/melody96/keymaps/konstantin/rules.mk
@@ -1,10 +1,11 @@
1BOOTMAGIC_ENABLE = no 1BACKLIGHT_ENABLE = no
2COMMAND_ENABLE = yes 2BOOTMAGIC_ENABLE = no
3CONSOLE_ENABLE = no 3COMMAND_ENABLE = yes
4EXTRAKEY_ENABLE = yes 4CONSOLE_ENABLE = no
5MOUSEKEY_ENABLE = yes 5EXTRAKEY_ENABLE = yes
6NKRO_ENABLE = yes 6MOUSEKEY_ENABLE = yes
7TAP_DANCE_ENABLE = yes 7NKRO_ENABLE = yes
8UNICODEMAP_ENABLE = yes 8RGBLIGHT_ENABLE = yes
9 9SPACE_CADET_ENABLE = no
10BACKLIGHT_ENABLE = no 10TAP_DANCE_ENABLE = yes
11UNICODEMAP_ENABLE = yes
diff --git a/keyboards/wasdat/keymaps/konstantin/rules.mk b/keyboards/wasdat/keymaps/konstantin/rules.mk
index 4bb1ee658..041d32114 100644
--- a/keyboards/wasdat/keymaps/konstantin/rules.mk
+++ b/keyboards/wasdat/keymaps/konstantin/rules.mk
@@ -1,8 +1,10 @@
1BOOTMAGIC_ENABLE = no 1BACKLIGHT_ENABLE = no
2COMMAND_ENABLE = yes 2BOOTMAGIC_ENABLE = no
3CONSOLE_ENABLE = yes 3COMMAND_ENABLE = yes
4EXTRAKEY_ENABLE = yes 4CONSOLE_ENABLE = yes
5MOUSEKEY_ENABLE = yes 5EXTRAKEY_ENABLE = yes
6NKRO_ENABLE = yes 6MOUSEKEY_ENABLE = yes
7TAP_DANCE_ENABLE = yes 7NKRO_ENABLE = yes
8UNICODEMAP_ENABLE = yes 8SPACE_CADET_ENABLE = no
9TAP_DANCE_ENABLE = yes
10UNICODEMAP_ENABLE = yes
diff --git a/keyboards/whitefox/keymaps/konstantin/rules.mk b/keyboards/whitefox/keymaps/konstantin/rules.mk
index 625ef346c..bced6e8a7 100644
--- a/keyboards/whitefox/keymaps/konstantin/rules.mk
+++ b/keyboards/whitefox/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
1BOOTMAGIC_ENABLE = no 1BACKLIGHT_ENABLE = no
2COMMAND_ENABLE = yes 2BOOTMAGIC_ENABLE = no
3CONSOLE_ENABLE = yes 3COMMAND_ENABLE = yes
4EXTRAKEY_ENABLE = yes 4CONSOLE_ENABLE = yes
5MOUSEKEY_ENABLE = yes 5EXTRAKEY_ENABLE = yes
6NKRO_ENABLE = yes 6MOUSEKEY_ENABLE = yes
7TAP_DANCE_ENABLE = yes 7NKRO_ENABLE = yes
8UNICODEMAP_ENABLE = yes 8SPACE_CADET_ENABLE = no
9 9TAP_DANCE_ENABLE = yes
10BACKLIGHT_ENABLE = no 10UNICODEMAP_ENABLE = yes
11VISUALIZER_ENABLE = no 11VISUALIZER_ENABLE = no
diff --git a/users/konstantin/config.h b/users/konstantin/config.h
index 4edab2baa..d712e79d3 100644
--- a/users/konstantin/config.h
+++ b/users/konstantin/config.h
@@ -13,6 +13,12 @@
13#define NO_ACTION_MACRO 13#define NO_ACTION_MACRO
14#define NO_ACTION_ONESHOT 14#define NO_ACTION_ONESHOT
15 15
16#undef RGBLIGHT_ANIMATIONS
17#define RGBLIGHT_EFFECT_BREATHING
18#define RGBLIGHT_EFFECT_RAINBOW_MOOD
19#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
20#define RGBLIGHT_EFFECT_SNAKE
21
16#define PERMISSIVE_HOLD 22#define PERMISSIVE_HOLD
17#define TAPPING_TERM 200 23#define TAPPING_TERM 200
18#define TAPPING_TOGGLE 2 24#define TAPPING_TOGGLE 2
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
index 9e3caca41..c56c9490f 100644
--- a/users/konstantin/konstantin.c
+++ b/users/konstantin/konstantin.c
@@ -32,26 +32,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
32 } 32 }
33 33
34 switch (keycode) { 34 switch (keycode) {
35 case CLEAR: 35 uint16_t kc;
36 if (record->event.pressed) {
37 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
38 }
39 return false;
40
41 case DST_P_R:
42 (record->event.pressed ? register_code16 : unregister_code16)(
43 (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
44 );
45 return false;
46
47 case DST_N_A:
48 (record->event.pressed ? register_code16 : unregister_code16)(
49 (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
50 );
51 return false;
52
53#ifdef LAYER_FN 36#ifdef LAYER_FN
54 static bool fn_lock; 37 static bool fn_lock = false;
55 38
56 case FN_FNLK: 39 case FN_FNLK:
57 if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { 40 if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
@@ -77,6 +60,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
77 } 60 }
78 return true; 61 return true;
79 62
63 case CLEAR:
64 if (record->event.pressed) {
65 CLEAN_MODS(
66 SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
67 )
68 }
69 return false;
70
71 case DST_P_R:
72 kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV;
73 CLEAN_MODS(
74 (record->event.pressed ? register_code16 : unregister_code16)(kc);
75 )
76 return false;
77
78 case DST_N_A:
79 kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT;
80 CLEAN_MODS(
81 (record->event.pressed ? register_code16 : unregister_code16)(kc);
82 )
83 return false;
84
80 default: 85 default:
81 return true; 86 return true;
82 } 87 }
@@ -91,7 +96,7 @@ uint32_t layer_state_set_user(uint32_t state) {
91 state = layer_state_set_keymap(state); 96 state = layer_state_set_keymap(state);
92 97
93#ifdef LAYER_NUMPAD 98#ifdef LAYER_NUMPAD
94 bool numpad = state & 1UL<<L_NUMPAD; 99 bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD);
95 bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK); 100 bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK);
96 if (numpad != num_lock) { 101 if (numpad != num_lock) {
97 tap_code(KC_NLCK); // Toggle Num Lock to match Numpad layer state 102 tap_code(KC_NLCK); // Toggle Num Lock to match Numpad layer state
@@ -100,3 +105,10 @@ uint32_t layer_state_set_user(uint32_t state) {
100 105
101 return state; 106 return state;
102} 107}
108
109__attribute__((weak))
110void led_set_keymap(uint8_t usb_led) {}
111
112void led_set_user(uint8_t usb_led) {
113 led_set_keymap(usb_led);
114}
diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h
index d43712b96..84d90dda5 100644
--- a/users/konstantin/konstantin.h
+++ b/users/konstantin/konstantin.h
@@ -47,15 +47,16 @@
47 47
48#define LCT_CPS LCTL_T(KC_CAPS) 48#define LCT_CPS LCTL_T(KC_CAPS)
49 49
50#ifdef SEND_STRING_CLEAN 50#define IS_LAYER_ON_STATE(state, layer) ( (state) & (1UL << (layer)))
51 #undef SEND_STRING 51#define IS_LAYER_OFF_STATE(state, layer) (~(state) & (1UL << (layer)))
52 #define SEND_STRING(string) { \ 52
53 uint8_t ss_mods = get_mods(); \ 53// Clear mods, perform action, restore mods
54 clear_mods(); \ 54#define CLEAN_MODS(action) { \
55 send_string_P(PSTR(string)); \ 55 uint8_t mods = get_mods(); \
56 set_mods(ss_mods); \ 56 clear_mods(); \
57 } 57 action; \
58#endif 58 set_mods(mods); \
59 }
59 60
60enum keycodes_user { 61enum keycodes_user {
61 CLEAR = SAFE_RANGE, 62 CLEAR = SAFE_RANGE,
@@ -81,5 +82,6 @@ void keyboard_pre_init_keymap(void);
81void eeconfig_init_keymap(void); 82void eeconfig_init_keymap(void);
82void keyboard_post_init_keymap(void); 83void keyboard_post_init_keymap(void);
83 84
84bool process_record_keymap(uint16_t keycode, keyrecord_t *record); 85bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
85uint32_t layer_state_set_keymap(uint32_t state); 86uint32_t layer_state_set_keymap(uint32_t state);
87void led_set_keymap(uint8_t usb_led);
diff --git a/users/konstantin/rgb.c b/users/konstantin/rgb.c
index a96cad019..fffa250f2 100644
--- a/users/konstantin/rgb.c
+++ b/users/konstantin/rgb.c
@@ -20,6 +20,7 @@ const uint8_t PROGMEM RGBLED_SNAKE_INTERVALS[] = { 20, 50, 100 };
20const uint8_t PROGMEM RGBLED_KNIGHT_INTERVALS[] = { 20, 50, 100 }; 20const uint8_t PROGMEM RGBLED_KNIGHT_INTERVALS[] = { 20, 50, 100 };
21#endif 21#endif
22 22
23const HSV GODSPEED_BLUE = { .h = 198, .s = 68, .v = 255 }; 23const HSV godspeed_blue = { GODSPEED_BLUE };
24const HSV GODSPEED_YELLOW = { .h = 27, .s = 153, .v = 255 }; 24const HSV godspeed_yellow = { GODSPEED_YELLOW };
25const HSV MODERN_DOLCH_RED = { .h = 252, .s = 255, .v = 144 }; 25const HSV modern_dolch_cyan = { MODERN_DOLCH_CYAN };
26const HSV modern_dolch_red = { MODERN_DOLCH_RED };
diff --git a/users/konstantin/rgb.h b/users/konstantin/rgb.h
index 36a9d9cd7..cc7d91808 100644
--- a/users/konstantin/rgb.h
+++ b/users/konstantin/rgb.h
@@ -2,6 +2,12 @@
2 2
3#include "quantum.h" 3#include "quantum.h"
4 4
5extern const HSV GODSPEED_BLUE; 5#define GODSPEED_BLUE 198, 68, 255
6extern const HSV GODSPEED_YELLOW; 6#define GODSPEED_YELLOW 27, 153, 255
7extern const HSV MODERN_DOLCH_RED; 7#define MODERN_DOLCH_CYAN 110, 255, 108
8#define MODERN_DOLCH_RED 251, 255, 108
9
10extern const HSV godspeed_blue;
11extern const HSV godspeed_yellow;
12extern const HSV modern_dolch_cyan;
13extern const HSV modern_dolch_red;
diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c
index ba1453fc0..b36bc3dcc 100644
--- a/users/konstantin/tap_dance.c
+++ b/users/konstantin/tap_dance.c
@@ -107,12 +107,12 @@ void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) {
107qk_tap_dance_action_t tap_dance_actions[] = { 107qk_tap_dance_action_t tap_dance_actions[] = {
108 [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM), 108 [TD_DST_A_R] = ACTION_TAP_DANCE_DOUBLE(DST_ADD, DST_REM),
109 109
110 [TD_RAL_LAL] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_LALT),
111 [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI), 110 [TD_RAL_RGU] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RALT, KC_RGUI),
112 [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT), 111 [TD_RCT_RSF] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RCTL, KC_RSFT),
113 [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RSFT, KC_RCTL), 112 [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MOD(KC_RSFT, KC_RCTL),
114 113
115 [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN), 114 [TD_LSFT_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_LSFT, L_FN),
116 [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN), 115 [TD_RCTL_FN] = ACTION_TAP_DANCE_MOD_LAYER(KC_RCTL, L_FN),
116
117 [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL), 117 [TD_FN_RCTL] = ACTION_TAP_DANCE_LAYER_MOD(L_FN, KC_RCTL),
118}; 118};
diff --git a/users/konstantin/tap_dance.h b/users/konstantin/tap_dance.h
index d2f00c8cb..461d7ba8a 100644
--- a/users/konstantin/tap_dance.h
+++ b/users/konstantin/tap_dance.h
@@ -4,24 +4,24 @@
4 4
5#define DST_A_R TD(TD_DST_A_R) 5#define DST_A_R TD(TD_DST_A_R)
6 6
7#define RAL_LAL TD(TD_RAL_LAL)
8#define RAL_RGU TD(TD_RAL_RGU) 7#define RAL_RGU TD(TD_RAL_RGU)
9#define RCT_RSF TD(TD_RCT_RSF) 8#define RCT_RSF TD(TD_RCT_RSF)
10#define RSF_RCT TD(TD_RSF_RCT) 9#define RSF_RCT TD(TD_RSF_RCT)
11 10
12#define LSFT_FN TD(TD_LSFT_FN) 11#define LSFT_FN TD(TD_LSFT_FN)
13#define RCTL_FN TD(TD_RCTL_FN) 12#define RCTL_FN TD(TD_RCTL_FN)
13
14#define FN_RCTL TD(TD_FN_RCTL) 14#define FN_RCTL TD(TD_FN_RCTL)
15 15
16enum tap_dance { 16enum tap_dance {
17 TD_DST_A_R, 17 TD_DST_A_R,
18 18
19 TD_RAL_LAL,
20 TD_RAL_RGU, 19 TD_RAL_RGU,
21 TD_RCT_RSF, 20 TD_RCT_RSF,
22 TD_RSF_RCT, 21 TD_RSF_RCT,
23 22
24 TD_LSFT_FN, 23 TD_LSFT_FN,
25 TD_RCTL_FN, 24 TD_RCTL_FN,
25
26 TD_FN_RCTL, 26 TD_FN_RCTL,
27}; 27};