CVS commit: src/sys/dev/hid

2020-08-26 Thread Jaromir Dolecek
Module Name:src
Committed By:   jdolecek
Date:   Wed Aug 26 10:34:04 UTC 2020

Modified Files:
src/sys/dev/hid: hidkbdmap.c

Log Message:
for jp keymap map also scan code 49 to right bracket to handle ARCHISS model

PR kern/55608 by Shinichi Doyashiki


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/hid/hidkbdmap.c

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

Modified files:

Index: src/sys/dev/hid/hidkbdmap.c
diff -u src/sys/dev/hid/hidkbdmap.c:1.10 src/sys/dev/hid/hidkbdmap.c:1.11
--- src/sys/dev/hid/hidkbdmap.c:1.10	Mon Jul 13 09:44:48 2020
+++ src/sys/dev/hid/hidkbdmap.c	Wed Aug 26 10:34:03 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.10 2020/07/13 09:44:48 nia Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.11 2020/08/26 10:34:03 jdolecek Exp $	*/
 
 /*
  * Copyright (c) 1999,2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.10 2020/07/13 09:44:48 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.11 2020/08/26 10:34:03 jdolecek Exp $");
 
 #include 
 #include 
@@ -171,7 +171,8 @@ Static const keysym_t hidkbd_keydesc_jp[
 KC(46),			KS_asciicircum,		KS_asciitilde,
 KC(47),			KS_at,			KS_grave,
 KC(48),			KS_bracketleft,		KS_braceleft,
-KC(50),			KS_bracketright,	KS_braceright,
+KC(49), /* ARCHISS */	KS_bracketright,	KS_braceright,
+KC(50), /* other model */	KS_bracketright,	KS_braceright,
 KC(51),			KS_semicolon,		KS_plus,
 KC(52),			KS_colon,		KS_asterisk,
 KC(53), 			KS_Zenkaku_Hankaku, /* replace grave/tilde */



CVS commit: src/sys/dev/hid

2020-07-12 Thread Nia Alarie
Module Name:src
Committed By:   nia
Date:   Sun Jul 12 13:12:17 UTC 2020

Modified Files:
src/sys/dev/hid: hidkbdmap.c

Log Message:
Add KB_TR for uhid keyboards (it was PS/2 only, this seems wrong)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/hid/hidkbdmap.c

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

Modified files:

Index: src/sys/dev/hid/hidkbdmap.c
diff -u src/sys/dev/hid/hidkbdmap.c:1.6 src/sys/dev/hid/hidkbdmap.c:1.7
--- src/sys/dev/hid/hidkbdmap.c:1.6	Sun Jul 12 12:13:05 2020
+++ src/sys/dev/hid/hidkbdmap.c	Sun Jul 12 13:12:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.6 2020/07/12 12:13:05 nia Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.7 2020/07/12 13:12:17 nia Exp $	*/
 
 /*
  * Copyright (c) 1999,2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.6 2020/07/12 12:13:05 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.7 2020/07/12 13:12:17 nia Exp $");
 
 #include 
 #include 
@@ -670,6 +670,43 @@ static const keysym_t hidkbd_keydesc_br_
 KC(52),  KS_asciitilde,	KS_asciicircum,	KS_dead_tilde,	KS_dead_circumflex,
 };
 
+static const keysym_t hidkbd_keydesc_tr[] = {
+/*  pos  normal		shifted altgr   shift-altgr */
+KC(12),  KS_L5_idotless,	KS_I,
+KC(20),  KS_q,		KS_Q,		KS_at,
+KC(31),  KS_2,		KS_apostrophe,	KS_sterling,
+KC(32),  KS_3,		KS_asciicircum,	KS_numbersign,
+KC(33),  KS_4,		KS_plus,	KS_dollar,
+KC(34),  KS_5,		KS_percent,	KS_onehalf,
+KC(35),  KS_6,		KS_ampersand,
+KC(36),  KS_7,		KS_slash,	KS_braceleft,
+KC(37),  KS_8,		KS_parenleft,	KS_bracketleft,
+KC(38),  KS_9,		KS_parenright,	KS_bracketright,
+KC(39),  KS_0,		KS_equal,	KS_braceright,
+KC(45),  KS_asterisk,	KS_question,	KS_backslash,
+KC(46),  KS_minus,	KS_underscore,
+KC(47),  KS_L5_gbreve,	KS_L5_Gbreve,	KS_dead_diaeresis,
+KC(48),  KS_udiaeresis,	KS_Udiaeresis,	KS_asciitilde,
+KC(49),  KS_comma,	KS_semicolon,	KS_dead_grave,
+KC(50),  KS_comma,	KS_semicolon,	KS_dead_grave,
+KC(51),  KS_L5_scedilla,	KS_L5_Scedilla,	KS_dead_acute,
+KC(52),  KS_i,		KS_L5_Idotabove,
+KC(53),  KS_quotedbl,	KS_eacute,
+KC(54),  KS_odiaeresis,	KS_Odiaeresis,
+KC(55),  KS_ccedilla,	KS_Ccedilla,
+KC(56),  KS_period,	KS_colon,
+KC(100), KS_less,	KS_greater,	KS_bar,
+KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t hidkbd_keydesc_tr_nodead[] = {
+/*  pos  normal		shifted altgr   shift-altgr */
+KC(47),  KS_L5_gbreve,	KS_L5_Gbreve,
+KC(49),  KS_comma,		KS_semicolon,	KS_grave,
+KC(50),  KS_comma,		KS_semicolon,	KS_grave,
+KC(51),  KS_L5_scedilla,	KS_L5_Scedilla,	KS_apostrophe,
+};
+
 #define KBD_MAP(name, base, map) \
 			{ name, base, sizeof(map)/sizeof(keysym_t), map }
 
@@ -706,6 +743,8 @@ const struct wscons_keydesc hidkbd_keyde
 	KBD_MAP(KB_SG | KB_NODEAD,	KB_SG,	hidkbd_keydesc_sg_nodead),
 	KBD_MAP(KB_SF,			KB_SG,	hidkbd_keydesc_sf),
 	KBD_MAP(KB_SF | KB_NODEAD,	KB_SF,	hidkbd_keydesc_sg_nodead),
+	KBD_MAP(KB_TR,			KB_US,	hidkbd_keydesc_tr),
+	KBD_MAP(KB_TR | KB_NODEAD,	KB_TR,	hidkbd_keydesc_tr_nodead),
 	KBD_MAP(KB_HU,			KB_US,	hidkbd_keydesc_hu),
 	{0, 0, 0, 0}
 };



CVS commit: src/sys/dev/hid

2020-04-24 Thread Olaf Seibert
Module Name:src
Committed By:   rhialto
Date:   Fri Apr 24 13:29:46 UTC 2020

Modified Files:
src/sys/dev/hid: hidkbdmap.c

Log Message:
For usb keyboards with encoding *.swapctrlcaps, keep KS_Cmd1 on the same
key as KS_Control_L. This brings them in line with wskbdmap_mfii.c.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/hid/hidkbdmap.c

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

Modified files:

Index: src/sys/dev/hid/hidkbdmap.c
diff -u src/sys/dev/hid/hidkbdmap.c:1.2 src/sys/dev/hid/hidkbdmap.c:1.3
--- src/sys/dev/hid/hidkbdmap.c:1.2	Sat Jan 11 21:43:10 2020
+++ src/sys/dev/hid/hidkbdmap.c	Fri Apr 24 13:29:46 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.2 2020/01/11 21:43:10 nia Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.3 2020/04/24 13:29:46 rhialto Exp $	*/
 
 /*
  * Copyright (c) 1999,2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.2 2020/01/11 21:43:10 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.3 2020/04/24 13:29:46 rhialto Exp $");
 
 #include 
 #include 
@@ -279,8 +279,8 @@ Static const keysym_t hidkbd_keydesc_us_
 
 Static const keysym_t hidkbd_keydesc_swapctrlcaps[] = {
 /*  pos  command		normal		shifted */
-KC(57), 			KS_Control_L,
-KC(224), KS_Cmd1,		KS_Caps_Lock,
+KC(57),  KS_Cmd1,		KS_Control_L,
+KC(224), 			KS_Caps_Lock,
 };
 
 Static const keysym_t hidkbd_keydesc_de[] = {



CVS commit: src/sys/dev/hid

2020-03-11 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Wed Mar 11 16:05:31 UTC 2020

Modified Files:
src/sys/dev/hid: hid.h

Log Message:
 Use unsgined more.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/dev/hid/hid.h

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

Modified files:

Index: src/sys/dev/hid/hid.h
diff -u src/sys/dev/hid/hid.h:1.5 src/sys/dev/hid/hid.h:1.6
--- src/sys/dev/hid/hid.h:1.5	Sun Mar  8 14:09:32 2020
+++ src/sys/dev/hid/hid.h	Wed Mar 11 16:05:31 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hid.h,v 1.5 2020/03/08 14:09:32 msaitoh Exp $	*/
+/*	$NetBSD: hid.h,v 1.6 2020/03/11 16:05:31 msaitoh Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/hid.h,v 1.7 1999/11/17 22:33:40 n_hibma Exp $ */
 
 /*
@@ -96,309 +96,309 @@ int hid_is_collection(const void *, int,
 #endif /* _KERNEL || _RUMPKERNEL */
 
 /* Usage pages */
-#define HUP_UNDEFINED		0x
-#define HUP_GENERIC_DESKTOP	0x0001
-#define HUP_SIMULATION		0x0002
-#define HUP_VR_CONTROLS		0x0003
-#define HUP_SPORTS_CONTROLS	0x0004
-#define HUP_GAMING_CONTROLS	0x0005
-#define HUP_KEYBOARD		0x0007
-#define HUP_LEDS		0x0008
-#define HUP_BUTTON		0x0009
-#define HUP_ORDINALS		0x000a
-#define HUP_TELEPHONY		0x000b
-#define HUP_CONSUMER		0x000c
-#define HUP_DIGITIZERS		0x000d
-#define HUP_PHYSICAL_IFACE	0x000e
-#define HUP_UNICODE		0x0010
-#define HUP_ALPHANUM_DISPLAY	0x0014
-#define HUP_MONITOR		0x0080
-#define HUP_MONITOR_ENUM_VAL	0x0081
-#define HUP_VESA_VC		0x0082
-#define HUP_VESA_CMD		0x0083
-#define HUP_POWER		0x0084
-#define HUP_BATTERY		0x0085
-#define HUP_BARCODE_SCANNER	0x008b
-#define HUP_SCALE		0x008c
-#define HUP_CAMERA_CONTROL	0x0090
-#define HUP_ARCADE		0x0091
-#define HUP_VENDOR		0x00ff
+#define HUP_UNDEFINED		0xU
+#define HUP_GENERIC_DESKTOP	0x0001U
+#define HUP_SIMULATION		0x0002U
+#define HUP_VR_CONTROLS		0x0003U
+#define HUP_SPORTS_CONTROLS	0x0004U
+#define HUP_GAMING_CONTROLS	0x0005U
+#define HUP_KEYBOARD		0x0007U
+#define HUP_LEDS		0x0008U
+#define HUP_BUTTON		0x0009U
+#define HUP_ORDINALS		0x000aU
+#define HUP_TELEPHONY		0x000bU
+#define HUP_CONSUMER		0x000cU
+#define HUP_DIGITIZERS		0x000dU
+#define HUP_PHYSICAL_IFACE	0x000eU
+#define HUP_UNICODE		0x0010U
+#define HUP_ALPHANUM_DISPLAY	0x0014U
+#define HUP_MONITOR		0x0080U
+#define HUP_MONITOR_ENUM_VAL	0x0081U
+#define HUP_VESA_VC		0x0082U
+#define HUP_VESA_CMD		0x0083U
+#define HUP_POWER		0x0084U
+#define HUP_BATTERY		0x0085U
+#define HUP_BARCODE_SCANNER	0x008bU
+#define HUP_SCALE		0x008cU
+#define HUP_CAMERA_CONTROL	0x0090U
+#define HUP_ARCADE		0x0091U
+#define HUP_VENDOR		0x00ffU
 #define HUP_FIDO		0xf1d0U
 #define HUP_MICROSOFT		0xff00U
 /* XXX compat */
-#define HUP_APPLE		0x00ff
-#define HUP_WACOM		0xff00
+#define HUP_APPLE		0x00ffU
+#define HUP_WACOM		0xff00U
 
 /* Usages, Power Device */
-#define HUP_INAME		0x0001
-#define HUP_PRESENT_STATUS	0x0002
-#define HUP_CHANGED_STATUS	0x0003
-#define HUP_UPS			0x0004
-#define HUP_POWER_SUPPLY	0x0005
-#define HUP_BATTERY_SYSTEM	0x0010
-#define HUP_BATTERY_SYSTEM_ID	0x0011
-#define HUP_PD_BATTERY		0x0012
-#define HUP_BATTERY_ID		0x0013
-#define HUP_CHARGER		0x0014
-#define HUP_CHARGER_ID		0x0015
-#define HUP_POWER_CONVERTER	0x0016
-#define HUP_POWER_CONVERTER_ID	0x0017
-#define HUP_OUTLET_SYSTEM	0x0018
-#define HUP_OUTLET_SYSTEM_ID	0x0019
-#define HUP_INPUT		0x001a
-#define HUP_INPUT_ID		0x001b
-#define HUP_OUTPUT		0x001c
-#define HUP_OUTPUT_ID		0x001d
-#define HUP_FLOW		0x001e
-#define HUP_FLOW_ID		0x001f
-#define HUP_OUTLET		0x0020
-#define HUP_OUTLET_ID		0x0021
-#define HUP_GANG		0x0022
-#define HUP_GANG_ID		0x0023
-#define HUP_POWER_SUMMARY	0x0024
-#define HUP_POWER_SUMMARY_ID	0x0025
-#define HUP_VOLTAGE		0x0030
-#define HUP_CURRENT		0x0031
-#define HUP_FREQUENCY		0x0032
-#define HUP_APPARENT_POWER	0x0033
-#define HUP_ACTIVE_POWER	0x0034
-#define HUP_PERCENT_LOAD	0x0035
-#define HUP_TEMPERATURE		0x0036
-#define HUP_HUMIDITY		0x0037
-#define HUP_BADCOUNT		0x0038
-#define HUP_CONFIG_VOLTAGE	0x0040
-#define HUP_CONFIG_CURRENT	0x0041
-#define HUP_CONFIG_FREQUENCY	0x0042
-#define HUP_CONFIG_APP_POWER	0x0043
-#define HUP_CONFIG_ACT_POWER	0x0044
-#define HUP_CONFIG_PERCENT_LOAD	0x0045
-#define HUP_CONFIG_TEMPERATURE	0x0046
-#define HUP_CONFIG_HUMIDITY	0x0047
-#define HUP_SWITCHON_CONTROL	0x0050
-#define HUP_SWITCHOFF_CONTROL	0x0051
-#define HUP_TOGGLE_CONTROL	0x0052
-#define HUP_LOW_VOLT_TRANSF	0x0053
-#define HUP_HIGH_VOLT_TRANSF	0x0054
-#define HUP_DELAYBEFORE_REBOOT	0x0055
-#define HUP_DELAYBEFORE_STARTUP	0x0056
-#define HUP_DELAYBEFORE_SHUTDWN	0x0057
-#define HUP_TEST		0x0058
-#define HUP_MODULE_RESET	0x0059
-#define HUP_AUDIBLE_ALRM_CTL	0x005a
-#define HUP_PRESENT		0x0060
-#define HUP_GOOD		0x0061
-#define HUP_INTERNAL_FAILURE	0x0062
-#define HUP_PD_VOLT_OUTOF_RANGE	0x0063
-#define HUP_FREQ_OUTOFRANGE	0x0064
-#define HUP_OVERLOAD		0x0065
-#define HUP_OVERCHARGED		0x0066
-#define HUP_OVERTEMPERATURE	0x0067
-#define HUP_SHUTDOWN_REQUESTED	

CVS commit: src/sys/dev/hid

2020-03-08 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Sun Mar  8 14:09:33 UTC 2020

Modified Files:
src/sys/dev/hid: hid.h

Log Message:
Use unsigned to avoid undefined behavior. Found by kUBSan.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/hid/hid.h

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

Modified files:

Index: src/sys/dev/hid/hid.h
diff -u src/sys/dev/hid/hid.h:1.4 src/sys/dev/hid/hid.h:1.5
--- src/sys/dev/hid/hid.h:1.4	Mon Mar  2 18:15:28 2020
+++ src/sys/dev/hid/hid.h	Sun Mar  8 14:09:32 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hid.h,v 1.4 2020/03/02 18:15:28 christos Exp $	*/
+/*	$NetBSD: hid.h,v 1.5 2020/03/08 14:09:32 msaitoh Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/hid.h,v 1.7 1999/11/17 22:33:40 n_hibma Exp $ */
 
 /*
@@ -123,8 +123,8 @@ int hid_is_collection(const void *, int,
 #define HUP_CAMERA_CONTROL	0x0090
 #define HUP_ARCADE		0x0091
 #define HUP_VENDOR		0x00ff
-#define HUP_FIDO		0xf1d0
-#define HUP_MICROSOFT		0xff00
+#define HUP_FIDO		0xf1d0U
+#define HUP_MICROSOFT		0xff00U
 /* XXX compat */
 #define HUP_APPLE		0x00ff
 #define HUP_WACOM		0xff00



CVS commit: src/sys/dev/hid

2020-01-01 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Wed Jan  1 09:40:17 UTC 2020

Modified Files:
src/sys/dev/hid: hid.c

Log Message:
Fix small read overflows when parsing HID tables. Noticed by kASan the
other day while I was playing with vHCI.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/hid/hid.c

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

Modified files:

Index: src/sys/dev/hid/hid.c
diff -u src/sys/dev/hid/hid.c:1.3 src/sys/dev/hid/hid.c:1.4
--- src/sys/dev/hid/hid.c:1.3	Thu Nov 15 23:01:45 2018
+++ src/sys/dev/hid/hid.c	Wed Jan  1 09:40:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hid.c,v 1.3 2018/11/15 23:01:45 jakllsch Exp $	*/
+/*	$NetBSD: hid.c,v 1.4 2020/01/01 09:40:17 maxv Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/hid.c,v 1.11 1999/11/17 22:33:39 n_hibma Exp $ */
 
 /*
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: hid.c,v 1.3 2018/11/15 23:01:45 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hid.c,v 1.4 2020/01/01 09:40:17 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -149,27 +149,33 @@ hid_get_item(struct hid_data *s, struct 
 	}
 	for (;;) {
 		p = s->p;
-		if (p >= s->end)
-			return 0;
 
+		if (p + 1 > s->end)
+			return 0;
 		bSize = *p++;
+
 		if (bSize == 0xfe) {
 			/* long item */
+			if (p + 3 > s->end)
+return 0;
 			bSize = *p++;
 			bSize |= *p++ << 8;
 			bTag = *p++;
-			data = p;
-			p += bSize;
 			bType = 0xff; /* XXX what should it be */
 		} else {
 			/* short item */
 			bTag = bSize >> 4;
 			bType = (bSize >> 2) & 3;
 			bSize &= 3;
-			if (bSize == 3) bSize = 4;
-			data = p;
-			p += bSize;
+			if (bSize == 3)
+bSize = 4;
 		}
+
+		data = p;
+		if (p + bSize > s->end)
+			return 0;
+		p += bSize;
+
 		s->p = p;
 		switch(bSize) {
 		case 0:



CVS commit: src/sys/dev/hid

2018-05-25 Thread Ryo ONODERA
Module Name:src
Committed By:   ryoon
Date:   Fri May 25 15:52:46 UTC 2018

Modified Files:
src/sys/dev/hid: hidms.c

Log Message:
Fix HIDMS_DEBUG build


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/hid/hidms.c

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

Modified files:

Index: src/sys/dev/hid/hidms.c
diff -u src/sys/dev/hid/hidms.c:1.1 src/sys/dev/hid/hidms.c:1.2
--- src/sys/dev/hid/hidms.c:1.1	Sun Dec 10 17:03:07 2017
+++ src/sys/dev/hid/hidms.c	Fri May 25 15:52:45 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidms.c,v 1.1 2017/12/10 17:03:07 bouyer Exp $	*/
+/*	$NetBSD: hidms.c,v 1.2 2018/05/25 15:52:45 ryoon Exp $	*/
 
 /*
  * Copyright (c) 1998, 2017 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: hidms.c,v 1.1 2017/12/10 17:03:07 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidms.c,v 1.2 2018/05/25 15:52:45 ryoon Exp $");
 
 #include 
 #include 
@@ -211,6 +211,9 @@ hidms_attach(device_t self, struct hidms
 const struct wsmouse_accessops *ops)
 {
 	struct wsmousedev_attach_args a;
+#ifdef HIDMS_DEBUG
+	int i;
+#endif
 	aprint_normal(": %d button%s%s%s%s%s%s%s%s%s\n",
 	ms->nbuttons, ms->nbuttons == 1 ? "" : "s",
 	ms->flags & HIDMS_W ? ", W" : "",