Hello. I have been missing the ability to have my Shift + {up,down,left,right} arrows picked up and represented by the usual character sequence in e.g. xterm's terminfo. Here is a diff I have been using to that end, hoping that it will be of interest and usefulness for others in this list.
P.S. I have also implemented ctrl+arrow keys support, but I'd like to present them in a separate, incremental fashion, excited to share this with the list. Index: dev/pckbc/wskbdmap_mfii.c =================================================================== RCS file: /cvs/src/sys/dev/pckbc/wskbdmap_mfii.c,v retrieving revision 1.48 diff -u -p -r1.48 wskbdmap_mfii.c --- dev/pckbc/wskbdmap_mfii.c 23 Jan 2023 09:36:40 -0000 1.48 +++ dev/pckbc/wskbdmap_mfii.c 9 Jul 2023 22:44:05 -0000 @@ -156,12 +156,12 @@ static const keysym_t pckbd_keydesc_us[] KC(198), KS_Cmd_ResetClose, /* CTL-Break */ #endif KC(199), KS_Home, - KC(200), KS_Up, + KC(200), KS_Up, KS_ShiftUp, KC(201), KS_Cmd_ScrollBack, KS_Prior, - KC(203), KS_Left, - KC(205), KS_Right, + KC(203), KS_Left, KS_ShiftLeft, + KC(205), KS_Right, KS_ShiftRight, KC(207), KS_End, - KC(208), KS_Down, + KC(208), KS_Down, KS_ShiftDown, KC(209), KS_Cmd_ScrollFwd, KS_Next, KC(210), KS_Insert, KC(211), KS_Cmd_KbdReset, KS_KP_Delete, Index: dev/usb/ukbdmap.c =================================================================== RCS file: /cvs/src/sys/dev/usb/ukbdmap.c,v retrieving revision 1.47 diff -u -p -r1.47 ukbdmap.c --- dev/usb/ukbdmap.c 23 Jan 2023 09:38:03 -0000 1.47 +++ dev/usb/ukbdmap.c 9 Jul 2023 22:44:28 -0000 @@ -128,10 +128,10 @@ static const keysym_t ukbd_keydesc_us[] KC(76), KS_Cmd_KbdReset,KS_KP_Delete, KC(77), KS_End, KC(78), KS_Cmd_ScrollFwd,KS_Next, - KC(79), KS_Right, - KC(80), KS_Left, - KC(81), KS_Down, - KC(82), KS_Up, + KC(79), KS_Right, KS_ShiftRight, + KC(80), KS_Left, KS_ShiftLeft, + KC(81), KS_Down, KS_ShiftDown, + KC(82), KS_Up, KS_ShiftUp, KC(83), KS_Num_Lock, KC(84), KS_KP_Divide, KC(85), KS_KP_Multiply, Index: dev/wscons/wsemul_vt100_keys.c =================================================================== RCS file: /cvs/src/sys/dev/wscons/wsemul_vt100_keys.c,v retrieving revision 1.9 diff -u -p -r1.9 wsemul_vt100_keys.c --- dev/wscons/wsemul_vt100_keys.c 23 Jan 2023 09:36:40 -0000 1.9 +++ dev/wscons/wsemul_vt100_keys.c 9 Jul 2023 22:45:20 -0000 @@ -213,6 +229,18 @@ wsemul_vt100_translate(void *cookie, kbd else *out = "\033[C"; return (3); + case KS_ShiftUp: + *out = "\033[1;2A"; + return (6); + case KS_ShiftDown: + *out = "\033[1;2B"; + return (6); + case KS_ShiftLeft: + *out = "\033[1;2D"; + return (6); + case KS_ShiftRight: + *out = "\033[1;2C"; + return (6); } return (0); } Index: dev/wscons/wsksymdef.h =================================================================== RCS file: /cvs/src/sys/dev/wscons/wsksymdef.h,v retrieving revision 1.40 diff -u -p -r1.40 wsksymdef.h --- dev/wscons/wsksymdef.h 23 Jan 2023 09:36:40 -0000 1.40 +++ dev/wscons/wsksymdef.h 9 Jul 2023 22:45:38 -0000 @@ -627,6 +627,10 @@ #define KS_Paste 0xf394 #define KS_Cut 0xf395 #define KS_Backtab 0xf396 +#define KS_ShiftUp 0xf397 +#define KS_ShiftDown 0xf398 +#define KS_ShiftLeft 0xf399 +#define KS_ShiftRight 0xf39a #define KS_Menu 0xf3c0 #define KS_Pause 0xf3c1