diff options
Diffstat (limited to 'board/mithrax/keyboard.c')
-rw-r--r-- | board/mithrax/keyboard.c | 190 |
1 files changed, 187 insertions, 3 deletions
diff --git a/board/mithrax/keyboard.c b/board/mithrax/keyboard.c index f07b2dda17..6534c7bc63 100644 --- a/board/mithrax/keyboard.c +++ b/board/mithrax/keyboard.c @@ -6,7 +6,9 @@ #include "common.h" #include "ec_commands.h" #include "keyboard_scan.h" +#include "rgb_keyboard.h" #include "timer.h" +#include "tlc59116f.h" /* Keyboard scan setting */ __override struct keyboard_scan_config keyscan_config = { @@ -19,8 +21,8 @@ __override struct keyboard_scan_config keyscan_config = { .min_post_scan_delay_us = 1000, .poll_timeout_us = 100 * MSEC, .actual_key_mask = { - 0x1c, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, - 0xa4, 0xff, 0xfe, 0x55, 0xfe, 0xff, 0xff, 0xff, /* full set */ + 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x86, 0xff, 0xff, 0x55, 0xff, 0xff, 0xff, 0xff, /* full set */ }, }; @@ -38,11 +40,193 @@ static const struct ec_response_keybd_config mithrax_kb = { TK_VOL_DOWN, /* T9 */ TK_VOL_UP, /* T10 */ }, - .capabilities = KEYBD_CAP_SCRNLOCK_KEY | KEYBD_CAP_NUMERIC_KEYPAD, + .capabilities = KEYBD_CAP_SCRNLOCK_KEY, }; +static struct rgb_s grid0[RGB_GRID0_COL * RGB_GRID0_ROW]; + +struct rgbkbd rgbkbds[] = { + [0] = { + .cfg = &(const struct rgbkbd_cfg) { + .drv = &tlc59116f_drv, + .i2c = I2C_PORT_KBMCU, + .col_len = RGB_GRID0_COL, + .row_len = RGB_GRID0_ROW, + }, + .buf = grid0, + }, +}; +const uint8_t rgbkbd_count = ARRAY_SIZE(rgbkbds); + +const uint8_t rgbkbd_hsize = RGB_GRID0_COL; +const uint8_t rgbkbd_vsize = RGB_GRID0_ROW; + +#define LED(x, y) RGBKBD_COORD((x), (y)) +#define DELM RGBKBD_DELM +const uint8_t rgbkbd_map[] = { + DELM, /* 0: (null) */ + LED(0, 0), DELM, /* 1: ~ ` */ + LED(0, 0), DELM, /* 2: ! 1 */ + LED(0, 0), DELM, /* 3: @ 2 */ + LED(0, 0), DELM, /* 4: # 3 */ + LED(1, 0), DELM, /* 5: $ 4 */ + LED(1, 0), DELM, /* 6: % 5 */ + LED(1, 0), DELM, /* 7: ^ 6 */ + LED(2, 0), DELM, /* 8: & 7 */ + LED(2, 0), DELM, /* 9: * 8 */ + LED(2, 0), DELM, /* 10: ( 9 */ + LED(2, 0), DELM, /* 11: ) 0 */ + LED(2, 0), DELM, /* 12: _ - */ + LED(3, 0), DELM, /* 13: + = */ + DELM, /* 14: (null) */ + LED(3, 0), DELM, /* 15: backspace */ + LED(0, 0), DELM, /* 16: tab */ + LED(0, 0), DELM, /* 17: q */ + LED(0, 0), DELM, /* 18: w */ + LED(0, 0), DELM, /* 19: e */ + LED(1, 0), DELM, /* 20: r */ + LED(1, 0), DELM, /* 21: t */ + LED(1, 0), DELM, /* 22: y */ + LED(2, 0), DELM, /* 23: u */ + LED(2, 0), DELM, /* 24: i */ + LED(2, 0), DELM, /* 25: o */ + LED(2, 0), DELM, /* 26: p */ + LED(2, 0), DELM, /* 27: [ { */ + LED(3, 0), DELM, /* 28: ] } */ + LED(3, 0), DELM, /* 29: \ | */ + LED(0, 0), DELM, /* 30: caps lock */ + LED(0, 0), DELM, /* 31: a */ + LED(0, 0), DELM, /* 32: s */ + LED(0, 0), DELM, /* 33: d */ + LED(1, 0), DELM, /* 34: f */ + LED(1, 0), DELM, /* 35: g */ + LED(1, 0), DELM, /* 36: h */ + LED(2, 0), DELM, /* 37: j */ + LED(2, 0), DELM, /* 38: k */ + LED(2, 0), DELM, /* 39: l */ + LED(3, 0), DELM, /* 40: ; : */ + LED(3, 0), DELM, /* 41: " ' */ + DELM, /* 42: (null) */ + LED(3, 0), DELM, /* 43: enter */ + LED(0, 0), DELM, /* 44: L-shift */ + DELM, /* 45: (null) */ + LED(0, 0), DELM, /* 46: z */ + LED(0, 0), DELM, /* 47: x */ + LED(0, 0), DELM, /* 48: c */ + LED(1, 0), DELM, /* 49: v */ + LED(1, 0), DELM, /* 50: b */ + LED(1, 0), DELM, /* 51: n */ + LED(2, 0), DELM, /* 52: m */ + LED(2, 0), DELM, /* 53: , < */ + LED(2, 0), DELM, /* 54: . > */ + LED(3, 0), DELM, /* 55: / ? */ + DELM, /* 56: (null) */ + LED(3, 0), DELM, /* 57: R-shift */ + LED(0, 0), DELM, /* 58: L-ctrl */ + LED(3, 0), DELM, /* 59: power */ + LED(0, 0), DELM, /* 60: L-alt */ + LED(0, 0), LED(1, 0), + LED(2, 0), DELM, /* 61: space */ + LED(2, 0), DELM, /* 62: R-alt */ + DELM, /* 63: (null) */ + LED(2, 0), DELM, /* 64: R-ctrl */ + DELM, /* 65: (null) */ + DELM, /* 66: (null) */ + DELM, /* 67: (null) */ + DELM, /* 68: (null) */ + DELM, /* 69: (null) */ + DELM, /* 70: (null) */ + DELM, /* 71: (null) */ + DELM, /* 72: (null) */ + DELM, /* 73: (null) */ + DELM, /* 74: (null) */ + DELM, /* 75: (null) */ + DELM, /* 76: delete */ + DELM, /* 77: (null) */ + DELM, /* 78: (null) */ + LED(3, 0), DELM, /* 79: left */ + DELM, /* 80: home */ + DELM, /* 81: end */ + DELM, /* 82: (null) */ + LED(3, 0), DELM, /* 83: up */ + LED(3, 0), DELM, /* 84: down */ + DELM, /* 85: page up */ + DELM, /* 86: page down */ + DELM, /* 87: (null) */ + DELM, /* 88: (null) */ + LED(3, 0), DELM, /* 89: right */ + DELM, /* 90: (null) */ + DELM, /* 91: numpad 7 */ + DELM, /* 92: numpad 4 */ + DELM, /* 93: numpad 1 */ + DELM, /* 94: (null) */ + DELM, /* 95: numpad / */ + DELM, /* 96: numpad 8 */ + DELM, /* 97: numpad 5 */ + DELM, /* 98: numpad 2 */ + DELM, /* 99: numpad 0 */ + DELM, /* 100: numpad * */ + DELM, /* 101: numpad 9 */ + DELM, /* 102: numpad 6 */ + DELM, /* 103: numpad 3 */ + DELM, /* 104: numpad . */ + DELM, /* 105: numpad - */ + DELM, /* 106: numpad + */ + DELM, /* 107: (null) */ + DELM, /* 108: numpad enter */ + DELM, /* 109: (null) */ + LED(0, 0), DELM, /* 110: esc */ + LED(0, 0), DELM, /* T1: back */ + LED(0, 0), DELM, /* T2: refresh */ + LED(1, 0), DELM, /* T3: full screen */ + LED(1, 0), DELM, /* T4: overview */ + LED(1, 0), DELM, /* T5: snapshot */ + LED(2, 0), DELM, /* T6: brightness down */ + LED(2, 0), DELM, /* T7: brightness up */ + LED(2, 0), DELM, /* T8: mute */ + LED(2, 0), DELM, /* T9: volume down */ + LED(3, 0), DELM, /* T10: volume up */ + DELM, /* T11: (null) */ + DELM, /* T12: (null) */ + DELM, /* T13: (null) */ + DELM, /* T14: (null) */ + DELM, /* T15: (null) */ + DELM, /* 126: (null) */ + DELM, /* 127: (null) */ +}; +#undef LED +#undef DELM +const size_t rgbkbd_map_size = ARRAY_SIZE(rgbkbd_map); + __override const struct ec_response_keybd_config *board_vivaldi_keybd_config(void) { return &mithrax_kb; } + +/* + * Row Column info for Top row keys T1 - T15. + * on mithrax_kb keyboard Row Column is customization + * need define row col to mapping matrix layout. + */ +__override const struct key { + uint8_t row; + uint8_t col; +} vivaldi_keys[] = { + {.row = 4, .col = 2}, /* T1 */ + {.row = 3, .col = 2}, /* T2 */ + {.row = 2, .col = 2}, /* T3 */ + {.row = 1, .col = 2}, /* T4 */ + {.row = 4, .col = 4}, /* T5 */ + {.row = 3, .col = 4}, /* T6 */ + {.row = 2, .col = 4}, /* T7 */ + {.row = 2, .col = 9}, /* T8 */ + {.row = 1, .col = 9}, /* T9 */ + {.row = 1, .col = 4}, /* T10 */ + {.row = 0, .col = 4}, /* T11 */ + {.row = 1, .col = 5}, /* T12 */ + {.row = 3, .col = 5}, /* T13 */ + {.row = 2, .col = 1}, /* T14 */ + {.row = 0, .col = 1}, /* T15 */ +}; +BUILD_ASSERT(ARRAY_SIZE(vivaldi_keys) == MAX_TOP_ROW_KEYS); |