From 1647c5fc32b17f073710a8a44f8fa66964738d0b Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Mon, 28 May 2012 15:30:17 +0200 Subject: [PATCH] vte: handle F1-F20 correctly F1-F4 are mapped to the keypad keys as these keys were not available on VT220. F5 is special mapped and F6-F20 correspond to the same keys on the keyboards for VT220. Signed-off-by: David Herrmann --- src/vte.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/vte.c b/src/vte.c index 294335d..aaf9c75 100644 --- a/src/vte.c +++ b/src/vte.c @@ -1312,18 +1312,22 @@ int kmscon_vte_handle_keyboard(struct kmscon_vte *vte, *len = 1; } return KMSCON_VTE_SEND; + case XK_F1: case XK_KP_F1: *u8 = "\eOP"; *len = 3; return KMSCON_VTE_SEND; + case XK_F2: case XK_KP_F2: *u8 = "\eOQ"; *len = 3; return KMSCON_VTE_SEND; + case XK_F3: case XK_KP_F3: *u8 = "\eOR"; *len = 3; return KMSCON_VTE_SEND; + case XK_F4: case XK_KP_F4: *u8 = "\eOS"; *len = 3; @@ -1346,6 +1350,70 @@ int kmscon_vte_handle_keyboard(struct kmscon_vte *vte, *u8 = "\e[F"; *len = 3; return KMSCON_VTE_SEND; + case XK_F5: + *u8 = "\e[15~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F6: + *u8 = "\e[17~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F7: + *u8 = "\e[18~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F8: + *u8 = "\e[19~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F9: + *u8 = "\e[20~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F10: + *u8 = "\e[21~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F11: + *u8 = "\e[23~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F12: + *u8 = "\e[24~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F13: + *u8 = "\e[25~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F14: + *u8 = "\e[26~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F15: + *u8 = "\e[28~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F16: + *u8 = "\e[29~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F17: + *u8 = "\e[31~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F18: + *u8 = "\e[32~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F19: + *u8 = "\e[33~"; + *len = 5; + return KMSCON_VTE_SEND; + case XK_F20: + *u8 = "\e[34~"; + *len = 5; + return KMSCON_VTE_SEND; } if (ev->unicode != UTERM_INPUT_INVALID) { -- 2.7.4