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