From 50e0bdab0012c96736f2a9fe7ef88802c6839e20 Mon Sep 17 00:00:00 2001 From: moyi4681 Date: Mon, 22 Apr 2019 00:33:36 +0800 Subject: [Keyboard] dz60rgb: update default keymap (#5661) * Update keymap.c * Update config.h * Update dz60rgb.c * Update keymap.c --- keyboards/dztech/dz60rgb/dz60rgb.c | 113 ++++--------------------------------- 1 file changed, 12 insertions(+), 101 deletions(-) (limited to 'keyboards/dztech/dz60rgb/dz60rgb.c') diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c index 99e3b5646f..a6825e750f 100644 --- a/keyboards/dztech/dz60rgb/dz60rgb.c +++ b/keyboards/dztech/dz60rgb/dz60rgb.c @@ -1,14 +1,7 @@ #include "dz60rgb.h" #include "config.h" #if defined (dzrgb60_iso) - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ {0, K_14, J_14, L_14}, {0, K_13, J_13, L_13}, {0, K_12, J_12, L_12}, @@ -23,7 +16,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, K_3, J_3, L_3}, {0, K_2, J_2, L_2}, {0, K_1, J_1, L_1}, - {0, H_15, G_15, I_15}, {0, H_13, G_13, I_13}, {0, H_12, G_12, I_12}, @@ -38,7 +30,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, H_3, G_3, I_3}, {0, H_2, G_2, I_2}, {0, H_1, G_1, I_1}, - {0, B_14, A_14, C_14}, {0, E_12, D_12, F_12}, {0, E_11, D_11, F_11}, @@ -52,7 +43,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, E_3, D_3, F_3}, {0, E_2, D_2, F_2}, {0, E_1, D_1, F_1}, - {0, B_13, A_13, C_13}, {0, B_11, A_11, C_11}, {0, B_10, A_10, C_10}, @@ -65,7 +55,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_3, A_3, C_3}, {0, B_2, A_2, C_2}, {0, B_1, A_1, C_1}, - {0, B_15, A_15, C_15}, {0, E_13, D_13, F_13}, {0, B_12, A_12, C_12}, @@ -73,9 +62,8 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_16, A_16, C_16}, {0, E_16, D_16, F_16}, {0, H_16, G_16, I_16}, - {0, K_16, J_16, L_16} + {0, K_16, J_16, L_16}, }; - const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(13<<4)}, {16*13.5, 0}, 1}, {{0|(12<<4)}, {16*12, 0}, 1}, @@ -91,7 +79,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(2<<4)}, {16*2, 0}, 1}, {{0|(1<<4)}, {16*1, 0}, 1}, {{0|(0<<4)}, {16*0, 0}, 1}, - {{2|(13<<4)}, {16*13.75, 24}, 1}, {{1|(12<<4)}, {16*12.5, 16}, 0}, {{1|(11<<4)}, {16*11.5, 16}, 0}, @@ -106,7 +93,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{1|(2<<4)}, { 16*2.5, 16}, 0}, {{1|(1<<4)}, { 16*1.5, 16}, 0}, {{1|(0<<4)}, { 16*0.25, 16}, 1}, - {{1|(13<<4)}, {16*12.75, 32}, 1}, {{2|(11<<4)}, {16*11.75, 32}, 0}, {{2|(10<<4)}, {16*10.75, 32}, 0}, @@ -120,7 +106,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(2<<4)}, { 16*2.75, 32}, 0}, {{2|(1<<4)}, { 16*1.75, 32}, 0}, {{2|(0<<4)}, { 16*0.375, 32}, 1}, - {{3|(11<<4)}, {16*13.125, 48}, 1}, {{3|(10<<4)}, {16*11.25, 48}, 0}, {{3|(9<<4)}, {16*10.25, 48}, 0}, @@ -133,7 +118,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{3|(2<<4)}, {16*3.25, 48}, 0}, {{3|(1<<4)}, {16*1.25, 48}, 0}, {{3|(0<<4)}, {16*0.625, 48}, 1}, - {{4|(13<<4)}, {16*13.875, 64}, 1}, {{4|(11<<4)}, {16*12.625, 64}, 1}, {{4|(10<<4)}, {16*11.375, 64}, 1}, @@ -141,21 +125,10 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{4|(5<<4)}, { 16*6.375, 64}, 0}, {{4|(2<<4)}, { 16*2.625, 64}, 1}, {{4|(1<<4)}, { 16*1.375, 64}, 1}, - {{4|(0<<4)}, { 16*0.125, 64}, 1} - + {{4|(0<<4)}, { 16*0.125, 64}, 1}, }; - - - #elif defined (dzrgb60_hhkb) - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ {0, H_15, G_15, I_15}, {0, K_14, J_14, L_14}, {0, K_13, J_13, L_13}, @@ -171,7 +144,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, K_3, J_3, L_3}, {0, K_2, J_2, L_2}, {0, K_1, J_1, L_1}, - {0, H_14, G_14, I_14}, {0, H_13, G_13, I_13}, {0, H_12, G_12, I_12}, @@ -186,7 +158,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, H_3, G_3, I_3}, {0, H_2, G_2, I_2}, {0, H_1, G_1, I_1}, - {0, E_14, D_14, F_14}, {0, E_12, D_12, F_12}, {0, E_11, D_11, F_11}, @@ -200,7 +171,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, E_3, D_3, F_3}, {0, E_2, D_2, F_2}, {0, E_1, D_1, F_1}, - {0, B_14, A_14, C_14}, {0, B_13, A_13, C_13}, {0, B_11, A_11, C_11}, @@ -214,16 +184,14 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_3, A_3, C_3}, {0, B_2, A_2, C_2}, {0, B_1, A_1, C_1}, - {0, B_15, A_15, C_15}, {0, E_13, D_13, F_13}, {0, B_12, A_12, C_12}, {0, B_16, A_16, C_16}, {0, E_16, D_16, F_16}, {0, H_16, G_16, I_16}, - {0, K_16, J_16, L_16} + {0, K_16, J_16, L_16}, }; - const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(12<<4)}, {16*14, 0}, 1}, {{0|(13<<4)}, {16*13, 0}, 1}, @@ -240,7 +208,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(2<<4)}, {16*2, 0}, 1}, {{0|(1<<4)}, {16*1, 0}, 1}, {{0|(0<<4)}, {16*0, 0}, 1}, - {{1|(13<<4)}, {16*13.75, 16}, 1}, {{1|(12<<4)}, {16*12.5, 16}, 0}, {{1|(11<<4)}, {16*11.5, 16}, 0}, @@ -255,7 +222,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{1|(2<<4)}, { 16*2.5, 16}, 0}, {{1|(1<<4)}, { 16*1.5, 16}, 0}, {{1|(0<<4)}, { 16*0.25, 16}, 1}, - {{2|(13<<4)}, {16*12.75, 32}, 1}, {{2|(11<<4)}, {16*11.75, 32}, 0}, {{2|(10<<4)}, {16*10.75, 32}, 0}, @@ -269,7 +235,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(2<<4)}, { 16*2.75, 32}, 0}, {{2|(1<<4)}, { 16*1.75, 32}, 0}, {{2|(0<<4)}, { 16*0.375, 32}, 1}, - {{3|(13<<4)}, {16*14, 48}, 1}, {{3|(11<<4)}, {16*12.625, 48}, 0}, {{3|(10<<4)}, {16*11.25, 48}, 0}, @@ -283,24 +248,16 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{3|(2<<4)}, {16*3.25, 48}, 0}, {{3|(1<<4)}, {16*1.25, 48}, 0}, {{3|(0<<4)}, {16*0.625, 48}, 1}, - {{4|(13<<4)}, {16*13.625, 64}, 1}, {{4|(11<<4)}, {16*12.375, 64}, 1}, {{4|(10<<4)}, {16*11.125, 64}, 1}, {{4|(5<<4)}, { 16*7, 64}, 0}, {{4|(2<<4)}, { 16*2.875, 64}, 1}, {{4|(1<<4)}, { 16*1.625, 64}, 1}, - {{4|(0<<4)}, { 16*0.375, 64}, 1} - + {{4|(0<<4)}, { 16*0.375, 64}, 1}, }; #elif defined (dzrgb60_hhkb_iso) const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ {0, H_15, G_15, I_15}, {0, K_14, J_14, L_14}, {0, K_13, J_13, L_13}, @@ -316,7 +273,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, K_3, J_3, L_3}, {0, K_2, J_2, L_2}, {0, K_1, J_1, L_1}, - {0, K_15, J_15, L_15}, {0, H_13, G_13, I_13}, {0, H_12, G_12, I_12}, @@ -331,7 +287,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, H_3, G_3, I_3}, {0, H_2, G_2, I_2}, {0, H_1, G_1, I_1}, - {0, E_15, D_15, F_15}, {0, E_12, D_12, F_12}, {0, E_11, D_11, F_11}, @@ -345,7 +300,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, E_3, D_3, F_3}, {0, E_2, D_2, F_2}, {0, E_1, D_1, F_1}, - {0, B_14, A_14, C_14}, {0, B_13, A_13, C_13}, {0, B_11, A_11, C_11}, @@ -359,16 +313,14 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_3, A_3, C_3}, {0, B_2, A_2, C_2}, {0, B_1, A_1, C_1}, - {0, B_15, A_15, C_15}, {0, E_13, D_13, F_13}, {0, B_12, A_12, C_12}, {0, B_16, A_16, C_16}, {0, E_16, D_16, F_16}, {0, H_16, G_16, I_16}, - {0, K_16, J_16, L_16} + {0, K_16, J_16, L_16}, }; - const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(12<<4)}, {16*14, 0}, 1}, {{0|(13<<4)}, {16*13, 0}, 1}, @@ -385,7 +337,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(2<<4)}, {16*2, 0}, 1}, {{0|(1<<4)}, {16*1, 0}, 1}, {{0|(0<<4)}, {16*0, 0}, 1}, - {{2|(13<<4)}, {16*13.75, 24}, 1}, {{1|(12<<4)}, {16*12.5, 16}, 0}, {{1|(11<<4)}, {16*11.5, 16}, 0}, @@ -400,7 +351,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{1|(2<<4)}, { 16*2.5, 16}, 0}, {{1|(1<<4)}, { 16*1.5, 16}, 0}, {{1|(0<<4)}, { 16*0.25, 16}, 1}, - {{1|(13<<4)}, {16*12.75, 32}, 1}, {{2|(11<<4)}, {16*11.75, 32}, 0}, {{2|(10<<4)}, {16*10.75, 32}, 0}, @@ -414,7 +364,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(2<<4)}, { 16*2.75, 32}, 0}, {{2|(1<<4)}, { 16*1.75, 32}, 0}, {{2|(0<<4)}, { 16*0.375, 32}, 1}, - {{3|(13<<4)}, {16*14, 48}, 1}, {{3|(11<<4)}, {16*12.625, 48}, 0}, {{3|(10<<4)}, {16*11.25, 48}, 0}, @@ -428,24 +377,16 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{3|(2<<4)}, {16*3.25, 48}, 0}, {{3|(1<<4)}, {16*1.25, 48}, 0}, {{3|(0<<4)}, {16*0.625, 48}, 1}, - {{4|(13<<4)}, {16*13.625, 64}, 1}, {{4|(11<<4)}, {16*12.375, 64}, 1}, {{4|(10<<4)}, {16*11.125, 64}, 1}, {{4|(5<<4)}, { 16*7, 64}, 0}, {{4|(2<<4)}, { 16*2.875, 64}, 1}, {{4|(1<<4)}, { 16*1.625, 64}, 1}, - {{4|(0<<4)}, { 16*0.375, 64}, 1} - + {{4|(0<<4)}, { 16*0.375, 64}, 1}, }; #elif defined (dzrgb60_ansi) const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ {0, K_14, J_14, L_14}, {0, K_13, J_13, L_13}, {0, K_12, J_12, L_12}, @@ -460,7 +401,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, K_3, J_3, L_3}, {0, K_2, J_2, L_2}, {0, K_1, J_1, L_1}, - {0, H_14, G_14, I_14}, {0, H_13, G_13, I_13}, {0, H_12, G_12, I_12}, @@ -475,7 +415,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, H_3, G_3, I_3}, {0, H_2, G_2, I_2}, {0, H_1, G_1, I_1}, - {0, E_14, D_14, F_14}, {0, E_12, D_12, F_12}, {0, E_11, D_11, F_11}, @@ -489,7 +428,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, E_3, D_3, F_3}, {0, E_2, D_2, F_2}, {0, E_1, D_1, F_1}, - {0, B_13, A_13, C_13}, {0, B_11, A_11, C_11}, {0, B_10, A_10, C_10}, @@ -502,7 +440,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_3, A_3, C_3}, {0, B_2, A_2, C_2}, {0, B_1, A_1, C_1}, - {0, B_15, A_15, C_15}, {0, E_13, D_13, F_13}, {0, B_12, A_12, C_12}, @@ -510,9 +447,8 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_16, A_16, C_16}, {0, E_16, D_16, F_16}, {0, H_16, G_16, I_16}, - {0, K_16, J_16, L_16} + {0, K_16, J_16, L_16}, }; - const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(13<<4)}, {16*13.5, 0}, 1}, {{0|(12<<4)}, {16*12, 0}, 1}, @@ -528,7 +464,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(2<<4)}, {16*2, 0}, 1}, {{0|(1<<4)}, {16*1, 0}, 1}, {{0|(0<<4)}, {16*0, 0}, 1}, - {{1|(13<<4)}, {16*13.75, 16}, 1}, {{1|(12<<4)}, {16*12.5, 16}, 0}, {{1|(11<<4)}, {16*11.5, 16}, 0}, @@ -543,7 +478,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{1|(2<<4)}, { 16*2.5, 16}, 0}, {{1|(1<<4)}, { 16*1.5, 16}, 0}, {{1|(0<<4)}, { 16*0.25, 16}, 1}, - {{2|(13<<4)}, {16*13.375, 24}, 1}, {{2|(11<<4)}, {16*11.75, 32}, 0}, {{2|(10<<4)}, {16*10.75, 32}, 0}, @@ -557,7 +491,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(2<<4)}, { 16*2.75, 32}, 0}, {{2|(1<<4)}, { 16*1.75, 32}, 0}, {{2|(0<<4)}, { 16*0.375, 32}, 1}, - {{3|(11<<4)}, {16*13.125, 48}, 1}, {{3|(10<<4)}, {16*11.25, 48}, 0}, {{3|(9<<4)}, {16*10.25, 48}, 0}, @@ -570,7 +503,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{3|(2<<4)}, {16*3.25, 48}, 0}, {{3|(1<<4)}, {16*1.25, 48}, 0}, {{3|(0<<4)}, {16*0.625, 48}, 1}, - {{4|(13<<4)}, {16*13.875, 64}, 1}, {{4|(11<<4)}, {16*12.625, 64}, 1}, {{4|(10<<4)}, {16*11.375, 64}, 1}, @@ -578,17 +510,10 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{4|(5<<4)}, { 16*6.375, 64}, 0}, {{4|(2<<4)}, { 16*2.625, 64}, 1}, {{4|(1<<4)}, { 16*1.375, 64}, 1}, - {{4|(0<<4)}, { 16*0.125, 64}, 1} + {{4|(0<<4)}, { 16*0.125, 64}, 1}, }; #else - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ {0, K_14, J_14, L_14}, {0, K_13, J_13, L_13}, {0, K_12, J_12, L_12}, @@ -603,7 +528,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, K_3, J_3, L_3}, {0, K_2, J_2, L_2}, {0, K_1, J_1, L_1}, - {0, H_14, G_14, I_14}, {0, H_13, G_13, I_13}, {0, H_12, G_12, I_12}, @@ -618,7 +542,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, H_3, G_3, I_3}, {0, H_2, G_2, I_2}, {0, H_1, G_1, I_1}, - {0, E_14, D_14, F_14}, {0, E_12, D_12, F_12}, {0, E_11, D_11, F_11}, @@ -632,7 +555,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, E_3, D_3, F_3}, {0, E_2, D_2, F_2}, {0, E_1, D_1, F_1}, - {0, B_14, A_14, C_14}, {0, B_13, A_13, C_13}, {0, B_11, A_11, C_11}, @@ -646,7 +568,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_3, A_3, C_3}, {0, B_2, A_2, C_2}, {0, B_1, A_1, C_1}, - {0, B_15, A_15, C_15}, {0, E_13, D_13, F_13}, {0, B_12, A_12, C_12}, @@ -655,9 +576,8 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_16, A_16, C_16}, {0, E_16, D_16, F_16}, {0, H_16, G_16, I_16}, - {0, K_16, J_16, L_16} + {0, K_16, J_16, L_16}, }; - const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(13<<4)}, {17.23*13, 0}, 1}, {{0|(12<<4)}, {17.23*12, 0}, 1}, @@ -673,7 +593,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{0|(2<<4)}, { 17.23*2, 0}, 1}, {{0|(1<<4)}, { 17.23*1, 0}, 1}, {{0|(0<<4)}, { 17.23*0, 0}, 1}, - {{1|(13<<4)}, {17.23*13, 16}, 1}, {{1|(12<<4)}, {17.23*12, 16}, 0}, {{1|(11<<4)}, {17.23*11, 16}, 0}, @@ -688,7 +607,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{1|(2<<4)}, { 17.23*2, 16}, 0}, {{1|(1<<4)}, { 17.23*1, 16}, 0}, {{1|(0<<4)}, { 17.23*0, 16}, 1}, - {{2|(13<<4)}, {17.23*13, 32}, 1}, {{2|(11<<4)}, {17.23*11, 32}, 0}, {{2|(10<<4)}, {17.23*10, 32}, 0}, @@ -702,7 +620,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{2|(2<<4)}, { 17.23*2, 32}, 0}, {{2|(1<<4)}, { 17.23*1, 32}, 0}, {{2|(0<<4)}, { 17.23*0, 32}, 1}, - {{3|(13<<4)}, {17.23*13, 48}, 1}, {{3|(11<<4)}, {17.23*11, 48}, 0}, {{3|(10<<4)}, {17.23*10, 48}, 0}, @@ -716,7 +633,6 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{3|(2<<4)}, { 17.23*2, 48}, 0}, {{3|(1<<4)}, { 17.23*1, 48}, 0}, {{3|(0<<4)}, { 17.23*0, 48}, 1}, - {{4|(13<<4)}, {17.23*13, 64}, 1}, {{4|(11<<4)}, {17.23*11, 64}, 1}, {{4|(10<<4)}, {17.23*10, 64}, 1}, @@ -725,32 +641,27 @@ const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { {{4|(5<<4)}, { 17.23*5, 64}, 0}, {{4|(2<<4)}, { 17.23*2, 64}, 1}, {{4|(1<<4)}, { 17.23*1, 64}, 1}, - {{4|(0<<4)}, { 17.23*0, 64}, 1} - + {{4|(0<<4)}, { 17.23*0, 64}, 1}, }; #endif void matrix_init_kb(void) { matrix_init_user(); } - - void matrix_scan_kb(void) { matrix_scan_user(); } - - bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_user(keycode, record); } - - void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); } void suspend_wakeup_init_kb(void) { rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); } -- cgit v1.2.3