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

Reply via email to