The keyboard layout seems to be fixed for me. Vivaldi is indeed problematic; I removed line 43 of board.h in board/banshee to avoid using it:
#define CONFIG_KEYBOARD_VIVALDI
and then in keyboard_customization.c in board/banshee, replace the scancode_set2 matrix with the one from hx30:
uint16_t scancode_set2[KEYBOARD_COLS_MAX][KEYBOARD_ROWS] = {
{0x0021, 0x007B, 0x0079, 0x0072, 0x007A, 0x0071, 0x0069, 0xe04A},
{0xe071, 0xe070, 0x007D, 0xe01f, 0x006c, 0xe06c, 0xe07d, 0x0077},
{0x0015, 0x0070, 0x00ff, 0x000D, 0x000E, 0x0016, 0x0067, 0x001c},
{0xe011, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
{0xe05a, 0x0029, 0x0024, 0x000c, 0x0058, 0x0026, 0x0004, 0xe07a},
{0x0022, 0x001a, 0x0006, 0x0005, 0x001b, 0x001e, 0x001d, 0x0076},
{0x002A, 0x0032, 0x0034, 0x002c, 0x002e, 0x0025, 0x002d, 0x002b},
{0x003a, 0x0031, 0x0033, 0x0035, 0x0036, 0x003d, 0x003c, 0x003b},
{0x0049, 0xe072, 0x005d, 0x0044, 0x0009, 0x0046, 0x0078, 0x004b},
{0x0059, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
{0x0041, 0x007c, 0x0083, 0x000b, 0x0003, 0x003e, 0x0043, 0x0042},
{0x0013, 0x0064, 0x0075, 0x0001, 0x0051, 0x0061, 0xe06b, 0xe02f},
{0xe014, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
{0x004a, 0xe075, 0x004e, 0x0007, 0x0045, 0x004d, 0x0054, 0x004c},
{0x0052, 0x005a, 0xe03c, 0xe069, 0x0055, 0x0066, 0x005b, 0x0023},
{0x006a, 0x000a, 0xe074, 0xe054, 0x0000, 0x006b, 0x0073, 0x0074},
};
The output of evtest seems to confirm this was at least partially succesful:
Event: time 1758404694.930867, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1758404694.930867, -------------- SYN_REPORT ------------
Event: time 1758404695.944722, type 1 (EV_KEY), code 1 (KEY_ESC), value 1
Event: time 1758404695.944722, -------------- SYN_REPORT ------------
^[Event: time 1758404696.026767, type 1 (EV_KEY), code 1 (KEY_ESC), value 0
Event: time 1758404696.026767, -------------- SYN_REPORT ------------
Event: time 1758404696.325733, type 1 (EV_KEY), code 59 (KEY_F1), value 1
Event: time 1758404696.325733, -------------- SYN_REPORT ------------
^[OPEvent: time 1758404696.452880, type 1 (EV_KEY), code 59 (KEY_F1), value 0
Event: time 1758404696.452880, -------------- SYN_REPORT ------------
Event: time 1758404696.716804, type 1 (EV_KEY), code 60 (KEY_F2), value 1
Event: time 1758404696.716804, -------------- SYN_REPORT ------------
^[OQEvent: time 1758404696.795247, type 1 (EV_KEY), code 60 (KEY_F2), value 0
Event: time 1758404696.795247, -------------- SYN_REPORT ------------
Event: time 1758404697.086872, type 1 (EV_KEY), code 61 (KEY_F3), value 1
Event: time 1758404697.086872, -------------- SYN_REPORT ------------
^[OREvent: time 1758404697.181376, type 1 (EV_KEY), code 61 (KEY_F3), value 0
Event: time 1758404697.181376, -------------- SYN_REPORT ------------
Event: time 1758404697.402350, type 1 (EV_KEY), code 62 (KEY_F4), value 1
Event: time 1758404697.402350, -------------- SYN_REPORT ------------
^[OSEvent: time 1758404697.503945, type 1 (EV_KEY), code 62 (KEY_F4), value 0
Event: time 1758404697.503945, -------------- SYN_REPORT ------------
Event: time 1758404697.737995, type 1 (EV_KEY), code 63 (KEY_F5), value 1
Event: time 1758404697.737995, -------------- SYN_REPORT ------------
^[[15~Event: time 1758404697.802600, type 1 (EV_KEY), code 63 (KEY_F5), value0
Event: time 1758404697.802600, -------------- SYN_REPORT ------------
Event: time 1758404698.188745, type 1 (EV_KEY), code 64 (KEY_F6), value 1
Event: time 1758404698.188745, -------------- SYN_REPORT ------------
^[[17~Event: time 1758404698.290089, type 1 (EV_KEY), code 64 (KEY_F6), value0
Event: time 1758404698.290089, -------------- SYN_REPORT ------------
Event: time 1758404698.522865, type 1 (EV_KEY), code 65 (KEY_F7), value 1
Event: time 1758404698.522865, -------------- SYN_REPORT ------------
^[[18~Event: time 1758404698.612872, type 1 (EV_KEY), code 65 (KEY_F7), value0
Event: time 1758404698.612872, -------------- SYN_REPORT ------------
Event: time 1758404698.821763, type 1 (EV_KEY), code 66 (KEY_F8), value 1
Event: time 1758404698.821763, -------------- SYN_REPORT ------------
^[[19~Event: time 1758404698.896393, type 1 (EV_KEY), code 66 (KEY_F8), value0
Event: time 1758404698.896393, -------------- SYN_REPORT ------------
Event: time 1758404699.264084, type 1 (EV_KEY), code 67 (KEY_F9), value 1
Event: time 1758404699.264084, -------------- SYN_REPORT ------------
^[[20~Event: time 1758404699.350030, type 1 (EV_KEY), code 67 (KEY_F9), value0
Event: time 1758404699.350030, -------------- SYN_REPORT ------------
Event: time 1758404699.647561, type 1 (EV_KEY), code 68 (KEY_F10), value 1
Event: time 1758404699.647561, -------------- SYN_REPORT ------------
^[[21~Event: time 1758404699.756267, type 1 (EV_KEY), code 68 (KEY_F10), value 0
Event: time 1758404699.756267, -------------- SYN_REPORT ------------
Event: time 1758404700.163409, type 1 (EV_KEY), code 87 (KEY_F11), value 1
Event: time 1758404700.163409, -------------- SYN_REPORT ------------
^[[23~Event: time 1758404700.323213, type 1 (EV_KEY), code 87 (KEY_F11), value 0
Event: time 1758404700.323213, -------------- SYN_REPORT ------------
Event: time 1758404700.676415, type 1 (EV_KEY), code 88 (KEY_F12), value 1
Event: time 1758404700.676415, -------------- SYN_REPORT ------------
^[[24~Event: time 1758404700.792431, type 1 (EV_KEY), code 88 (KEY_F12), value 0
Event: time 1758404700.792431, -------------- SYN_REPORT ------------
Event: time 1758404702.243608, type 1 (EV_KEY), code 88 (KEY_F12), value 1
Event: time 1758404702.243608, -------------- SYN_REPORT ------------
^[[24~Event: time 1758404702.374220, type 1 (EV_KEY), code 88 (KEY_F12), value 0
Event: time 1758404702.374220, -------------- SYN_REPORT ------------
Event: time 1758404703.129257, type 1 (EV_KEY), code 111 (KEY_DELETE), value 1
Event: time 1758404703.129257, -------------- SYN_REPORT ------------
^[[3~Event: time 1758404703.230498, type 1 (EV_KEY), code 111 (KEY_DELETE), value 0
Event: time 1758404703.230498, -------------- SYN_REPORT ------------
Certainly remains to be seen if the removal of vivaldi will cause other issues. More work needs to be done to get the function key to work properly; it currently does not register key presses.