Module Name:    src
Committed By:   mlelstv
Date:           Sun Sep 13 07:35:15 UTC 2020

Modified Files:
        src/sbin/wsconsctl: keyboard.c
        src/share/man/man4: wskbd.4

Log Message:
Document keyboard mode ioctls and let wsconsctl manage it.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sbin/wsconsctl/keyboard.c
cvs rdiff -u -r1.22 -r1.23 src/share/man/man4/wskbd.4

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/wsconsctl/keyboard.c
diff -u src/sbin/wsconsctl/keyboard.c:1.10 src/sbin/wsconsctl/keyboard.c:1.11
--- src/sbin/wsconsctl/keyboard.c:1.10	Fri Nov 23 06:31:57 2018
+++ src/sbin/wsconsctl/keyboard.c	Sun Sep 13 07:35:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: keyboard.c,v 1.10 2018/11/23 06:31:57 mlelstv Exp $ */
+/*	$NetBSD: keyboard.c,v 1.11 2020/09/13 07:35:15 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
@@ -58,9 +58,11 @@ static struct wskbd_scroll_data scroll;
 static int ledstate;
 static kbd_t kbdencoding;
 static int havescroll = 1;
+static int kbmode;
 
 struct field keyboard_field_tab[] = {
     { "type",			&kbtype,	FMT_KBDTYPE,	FLG_RDONLY },
+    { "mode",			&kbmode,	FMT_UINT,	FLG_MODIFY },
     { "bell.pitch",		&bell.pitch,	FMT_UINT,	FLG_MODIFY },
     { "bell.period",		&bell.period,	FMT_UINT,	FLG_MODIFY },
     { "bell.volume",		&bell.volume,	FMT_UINT,	FLG_MODIFY },
@@ -114,6 +116,11 @@ keyboard_get_values(int fd)
 		if (ioctl(fd, WSKBDIO_GTYPE, &kbtype) < 0)
 			err(EXIT_FAILURE, "WSKBDIO_GTYPE");
 
+	if (field_by_value(&kbmode)->flags & FLG_GET) {
+		ioctl(fd, WSKBDIO_GETMODE, &kbmode);
+		/* Optional; don't complain. */
+	}
+
 	bell.which = 0;
 	if (field_by_value(&bell.pitch)->flags & FLG_GET)
 		bell.which |= WSKBD_BELL_DOPITCH;
@@ -192,6 +199,12 @@ void
 keyboard_put_values(int fd)
 {
 
+	if (field_by_value(&kbmode)->flags & FLG_SET) {
+		if (ioctl(fd, WSKBDIO_SETMODE, &kbmode) == 0)
+			err(EXIT_FAILURE, "WSKBDIO_SETMODE");
+		pr_field(field_by_value(&kbmode), " -> ");
+	}
+
 	bell.which = 0;
 	if (field_by_value(&bell.pitch)->flags & FLG_SET)
 		bell.which |= WSKBD_BELL_DOPITCH;

Index: src/share/man/man4/wskbd.4
diff -u src/share/man/man4/wskbd.4:1.22 src/share/man/man4/wskbd.4:1.23
--- src/share/man/man4/wskbd.4:1.22	Mon Jul 13 14:11:16 2020
+++ src/share/man/man4/wskbd.4	Sun Sep 13 07:35:15 2020
@@ -1,4 +1,4 @@
-.\" $NetBSD: wskbd.4,v 1.22 2020/07/13 14:11:16 uwe Exp $
+.\" $NetBSD: wskbd.4,v 1.23 2020/09/13 07:35:15 mlelstv Exp $
 .\"
 .\" Copyright (c) 1999
 .\" 	Matthias Drochner.  All rights reserved.
@@ -229,6 +229,10 @@ Their definitions are found in
 .Bl -tag -width Dv
 .It Dv WSKBDIO_GTYPE
 Get the keyboard type.
+.It Dv WSKBDIO_GETMODE
+Get the keyboard mode, 0 means translated through keyboard map, 1 means raw.
+.It Dv WSKBDIO_SETMODE
+Set the keyboard mode.
 .It Dv WSKBDIO_COMPLEXBELL , WSKBDIO_SETBELL , WSKBDIO_GETBELL , WSKBDIO_SETDEFAULTBELL , WSKBDIO_GETDEFAULTBELL Pq Vt "struct wsmouse_repeat"
 Get and set keyboard bell settings.
 .It Dv WSKBDIO_SETKEYREPEAT , WSKBDIO_GETKEYREPEAT , WSKBDIO_SETDEFAULTKEYREPEAT , WSKBDIO_GETDEFAULTKEYREPEAT Pq Vt "struct wskbd_keyrepeat_data"

Reply via email to