Mathew King has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/36654 )
Change subject: libpayload: keyboard: Ignore special keys ......................................................................
Patch Set 2:
(1 comment)
https://review.coreboot.org/c/coreboot/+/36654/2/payloads/libpayload/drivers... File payloads/libpayload/drivers/i8042/keyboard.c:
https://review.coreboot.org/c/coreboot/+/36654/2/payloads/libpayload/drivers... PS2, Line 241: switch (ch) { : case 0xb: : ret = KEY_F(12); : break; : case 0x5e: : ret = POWER_BUTTON; : break; : case 0x4b: : ret = KEY_LEFT; : break; : case 0x4d: : ret = KEY_RIGHT; : break; : case 0x48: : ret = KEY_UP; : break; : case 0x50: : ret = KEY_DOWN; : break; : default: : ret = 0; : } We don't want to hard code this list for everyone it will be different on each platform.
My thought is to have a mapping that can be passed into the keyboard handler on a per board basis in depthcharge.
something like
struct keyboard_media_key_mapping { const int map[256]; }
const struct keyboard_media_key_mapping *media_key_mapping;
void keyboard_set_media_key_map(const struct keyboard_media_key_mapping *map) { media_key_mapping = map; }
Then in depthcharge in board.c
const struct keyboard_media_key_mapping media_key_mapping = { .map = { [0x0b] = KEY_F(12), [0x5e] = POWER_BUTTON, ... } };
....
keyboard_set_media_key_map(&media_key_mapping);
I think I have my consts and struct initialization correct.