On Thu, Sep 4, 2025 at 10:17 PM Jessica Clarke <jrt...@freebsd.org> wrote:

> On 5 Sep 2025, at 05:13, A FreeBSD User <free...@walstatt-de.de> wrote:
>
> > Am Tage des Herren Thu, 4 Sep 2025 21:08:06 GMT
> > Vladimir Kondratyev <w...@freebsd.org> schrieb:
> >
> >> The branch main has been updated by wulf:
> >>
> >> URL:
> https://cgit.FreeBSD.org/src/commit/?id=aef807876c305587c60f73e2cd914115d22a53fd
> >>
> >> commit aef807876c305587c60f73e2cd914115d22a53fd
> >> Author:     Vladimir Kondratyev <w...@freebsd.org>
> >> AuthorDate: 2025-09-04 21:07:25 +0000
> >> Commit:     Vladimir Kondratyev <w...@freebsd.org>
> >> CommitDate: 2025-09-04 21:07:25 +0000
> >>
> >>    moused(8): Add support for evdev protocol
> >>
> >>    The new daemon have following properties as compared with previous
> >>    incarnation:
> >>    - evdev protocol support for mices and touchpads. Additionally to
> >>      relative PS/2 and USB devices it enables console support for
> I2C/USB
> >>      touchpads and bluetooth mices.
> >>    - Other aged protocols like COM, raw PS/2 and X10 are dropped with
> only
> >>      exception of sysmouse. For those who still use them there is an
> >>      utility called msconvd(8).
> >>    - single daemon per system where hotplug is processed via devd
> socket.
> >>      Per device mode still supported too.
> >>    - Configuration and quirks files in libinput-compatible format.
> >>      Actually, the new moused config parser is taken from libinput.
> >>
> >>    The moused(8) can work in 2 modes:
> >>    1. Evdev support mode. It enables all previously mentioned devices.
> >>       It is enabled by deault.
> >>    2. Sysmouse support mode. All should work as before.
> >>       No new devices supported. To enable it add following lines to
> >>       /etc/rc.conf:
> >>          moused_port="/dev/psm0"
> >>          moused_nondefault_enable="YES"
> >>       One may add hw.usb.usbhid.enable=0 to /boot/loader.conf to enable
> >>       ums(4) driver which supports sysmouse protocol.
> >>
> >>    Differential Revision:  https://reviews.freebsd.org/D52164
> >> ---
> >> libexec/rc/rc.conf                                 |    8 +-
> >> libexec/rc/rc.d/Makefile                           |    1 +
> >> libexec/rc/rc.d/msconvd                            |   61 +
> >> tools/build/mk/OptionalObsoleteFiles.inc           |    7 +
> >> usr.sbin/moused/Makefile                           |   12 +-
> >> usr.sbin/moused/Makefile.depend                    |   17 -
> >> usr.sbin/moused/moused/Makefile                    |   28 +
> >> usr.sbin/moused/moused/event-names.h               | 1656 ++++++++++
> >> usr.sbin/moused/moused/moused.8                    |  538 ++++
> >> usr.sbin/moused/moused/moused.c                    | 3205
> ++++++++++++++++++++
> >> usr.sbin/moused/moused/moused.conf                 |   43 +
> >> usr.sbin/moused/moused/moused.conf.5               |  422 +++
> >> usr.sbin/moused/moused/quirks.c                    | 2033 +++++++++++++
> >> usr.sbin/moused/moused/quirks.h                    |  369 +++
> >> .../moused/moused/quirks/5-generic-touchpad.quirks |    9 +
> >> usr.sbin/moused/moused/util-evdev.c                |  173 ++
> >> usr.sbin/moused/moused/util-evdev.h                |   35 +
> >> usr.sbin/moused/moused/util-list.c                 |   86 +
> >> usr.sbin/moused/moused/util-list.h                 |  194 ++
> >> usr.sbin/moused/moused/util.c                      |  423 +++
> >> usr.sbin/moused/moused/util.h                      |  413 +++
> >> usr.sbin/moused/msconvd/Makefile                   |    8 +
> >> usr.sbin/moused/{moused.8 => msconvd/msconvd.8}    |  395 +--
> >> usr.sbin/moused/{moused.c => msconvd/msconvd.c}    | 1212 ++------
> >> 24 files changed, 10008 insertions(+), 1340 deletions(-)
> >>
> >> diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf
> >> index bfa46bd343a6..0ef3012892dd 100644
> >> --- a/libexec/rc/rc.conf
> >> +++ b/libexec/rc/rc.conf
> >> @@ -586,15 +586,19 @@ font8x14="NO" # font 8x14 from
> >> /usr/share/{syscons,vt}/fonts/* (or NO). font8x8="NO" # font 8x8 from
> >> /usr/share/{syscons,vt}/fonts/* (or NO). blanktime="300" # blank time
> (in
> >> seconds) or "NO" to turn it off. saver="NO" # screen saver: Uses
> >> /boot/kernel/${saver}_saver.ko -moused_nondefault_enable="YES" # Treat
> non-default mice as
> >> enabled unless +moused_nondefault_enable="NO" # Treat non-default mice
> as enabled unless
> >>       # specifically overridden in rc.conf(5).
> >> moused_enable="NO" # Run the mouse daemon.
> >> moused_type="auto" # See man page for rc.conf(5) for available settings.
> >> -moused_port="/dev/psm0" # Set to your mouse port.
> >> +moused_port="auto" # Set to your mouse port.
> >> moused_flags="" # Any additional flags to moused.
> >> mousechar_start="NO" # if 0xd0-0xd3 default range is occupied in your
> >> # language code table, specify alternative range
> >> # start like mousechar_start=3, see vidcontrol(1)
> >> +msconvd_enable="NO" # Run the mouse protocol conversion daemon.
> >> +msconvd_type="auto" # See rc.conf(5) man page for available
> moused_type-s.
> >> +msconvd_ports="" # List of msconvd ports.
> >> +msconvd_flags="" # Any additional flags to msconvd.
> >> allscreens_flags="" # Set this vidcontrol mode for all virtual screens
> >> allscreens_kbdflags="" # Set this kbdcontrol mode for all virtual
> screens
> >>
> >> diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
> >> index 7c1f50b027a9..e5ee34e62185 100644
> >> --- a/libexec/rc/rc.d/Makefile
> >> +++ b/libexec/rc/rc.d/Makefile
> >> @@ -273,6 +273,7 @@ JAILPACKAGE= jail
> >> .if ${MK_LEGACY_CONSOLE} != "no"
> >> CONFGROUPS+= CONSOLE
> >> CONSOLE+= moused
> >> +CONSOLE+= msconvd
> >> CONSOLE+= syscons
> >> CONSOLEPACKAGE= console-tools
> >> .endif
> >> diff --git a/libexec/rc/rc.d/msconvd b/libexec/rc/rc.d/msconvd
> >> new file mode 100755
> >> index 000000000000..c2a96bf2eb68
> >> --- /dev/null
> >> +++ b/libexec/rc/rc.d/msconvd
> >> @@ -0,0 +1,61 @@
> >> +#!/bin/sh
> >> +#
> >> +#
> >> +
> >> +# PROVIDE: msconvd
> >> +# REQUIRE: DAEMON FILESYSTEMS
> >> +# KEYWORD: nojail shutdown
> >> +
> >> +. /etc/rc.subr
> >> +
> >> +name="msconvd"
> >> +desc="Mouse protocol conversion daemon"
> >> +command="/usr/sbin/${name}"
> >> +start_cmd="msconvd_start"
> >> +pidprefix="/var/run/msconvd"
> >> +load_rc_config $name
> >> +
> >> +: ${msconvd_enable="NO"}
> >> +: ${msconvd_type="auto"}
> >> +
> >> +# doesn't make sense to run in a svcj: nojail keyword
> >> +# XXX: How does msconvd communiacte with the kernel?
> >> +# XXX: Does the kernel prevent this communcation in jails?
> >> +msconvd_svcj="NO"
> >> +
> >> +# Set the pid file and variable name. The second argument, if it
> exists, is
> >> +# expected to be the mouse device.
> >> +#
> >> +if [ -n "$2" ]; then
> >> + eval msconvd_$2_enable=\${msconvd_$2_enable-${msconvd_enable}}
> >> + rcvar="msconvd_$2_enable"
> >> + pidfile="${pidprefix}.$2.pid"
> >> +else
> >> + for ms in ${msconvd_ports}; do
> >> + /etc/rc.d/msconvd $1 ${ms}
> >> + done
> >> + exit 0
> >> +fi
> >> +
> >> +msconvd_start()
> >> +{
> >> + local ms myflags myport mytype
> >> +
> >> + # Set the mouse device and get any related variables. If
> >> + # a msconvd device has been specified on the commandline, then
> >> + # rc.conf(5) variables defined for that device take precedence
> >> + # over the generic msconvd_* variables. The only exception is
> >> + # the msconvd_port variable, which if not defined sets it to
> >> + # the passed in device name.
> >> + #
> >> + ms=$1
> >> + eval myflags=\${msconvd_${ms}_flags-$msconvd_flags}
> >> + eval myport=\${msconvd_${ms}_port-/dev/${ms}}
> >> + eval mytype=\${msconvd_${ms}_type-$msconvd_type}
> >> +
> >> + startmsg -n "Starting ${ms} ${name}"
> >> + ${command} ${myflags} -p ${myport} -t ${mytype} -I ${pidfile}
> >> + startmsg '.'
> >> +}
> >> +
> >> +run_rc_command $*
> >> diff --git a/tools/build/mk/OptionalObsoleteFiles.inc
> >> b/tools/build/mk/OptionalObsoleteFiles.inc index
> 5eea402c4526..a2fb28f1a186 100644
> >> --- a/tools/build/mk/OptionalObsoleteFiles.inc
> >> +++ b/tools/build/mk/OptionalObsoleteFiles.inc
> >> @@ -3793,11 +3793,14 @@ OLD_FILES+=usr/share/man/man1/host.1.gz
> >> .endif
> >>
> >> .if ${MK_LEGACY_CONSOLE} == no
> >> +OLD_FILES+=etc/moused.conf
> >> OLD_FILES+=etc/rc.d/moused
> >> +OLD_FILES+=etc/rc.d/msconvd
> >> OLD_FILES+=etc/rc.d/syscons
> >> OLD_FILES+=usr/sbin/kbdcontrol
> >> OLD_FILES+=usr/sbin/kbdmap
> >> OLD_FILES+=usr/sbin/moused
> >> +OLD_FILES+=usr/sbin/msconvd
> >> OLD_FILES+=usr/sbin/vidcontrol
> >> OLD_FILES+=usr/sbin/vidfont
> >> OLD_FILES+=usr/share/man/man1/kbdcontrol.1.gz
> >> @@ -3806,7 +3809,11 @@ OLD_FILES+=usr/share/man/man1/vidcontrol.1.gz
> >> OLD_FILES+=usr/share/man/man1/vidfont.1.gz
> >> OLD_FILES+=usr/share/man/man5/kbdmap.5.gz
> >> OLD_FILES+=usr/share/man/man5/keymap.5.gz
> >> +OLD_FILES+=usr/share/man/man5/moused.conf.5.gz
> >> OLD_FILES+=usr/share/man/man8/moused.8.gz
> >> +OLD_FILES+=usr/share/man/man8/msconvd.8.gz
> >> +OLD_FILES+=usr/share/moused/5-generic-touchpad.quirks
> >> +OLD_DIRS+=usr/share/moused
> >> .endif
> >>
> >> .for LIBCOMPAT libcompat in ${_ALL_LIBCOMPATS_libcompats}
> >> diff --git a/usr.sbin/moused/Makefile b/usr.sbin/moused/Makefile
> >> index 2a7aa0484542..b6319b6fef20 100644
> >> --- a/usr.sbin/moused/Makefile
> >> +++ b/usr.sbin/moused/Makefile
> >> @@ -1,10 +1,4 @@
> >> -PACKAGE= console-tools
> >> -PROG= moused
> >> -MAN= moused.8
> >> +SUBDIR+=moused
> >> +SUBDIR+=msconvd
> >>
> >> -LIBADD= m util
> >> -
> >> -#BINMODE=4555
> >> -#PRECIOUSPROG=
> >> -
> >> -.include <bsd.prog.mk>
> >> +.include <bsd.subdir.mk>
> >> diff --git a/usr.sbin/moused/Makefile.depend
> b/usr.sbin/moused/Makefile.depend
> >> deleted file mode 100644
> >> index af3b7054df7a..000000000000
> >> --- a/usr.sbin/moused/Makefile.depend
> >> +++ /dev/null
> >> @@ -1,17 +0,0 @@
> >> -# Autogenerated - do NOT edit!
> >> -
> >> -DIRDEPS = \
> >> - include \
> >> - include/xlocale \
> >> - lib/${CSU_DIR} \
> >> - lib/libc \
> >> - lib/libcompiler_rt \
> >> - lib/libutil \
> >> - lib/msun \
> >> -
> >> -
> >> -.include <dirdeps.mk>
> >> -
> >> -.if ${DEP_RELDIR} == ${_DEP_RELDIR}
> >> -# local dependencies - needed for -jN in clean tree
> >> -.endif
> >> diff --git a/usr.sbin/moused/moused/Makefile
> b/usr.sbin/moused/moused/Makefile
> >> new file mode 100644
> >> index 000000000000..8479764b710b
> >> --- /dev/null
> >> +++ b/usr.sbin/moused/moused/Makefile
> >> @@ -0,0 +1,28 @@
> >> +PACKAGE= console-tools
> >> +PROG= moused
> >> +
> >> +SRCS= moused.c \
> >> + event-names.h \
> >> + quirks.c \
> >> + quirks.h \
> >> + util.c \
> >> + util.h \
> >> + util-evdev.c \
> >> + util-evdev.h \
> >> + util-list.c \
> >> + util-list.h
> >> +MAN= moused.8 \
> >> + moused.conf.5
> >> +CONFS= moused.conf
> >> +QUIRKS= 5-generic-touchpad.quirks
> >> +
> >> +CWARNFLAGS.quirks.c+= -Wno-cast-align -Wno-shadow -Wno-cast-qual \
> >> + -Wno-unused-variable -Wno-unused-parameter
> >> +CWARNFLAGS.util.c+= -Wno-shadow
> >> +LIBADD= m util
> >> +BINDIR= /usr/sbin
> >> +
> >> +FILES= ${QUIRKS:S|^|quirks/|}
> >> +FILESDIR= /usr/share/${PROG}
> >> +
> >> +.include <bsd.prog.mk>
> >> diff --git a/usr.sbin/moused/moused/event-names.h
> b/usr.sbin/moused/moused/event-names.h
> >> new file mode 100644
> >> index 000000000000..05093a1d0db3
> >> --- /dev/null
> >> +++ b/usr.sbin/moused/moused/event-names.h
> >> @@ -0,0 +1,1656 @@
> >> +/* THIS FILE IS GENERATED, DO NOT EDIT */
> >> +
> >> +#ifndef EVENT_NAMES_H
> >> +#define EVENT_NAMES_H
> >> +
> >> +static const char * const ev_map[EV_MAX + 1] = {
> >> +    [EV_SYN] = "EV_SYN",
> >> +    [EV_KEY] = "EV_KEY",
> >> +    [EV_REL] = "EV_REL",
> >> +    [EV_ABS] = "EV_ABS",
> >> +    [EV_MSC] = "EV_MSC",
> >> +    [EV_SW] = "EV_SW",
> >> +    [EV_LED] = "EV_LED",
> >> +    [EV_SND] = "EV_SND",
> >> +    [EV_REP] = "EV_REP",
> >> +    [EV_FF] = "EV_FF",
> >> +    [EV_PWR] = "EV_PWR",
> >> +    [EV_FF_STATUS] = "EV_FF_STATUS",
> >> +    [EV_MAX] = "EV_MAX",
> >> +};
> >> +
> >> +static const char * const rel_map[REL_MAX + 1] = {
> >> +    [REL_X] = "REL_X",
> >> +    [REL_Y] = "REL_Y",
> >> +    [REL_Z] = "REL_Z",
> >> +    [REL_RX] = "REL_RX",
> >> +    [REL_RY] = "REL_RY",
> >> +    [REL_RZ] = "REL_RZ",
> >> +    [REL_HWHEEL] = "REL_HWHEEL",
> >> +    [REL_DIAL] = "REL_DIAL",
> >> +    [REL_WHEEL] = "REL_WHEEL",
> >> +    [REL_MISC] = "REL_MISC",
> >> +    [REL_RESERVED] = "REL_RESERVED",
> >> +    [REL_WHEEL_HI_RES] = "REL_WHEEL_HI_RES",
> >> +    [REL_HWHEEL_HI_RES] = "REL_HWHEEL_HI_RES",
> >> +    [REL_MAX] = "REL_MAX",
> >> +};
> >> +
> >> +static const char * const abs_map[ABS_MAX + 1] = {
> >> +    [ABS_X] = "ABS_X",
> >> +    [ABS_Y] = "ABS_Y",
> >> +    [ABS_Z] = "ABS_Z",
> >> +    [ABS_RX] = "ABS_RX",
> >> +    [ABS_RY] = "ABS_RY",
> >> +    [ABS_RZ] = "ABS_RZ",
> >> +    [ABS_THROTTLE] = "ABS_THROTTLE",
> >> +    [ABS_RUDDER] = "ABS_RUDDER",
> >> +    [ABS_WHEEL] = "ABS_WHEEL",
> >> +    [ABS_GAS] = "ABS_GAS",
> >> +    [ABS_BRAKE] = "ABS_BRAKE",
> >> +    [ABS_HAT0X] = "ABS_HAT0X",
> >> +    [ABS_HAT0Y] = "ABS_HAT0Y",
> >> +    [ABS_HAT1X] = "ABS_HAT1X",
> >> +    [ABS_HAT1Y] = "ABS_HAT1Y",
> >> +    [ABS_HAT2X] = "ABS_HAT2X",
> >> +    [ABS_HAT2Y] = "ABS_HAT2Y",
> >> +    [ABS_HAT3X] = "ABS_HAT3X",
> >> +    [ABS_HAT3Y] = "ABS_HAT3Y",
> >> +    [ABS_PRESSURE] = "ABS_PRESSURE",
> >> +    [ABS_DISTANCE] = "ABS_DISTANCE",
> >> +    [ABS_TILT_X] = "ABS_TILT_X",
> >> +    [ABS_TILT_Y] = "ABS_TILT_Y",
> >> +    [ABS_TOOL_WIDTH] = "ABS_TOOL_WIDTH",
> >> +    [ABS_VOLUME] = "ABS_VOLUME",
> >> +    // [ABS_PROFILE] = "ABS_PROFILE",
> >> +    [ABS_MISC] = "ABS_MISC",
> >> +    [ABS_RESERVED] = "ABS_RESERVED",
> >> +    [ABS_MT_SLOT] = "ABS_MT_SLOT",
> >> +    [ABS_MT_TOUCH_MAJOR] = "ABS_MT_TOUCH_MAJOR",
> >> +    [ABS_MT_TOUCH_MINOR] = "ABS_MT_TOUCH_MINOR",
> >> +    [ABS_MT_WIDTH_MAJOR] = "ABS_MT_WIDTH_MAJOR",
> >> +    [ABS_MT_WIDTH_MINOR] = "ABS_MT_WIDTH_MINOR",
> >> +    [ABS_MT_ORIENTATION] = "ABS_MT_ORIENTATION",
> >> +    [ABS_MT_POSITION_X] = "ABS_MT_POSITION_X",
> >> +    [ABS_MT_POSITION_Y] = "ABS_MT_POSITION_Y",
> >> +    [ABS_MT_TOOL_TYPE] = "ABS_MT_TOOL_TYPE",
> >> +    [ABS_MT_BLOB_ID] = "ABS_MT_BLOB_ID",
> >> +    [ABS_MT_TRACKING_ID] = "ABS_MT_TRACKING_ID",
> >> +    [ABS_MT_PRESSURE] = "ABS_MT_PRESSURE",
> >> +    [ABS_MT_DISTANCE] = "ABS_MT_DISTANCE",
> >> +    [ABS_MT_TOOL_X] = "ABS_MT_TOOL_X",
> >> +    [ABS_MT_TOOL_Y] = "ABS_MT_TOOL_Y",
> >> +    [ABS_MAX] = "ABS_MAX",
> >> +};
> >> +
> >> +static const char * const key_map[KEY_MAX + 1] = {
> >> +    [KEY_RESERVED] = "KEY_RESERVED",
> >> +    [KEY_ESC] = "KEY_ESC",
> >> +    [KEY_1] = "KEY_1",
> >> +    [KEY_2] = "KEY_2",
> >> +    [KEY_3] = "KEY_3",
> >> +    [KEY_4] = "KEY_4",
> >> +    [KEY_5] = "KEY_5",
> >> +    [KEY_6] = "KEY_6",
> >> +    [KEY_7] = "KEY_7",
> >> +    [KEY_8] = "KEY_8",
> >> +    [KEY_9] = "KEY_9",
> >> +    [KEY_0] = "KEY_0",
> >> +    [KEY_MINUS] = "KEY_MINUS",
> >> +    [KEY_EQUAL] = "KEY_EQUAL",
> >> +    [KEY_BACKSPACE] = "KEY_BACKSPACE",
> >> +    [KEY_TAB] = "KEY_TAB",
> >> +    [KEY_Q] = "KEY_Q",
> >> +    [KEY_W] = "KEY_W",
> >> +    [KEY_E] = "KEY_E",
> >> +    [KEY_R] = "KEY_R",
> >> +    [KEY_T] = "KEY_T",
> >> +    [KEY_Y] = "KEY_Y",
> >> +    [KEY_U] = "KEY_U",
> >> +    [KEY_I] = "KEY_I",
> >> +    [KEY_O] = "KEY_O",
> >> +    [KEY_P] = "KEY_P",
> >> +    [KEY_LEFTBRACE] = "KEY_LEFTBRACE",
> >> +    [KEY_RIGHTBRACE] = "KEY_RIGHTBRACE",
> >> +    [KEY_ENTER] = "KEY_ENTER",
> >> +    [KEY_LEFTCTRL] = "KEY_LEFTCTRL",
> >> +    [KEY_A] = "KEY_A",
> >> +    [KEY_S] = "KEY_S",
> >> +    [KEY_D] = "KEY_D",
> >> +    [KEY_F] = "KEY_F",
> >> +    [KEY_G] = "KEY_G",
> >> +    [KEY_H] = "KEY_H",
> >> +    [KEY_J] = "KEY_J",
> >> +    [KEY_K] = "KEY_K",
> >> +    [KEY_L] = "KEY_L",
> >> +    [KEY_SEMICOLON] = "KEY_SEMICOLON",
> >> +    [KEY_APOSTROPHE] = "KEY_APOSTROPHE",
> >> +    [KEY_GRAVE] = "KEY_GRAVE",
> >> +    [KEY_LEFTSHIFT] = "KEY_LEFTSHIFT",
> >> +    [KEY_BACKSLASH] = "KEY_BACKSLASH",
> >> +    [KEY_Z] = "KEY_Z",
> >> +    [KEY_X] = "KEY_X",
> >> +    [KEY_C] = "KEY_C",
> >> +    [KEY_V] = "KEY_V",
> >> +    [KEY_B] = "KEY_B",
> >> +    [KEY_N] = "KEY_N",
> >> +    [KEY_M] = "KEY_M",
> >> +    [KEY_COMMA] = "KEY_COMMA",
> >> +    [KEY_DOT] = "KEY_DOT",
> >> +    [KEY_SLASH] = "KEY_SLASH",
> >> +    [KEY_RIGHTSHIFT] = "KEY_RIGHTSHIFT",
> >> +    [KEY_KPASTERISK] = "KEY_KPASTERISK",
> >> +    [KEY_LEFTALT] = "KEY_LEFTALT",
> >> +    [KEY_SPACE] = "KEY_SPACE",
> >> +    [KEY_CAPSLOCK] = "KEY_CAPSLOCK",
> >> +    [KEY_F1] = "KEY_F1",
> >> +    [KEY_F2] = "KEY_F2",
> >> +    [KEY_F3] = "KEY_F3",
> >> +    [KEY_F4] = "KEY_F4",
> >> +    [KEY_F5] = "KEY_F5",
> >> +    [KEY_F6] = "KEY_F6",
> >> +    [KEY_F7] = "KEY_F7",
> >> +    [KEY_F8] = "KEY_F8",
> >> +    [KEY_F9] = "KEY_F9",
> >> +    [KEY_F10] = "KEY_F10",
> >> +    [KEY_NUMLOCK] = "KEY_NUMLOCK",
> >> +    [KEY_SCROLLLOCK] = "KEY_SCROLLLOCK",
> >> +    [KEY_KP7] = "KEY_KP7",
> >> +    [KEY_KP8] = "KEY_KP8",
> >> +    [KEY_KP9] = "KEY_KP9",
> >> +    [KEY_KPMINUS] = "KEY_KPMINUS",
> >> +    [KEY_KP4] = "KEY_KP4",
> >> +    [KEY_KP5] = "KEY_KP5",
> >> +    [KEY_KP6] = "KEY_KP6",
> >> +    [KEY_KPPLUS] = "KEY_KPPLUS",
> >> +    [KEY_KP1] = "KEY_KP1",
> >> +    [KEY_KP2] = "KEY_KP2",
> >> +    [KEY_KP3] = "KEY_KP3",
> >> +    [KEY_KP0] = "KEY_KP0",
> >> +    [KEY_KPDOT] = "KEY_KPDOT",
> >> +    [KEY_ZENKAKUHANKAKU] = "KEY_ZENKAKUHANKAKU",
> >> +    [KEY_102ND] = "KEY_102ND",
> >> +    [KEY_F11] = "KEY_F11",
> >> +    [KEY_F12] = "KEY_F12",
> >> +    [KEY_RO] = "KEY_RO",
> >> +    [KEY_KATAKANA] = "KEY_KATAKANA",
> >> +    [KEY_HIRAGANA] = "KEY_HIRAGANA",
> >> +    [KEY_HENKAN] = "KEY_HENKAN",
> >> +    [KEY_KATAKANAHIRAGANA] = "KEY_KATAKANAHIRAGANA",
> >> +    [KEY_MUHENKAN] = "KEY_MUHENKAN",
> >> +    [KEY_KPJPCOMMA] = "KEY_KPJPCOMMA",
> >> +    [KEY_KPENTER] = "KEY_KPENTER",
> >> +    [KEY_RIGHTCTRL] = "KEY_RIGHTCTRL",
> >> +    [KEY_KPSLASH] = "KEY_KPSLASH",
> >> +    [KEY_SYSRQ] = "KEY_SYSRQ",
> >> +    [KEY_RIGHTALT] = "KEY_RIGHTALT",
> >> +    [KEY_LINEFEED] = "KEY_LINEFEED",
> >> +    [KEY_HOME] = "KEY_HOME",
> >> +    [KEY_UP] = "KEY_UP",
> >> +    [KEY_PAGEUP] = "KEY_PAGEUP",
> >> +    [KEY_LEFT] = "KEY_LEFT",
> >> +    [KEY_RIGHT] = "KEY_RIGHT",
> >> +    [KEY_END] = "KEY_END",
> >> +    [KEY_DOWN] = "KEY_DOWN",
> >> +    [KEY_PAGEDOWN] = "KEY_PAGEDOWN",
> >> +    [KEY_INSERT] = "KEY_INSERT",
> >> +    [KEY_DELETE] = "KEY_DELETE",
> >> +    [KEY_MACRO] = "KEY_MACRO",
> >> +    [KEY_MUTE] = "KEY_MUTE",
> >> +    [KEY_VOLUMEDOWN] = "KEY_VOLUMEDOWN",
> >> +    [KEY_VOLUMEUP] = "KEY_VOLUMEUP",
> >> +    [KEY_POWER] = "KEY_POWER",
> >> +    [KEY_KPEQUAL] = "KEY_KPEQUAL",
> >> +    [KEY_KPPLUSMINUS] = "KEY_KPPLUSMINUS",
> >> +    [KEY_PAUSE] = "KEY_PAUSE",
> >> +    [KEY_SCALE] = "KEY_SCALE",
> >> +    [KEY_KPCOMMA] = "KEY_KPCOMMA",
> >> +    [KEY_HANGEUL] = "KEY_HANGEUL",
> >> +    [KEY_HANJA] = "KEY_HANJA",
> >> +    [KEY_YEN] = "KEY_YEN",
> >> +    [KEY_LEFTMETA] = "KEY_LEFTMETA",
> >> +    [KEY_RIGHTMETA] = "KEY_RIGHTMETA",
> >> +    [KEY_COMPOSE] = "KEY_COMPOSE",
> >> +    [KEY_STOP] = "KEY_STOP",
> >> +    [KEY_AGAIN] = "KEY_AGAIN",
> >> +    [KEY_PROPS] = "KEY_PROPS",
> >> +    [KEY_UNDO] = "KEY_UNDO",
> >> +    [KEY_FRONT] = "KEY_FRONT",
> >> +    [KEY_COPY] = "KEY_COPY",
> >> +    [KEY_OPEN] = "KEY_OPEN",
> >> +    [KEY_PASTE] = "KEY_PASTE",
> >> +    [KEY_FIND] = "KEY_FIND",
> >> +    [KEY_CUT] = "KEY_CUT",
> >> +    [KEY_HELP] = "KEY_HELP",
> >> +    [KEY_MENU] = "KEY_MENU",
> >> +    [KEY_CALC] = "KEY_CALC",
> >> +    [KEY_SETUP] = "KEY_SETUP",
> >> +    [KEY_SLEEP] = "KEY_SLEEP",
> >> +    [KEY_WAKEUP] = "KEY_WAKEUP",
> >> +    [KEY_FILE] = "KEY_FILE",
> >> +    [KEY_SENDFILE] = "KEY_SENDFILE",
> >> +    [KEY_DELETEFILE] = "KEY_DELETEFILE",
> >> +    [KEY_XFER] = "KEY_XFER",
> >> +    [KEY_PROG1] = "KEY_PROG1",
> >> +    [KEY_PROG2] = "KEY_PROG2",
> >> +    [KEY_WWW] = "KEY_WWW",
> >> +    [KEY_MSDOS] = "KEY_MSDOS",
> >> +    [KEY_COFFEE] = "KEY_COFFEE",
> >> +    [KEY_ROTATE_DISPLAY] = "KEY_ROTATE_DISPLAY",
> >> +    [KEY_CYCLEWINDOWS] = "KEY_CYCLEWINDOWS",
> >> +    [KEY_MAIL] = "KEY_MAIL",
> >> +    [KEY_BOOKMARKS] = "KEY_BOOKMARKS",
> >> +    [KEY_COMPUTER] = "KEY_COMPUTER",
> >> +    [KEY_BACK] = "KEY_BACK",
> >> +    [KEY_FORWARD] = "KEY_FORWARD",
> >> +    [KEY_CLOSECD] = "KEY_CLOSECD",
> >> +    [KEY_EJECTCD] = "KEY_EJECTCD",
> >> +    [KEY_EJECTCLOSECD] = "KEY_EJECTCLOSECD",
> >> +    [KEY_NEXTSONG] = "KEY_NEXTSONG",
> >> +    [KEY_PLAYPAUSE] = "KEY_PLAYPAUSE",
> >> +    [KEY_PREVIOUSSONG] = "KEY_PREVIOUSSONG",
> >> +    [KEY_STOPCD] = "KEY_STOPCD",
> >> +    [KEY_RECORD] = "KEY_RECORD",
> >> +    [KEY_REWIND] = "KEY_REWIND",
> >> +    [KEY_PHONE] = "KEY_PHONE",
> >> +    [KEY_ISO] = "KEY_ISO",
> >> +    [KEY_CONFIG] = "KEY_CONFIG",
> >> +    [KEY_HOMEPAGE] = "KEY_HOMEPAGE",
> >> +    [KEY_REFRESH] = "KEY_REFRESH",
> >> +    [KEY_EXIT] = "KEY_EXIT",
> >> +    [KEY_MOVE] = "KEY_MOVE",
> >> +    [KEY_EDIT] = "KEY_EDIT",
> >> +    [KEY_SCROLLUP] = "KEY_SCROLLUP",
> >> +    [KEY_SCROLLDOWN] = "KEY_SCROLLDOWN",
> >> +    [KEY_KPLEFTPAREN] = "KEY_KPLEFTPAREN",
> >> +    [KEY_KPRIGHTPAREN] = "KEY_KPRIGHTPAREN",
> >> +    [KEY_NEW] = "KEY_NEW",
> >> +    [KEY_REDO] = "KEY_REDO",
> >> +    [KEY_F13] = "KEY_F13",
> >> +    [KEY_F14] = "KEY_F14",
> >> +    [KEY_F15] = "KEY_F15",
> >> +    [KEY_F16] = "KEY_F16",
> >> +    [KEY_F17] = "KEY_F17",
> >> +    [KEY_F18] = "KEY_F18",
> >> +    [KEY_F19] = "KEY_F19",
> >> +    [KEY_F20] = "KEY_F20",
> >> +    [KEY_F21] = "KEY_F21",
> >> +    [KEY_F22] = "KEY_F22",
> >> +    [KEY_F23] = "KEY_F23",
> >> +    [KEY_F24] = "KEY_F24",
> >> +    [KEY_PLAYCD] = "KEY_PLAYCD",
> >> +    [KEY_PAUSECD] = "KEY_PAUSECD",
> >> +    [KEY_PROG3] = "KEY_PROG3",
> >> +    [KEY_PROG4] = "KEY_PROG4",
> >> +    // [KEY_ALL_APPLICATIONS] = "KEY_ALL_APPLICATIONS",
> >> +    [KEY_SUSPEND] = "KEY_SUSPEND",
> >> +    [KEY_CLOSE] = "KEY_CLOSE",
> >> +    [KEY_PLAY] = "KEY_PLAY",
> >> +    [KEY_FASTFORWARD] = "KEY_FASTFORWARD",
> >> +    [KEY_BASSBOOST] = "KEY_BASSBOOST",
> >> +    [KEY_PRINT] = "KEY_PRINT",
> >> +    [KEY_HP] = "KEY_HP",
> >> +    [KEY_CAMERA] = "KEY_CAMERA",
> >> +    [KEY_SOUND] = "KEY_SOUND",
> >> +    [KEY_QUESTION] = "KEY_QUESTION",
> >> +    [KEY_EMAIL] = "KEY_EMAIL",
> >> +    [KEY_CHAT] = "KEY_CHAT",
> >> +    [KEY_SEARCH] = "KEY_SEARCH",
> >> +    [KEY_CONNECT] = "KEY_CONNECT",
> >> +    [KEY_FINANCE] = "KEY_FINANCE",
> >> +    [KEY_SPORT] = "KEY_SPORT",
> >> +    [KEY_SHOP] = "KEY_SHOP",
> >> +    [KEY_ALTERASE] = "KEY_ALTERASE",
> >> +    [KEY_CANCEL] = "KEY_CANCEL",
> >> +    [KEY_BRIGHTNESSDOWN] = "KEY_BRIGHTNESSDOWN",
> >> +    [KEY_BRIGHTNESSUP] = "KEY_BRIGHTNESSUP",
> >> +    [KEY_MEDIA] = "KEY_MEDIA",
> >> +    [KEY_SWITCHVIDEOMODE] = "KEY_SWITCHVIDEOMODE",
> >> +    [KEY_KBDILLUMTOGGLE] = "KEY_KBDILLUMTOGGLE",
> >> +    [KEY_KBDILLUMDOWN] = "KEY_KBDILLUMDOWN",
> >> +    [KEY_KBDILLUMUP] = "KEY_KBDILLUMUP",
> >> +    [KEY_SEND] = "KEY_SEND",
> >> +    [KEY_REPLY] = "KEY_REPLY",
> >> +    [KEY_FORWARDMAIL] = "KEY_FORWARDMAIL",
> >> +    [KEY_SAVE] = "KEY_SAVE",
> >> +    [KEY_DOCUMENTS] = "KEY_DOCUMENTS",
> >> +    [KEY_BATTERY] = "KEY_BATTERY",
> >> +    [KEY_BLUETOOTH] = "KEY_BLUETOOTH",
> >> +    [KEY_WLAN] = "KEY_WLAN",
> >> +    [KEY_UWB] = "KEY_UWB",
> >> +    [KEY_UNKNOWN] = "KEY_UNKNOWN",
> >> +    [KEY_VIDEO_NEXT] = "KEY_VIDEO_NEXT",
> >> +    [KEY_VIDEO_PREV] = "KEY_VIDEO_PREV",
> >> +    [KEY_BRIGHTNESS_CYCLE] = "KEY_BRIGHTNESS_CYCLE",
> >> +    [KEY_BRIGHTNESS_AUTO] = "KEY_BRIGHTNESS_AUTO",
> >> +    [KEY_DISPLAY_OFF] = "KEY_DISPLAY_OFF",
> >> +    [KEY_WWAN] = "KEY_WWAN",
> >> +    [KEY_RFKILL] = "KEY_RFKILL",
> >> +    [KEY_MICMUTE] = "KEY_MICMUTE",
> >> +    [KEY_OK] = "KEY_OK",
> >> +    [KEY_SELECT] = "KEY_SELECT",
> >> +    [KEY_GOTO] = "KEY_GOTO",
> >> +    [KEY_CLEAR] = "KEY_CLEAR",
> >> +    [KEY_POWER2] = "KEY_POWER2",
> >> +    [KEY_OPTION] = "KEY_OPTION",
> >> +    [KEY_INFO] = "KEY_INFO",
> >> +    [KEY_TIME] = "KEY_TIME",
> >> +    [KEY_VENDOR] = "KEY_VENDOR",
> >> +    [KEY_ARCHIVE] = "KEY_ARCHIVE",
> >> +    [KEY_PROGRAM] = "KEY_PROGRAM",
> >> +    [KEY_CHANNEL] = "KEY_CHANNEL",
> >> +    [KEY_FAVORITES] = "KEY_FAVORITES",
> >> +    [KEY_EPG] = "KEY_EPG",
> >> +    [KEY_PVR] = "KEY_PVR",
> >> +    [KEY_MHP] = "KEY_MHP",
> >> +    [KEY_LANGUAGE] = "KEY_LANGUAGE",
> >> +    [KEY_TITLE] = "KEY_TITLE",
> >> +    [KEY_SUBTITLE] = "KEY_SUBTITLE",
> >> +    [KEY_ANGLE] = "KEY_ANGLE",
> >> +    [KEY_FULL_SCREEN] = "KEY_FULL_SCREEN",
> >> +    [KEY_MODE] = "KEY_MODE",
> >> +    [KEY_KEYBOARD] = "KEY_KEYBOARD",
> >> +    [KEY_ASPECT_RATIO] = "KEY_ASPECT_RATIO",
> >> +    [KEY_PC] = "KEY_PC",
> >> +    [KEY_TV] = "KEY_TV",
> >> +    [KEY_TV2] = "KEY_TV2",
> >> +    [KEY_VCR] = "KEY_VCR",
> >> +    [KEY_VCR2] = "KEY_VCR2",
> >> +    [KEY_SAT] = "KEY_SAT",
> >> +    [KEY_SAT2] = "KEY_SAT2",
> >> +    [KEY_CD] = "KEY_CD",
> >> +    [KEY_TAPE] = "KEY_TAPE",
> >> +    [KEY_RADIO] = "KEY_RADIO",
> >> +    [KEY_TUNER] = "KEY_TUNER",
> >> +    [KEY_PLAYER] = "KEY_PLAYER",
> >> +    [KEY_TEXT] = "KEY_TEXT",
> >> +    [KEY_DVD] = "KEY_DVD",
> >> +    [KEY_AUX] = "KEY_AUX",
> >> +    [KEY_MP3] = "KEY_MP3",
> >> +    [KEY_AUDIO] = "KEY_AUDIO",
> >> +    [KEY_VIDEO] = "KEY_VIDEO",
> >> +    [KEY_DIRECTORY] = "KEY_DIRECTORY",
> >> +    [KEY_LIST] = "KEY_LIST",
> >> +    [KEY_MEMO] = "KEY_MEMO",
> >> +    [KEY_CALENDAR] = "KEY_CALENDAR",
> >> +    [KEY_RED] = "KEY_RED",
> >> +    [KEY_GREEN] = "KEY_GREEN",
> >> +    [KEY_YELLOW] = "KEY_YELLOW",
> >> +    [KEY_BLUE] = "KEY_BLUE",
> >> +    [KEY_CHANNELUP] = "KEY_CHANNELUP",
> >> +    [KEY_CHANNELDOWN] = "KEY_CHANNELDOWN",
> >> +    [KEY_FIRST] = "KEY_FIRST",
> >> +    [KEY_LAST] = "KEY_LAST",
> >> +    [KEY_AB] = "KEY_AB",
> >> +    [KEY_NEXT] = "KEY_NEXT",
> >> +    [KEY_RESTART] = "KEY_RESTART",
> >> +    [KEY_SLOW] = "KEY_SLOW",
> >> +    [KEY_SHUFFLE] = "KEY_SHUFFLE",
> >> +    [KEY_BREAK] = "KEY_BREAK",
> >> +    [KEY_PREVIOUS] = "KEY_PREVIOUS",
> >> +    [KEY_DIGITS] = "KEY_DIGITS",
> >> +    [KEY_TEEN] = "KEY_TEEN",
> >> +    [KEY_TWEN] = "KEY_TWEN",
> >> +    [KEY_VIDEOPHONE] = "KEY_VIDEOPHONE",
> >> +    [KEY_GAMES] = "KEY_GAMES",
> >> +    [KEY_ZOOMIN] = "KEY_ZOOMIN",
> >> +    [KEY_ZOOMOUT] = "KEY_ZOOMOUT",
> >> +    [KEY_ZOOMRESET] = "KEY_ZOOMRESET",
> >> +    [KEY_WORDPROCESSOR] = "KEY_WORDPROCESSOR",
> >> +    [KEY_EDITOR] = "KEY_EDITOR",
> >> +    [KEY_SPREADSHEET] = "KEY_SPREADSHEET",
> >> +    [KEY_GRAPHICSEDITOR] = "KEY_GRAPHICSEDITOR",
> >> +    [KEY_PRESENTATION] = "KEY_PRESENTATION",
> >> +    [KEY_DATABASE] = "KEY_DATABASE",
> >> +    [KEY_NEWS] = "KEY_NEWS",
> >> +    [KEY_VOICEMAIL] = "KEY_VOICEMAIL",
> >> +    [KEY_ADDRESSBOOK] = "KEY_ADDRESSBOOK",
> >> +    [KEY_MESSENGER] = "KEY_MESSENGER",
> >> +    [KEY_DISPLAYTOGGLE] = "KEY_DISPLAYTOGGLE",
> >> +    [KEY_SPELLCHECK] = "KEY_SPELLCHECK",
> >> +    [KEY_LOGOFF] = "KEY_LOGOFF",
> >> +    [KEY_DOLLAR] = "KEY_DOLLAR",
> >> +    [KEY_EURO] = "KEY_EURO",
> >> +    [KEY_FRAMEBACK] = "KEY_FRAMEBACK",
> >> +    [KEY_FRAMEFORWARD] = "KEY_FRAMEFORWARD",
> >> +    [KEY_CONTEXT_MENU] = "KEY_CONTEXT_MENU",
> >> +    [KEY_MEDIA_REPEAT] = "KEY_MEDIA_REPEAT",
> >> +    [KEY_10CHANNELSUP] = "KEY_10CHANNELSUP",
> >> +    [KEY_10CHANNELSDOWN] = "KEY_10CHANNELSDOWN",
> >> +    [KEY_IMAGES] = "KEY_IMAGES",
> >> +    // [KEY_NOTIFICATION_CENTER] = "KEY_NOTIFICATION_CENTER",
> >> +    // [KEY_PICKUP_PHONE] = "KEY_PICKUP_PHONE",
> >> +    // [KEY_HANGUP_PHONE] = "KEY_HANGUP_PHONE",
> >> +    [KEY_DEL_EOL] = "KEY_DEL_EOL",
> >> +    [KEY_DEL_EOS] = "KEY_DEL_EOS",
> >> +    [KEY_INS_LINE] = "KEY_INS_LINE",
> >> +    [KEY_DEL_LINE] = "KEY_DEL_LINE",
> >> +    [KEY_FN] = "KEY_FN",
> >> +    [KEY_FN_ESC] = "KEY_FN_ESC",
> >> +    [KEY_FN_F1] = "KEY_FN_F1",
> >> +    [KEY_FN_F2] = "KEY_FN_F2",
> >> +    [KEY_FN_F3] = "KEY_FN_F3",
> >> +    [KEY_FN_F4] = "KEY_FN_F4",
> >> +    [KEY_FN_F5] = "KEY_FN_F5",
> >> +    [KEY_FN_F6] = "KEY_FN_F6",
> >> +    [KEY_FN_F7] = "KEY_FN_F7",
> >> +    [KEY_FN_F8] = "KEY_FN_F8",
> >> +    [KEY_FN_F9] = "KEY_FN_F9",
> >> +    [KEY_FN_F10] = "KEY_FN_F10",
> >> +    [KEY_FN_F11] = "KEY_FN_F11",
> >> +    [KEY_FN_F12] = "KEY_FN_F12",
> >> +    [KEY_FN_1] = "KEY_FN_1",
> >> +    [KEY_FN_2] = "KEY_FN_2",
> >> +    [KEY_FN_D] = "KEY_FN_D",
> >> +    [KEY_FN_E] = "KEY_FN_E",
> >> +    [KEY_FN_F] = "KEY_FN_F",
> >> +    [KEY_FN_S] = "KEY_FN_S",
> >> +    [KEY_FN_B] = "KEY_FN_B",
> >> +    // [KEY_FN_RIGHT_SHIFT] = "KEY_FN_RIGHT_SHIFT",
> >> +    [KEY_BRL_DOT1] = "KEY_BRL_DOT1",
> >> +    [KEY_BRL_DOT2] = "KEY_BRL_DOT2",
> >> +    [KEY_BRL_DOT3] = "KEY_BRL_DOT3",
> >> +    [KEY_BRL_DOT4] = "KEY_BRL_DOT4",
> >> +    [KEY_BRL_DOT5] = "KEY_BRL_DOT5",
> >> +    [KEY_BRL_DOT6] = "KEY_BRL_DOT6",
> >> +    [KEY_BRL_DOT7] = "KEY_BRL_DOT7",
> >> +    [KEY_BRL_DOT8] = "KEY_BRL_DOT8",
> >> +    [KEY_BRL_DOT9] = "KEY_BRL_DOT9",
> >> +    [KEY_BRL_DOT10] = "KEY_BRL_DOT10",
> >> +    [KEY_NUMERIC_0] = "KEY_NUMERIC_0",
> >> +    [KEY_NUMERIC_1] = "KEY_NUMERIC_1",
> >> +    [KEY_NUMERIC_2] = "KEY_NUMERIC_2",
> >> +    [KEY_NUMERIC_3] = "KEY_NUMERIC_3",
> >> +    [KEY_NUMERIC_4] = "KEY_NUMERIC_4",
> >> +    [KEY_NUMERIC_5] = "KEY_NUMERIC_5",
> >> +    [KEY_NUMERIC_6] = "KEY_NUMERIC_6",
> >> +    [KEY_NUMERIC_7] = "KEY_NUMERIC_7",
> >> +    [KEY_NUMERIC_8] = "KEY_NUMERIC_8",
> >> +    [KEY_NUMERIC_9] = "KEY_NUMERIC_9",
> >> +    [KEY_NUMERIC_STAR] = "KEY_NUMERIC_STAR",
> >> +    [KEY_NUMERIC_POUND] = "KEY_NUMERIC_POUND",
> >> +    [KEY_NUMERIC_A] = "KEY_NUMERIC_A",
> >> +    [KEY_NUMERIC_B] = "KEY_NUMERIC_B",
> >> +    [KEY_NUMERIC_C] = "KEY_NUMERIC_C",
> >> +    [KEY_NUMERIC_D] = "KEY_NUMERIC_D",
> >> +    [KEY_CAMERA_FOCUS] = "KEY_CAMERA_FOCUS",
> >> +    [KEY_WPS_BUTTON] = "KEY_WPS_BUTTON",
> >> +    [KEY_TOUCHPAD_TOGGLE] = "KEY_TOUCHPAD_TOGGLE",
> >> +    [KEY_TOUCHPAD_ON] = "KEY_TOUCHPAD_ON",
> >> +    [KEY_TOUCHPAD_OFF] = "KEY_TOUCHPAD_OFF",
> >> +    [KEY_CAMERA_ZOOMIN] = "KEY_CAMERA_ZOOMIN",
> >> +    [KEY_CAMERA_ZOOMOUT] = "KEY_CAMERA_ZOOMOUT",
> >> +    [KEY_CAMERA_UP] = "KEY_CAMERA_UP",
> >> +    [KEY_CAMERA_DOWN] = "KEY_CAMERA_DOWN",
> >> +    [KEY_CAMERA_LEFT] = "KEY_CAMERA_LEFT",
> >> +    [KEY_CAMERA_RIGHT] = "KEY_CAMERA_RIGHT",
> >> +    [KEY_ATTENDANT_ON] = "KEY_ATTENDANT_ON",
> >> +    [KEY_ATTENDANT_OFF] = "KEY_ATTENDANT_OFF",
> >> +    [KEY_ATTENDANT_TOGGLE] = "KEY_ATTENDANT_TOGGLE",
> >> +    [KEY_LIGHTS_TOGGLE] = "KEY_LIGHTS_TOGGLE",
> >> +    [KEY_ALS_TOGGLE] = "KEY_ALS_TOGGLE",
> >> +    [KEY_ROTATE_LOCK_TOGGLE] = "KEY_ROTATE_LOCK_TOGGLE",
> >> +    [KEY_BUTTONCONFIG] = "KEY_BUTTONCONFIG",
> >> +    [KEY_TASKMANAGER] = "KEY_TASKMANAGER",
> >> +    [KEY_JOURNAL] = "KEY_JOURNAL",
> >> +    [KEY_CONTROLPANEL] = "KEY_CONTROLPANEL",
> >> +    [KEY_APPSELECT] = "KEY_APPSELECT",
> >> +    [KEY_SCREENSAVER] = "KEY_SCREENSAVER",
> >> +    [KEY_VOICECOMMAND] = "KEY_VOICECOMMAND",
> >> +    [KEY_ASSISTANT] = "KEY_ASSISTANT",
> >> +    [KEY_KBD_LAYOUT_NEXT] = "KEY_KBD_LAYOUT_NEXT",
> >> +    // [KEY_EMOJI_PICKER] = "KEY_EMOJI_PICKER",
> >> +    //[KEY_DICTATE] = "KEY_DICTATE",
> >> +    //[KEY_CAMERA_ACCESS_ENABLE] = "KEY_CAMERA_ACCESS_ENABLE",
> >> +    //[KEY_CAMERA_ACCESS_DISABLE] = "KEY_CAMERA_ACCESS_DISABLE",
> >> +    //[KEY_CAMERA_ACCESS_TOGGLE] = "KEY_CAMERA_ACCESS_TOGGLE",
> >> +    [KEY_BRIGHTNESS_MIN] = "KEY_BRIGHTNESS_MIN",
> >> +    [KEY_BRIGHTNESS_MAX] = "KEY_BRIGHTNESS_MAX",
> >> +    [KEY_KBDINPUTASSIST_PREV] = "KEY_KBDINPUTASSIST_PREV",
> >> +    [KEY_KBDINPUTASSIST_NEXT] = "KEY_KBDINPUTASSIST_NEXT",
> >> +    [KEY_KBDINPUTASSIST_PREVGROUP] = "KEY_KBDINPUTASSIST_PREVGROUP",
> >> +    [KEY_KBDINPUTASSIST_NEXTGROUP] = "KEY_KBDINPUTASSIST_NEXTGROUP",
> >> +    [KEY_KBDINPUTASSIST_ACCEPT] = "KEY_KBDINPUTASSIST_ACCEPT",
> >> +    [KEY_KBDINPUTASSIST_CANCEL] = "KEY_KBDINPUTASSIST_CANCEL",
> >> +    [KEY_RIGHT_UP] = "KEY_RIGHT_UP",
> >> +    [KEY_RIGHT_DOWN] = "KEY_RIGHT_DOWN",
> >> +    [KEY_LEFT_UP] = "KEY_LEFT_UP",
> >> +    [KEY_LEFT_DOWN] = "KEY_LEFT_DOWN",
> >> +    [KEY_ROOT_MENU] = "KEY_ROOT_MENU",
> >> +    [KEY_MEDIA_TOP_MENU] = "KEY_MEDIA_TOP_MENU",
> >> +    [KEY_NUMERIC_11] = "KEY_NUMERIC_11",
> >> +    [KEY_NUMERIC_12] = "KEY_NUMERIC_12",
> >> +    [KEY_AUDIO_DESC] = "KEY_AUDIO_DESC",
> >> +    [KEY_3D_MODE] = "KEY_3D_MODE",
> >> +    [KEY_NEXT_FAVORITE] = "KEY_NEXT_FAVORITE",
> >> +    [KEY_STOP_RECORD] = "KEY_STOP_RECORD",
> >> +    [KEY_PAUSE_RECORD] = "KEY_PAUSE_RECORD",
> >> +    [KEY_VOD] = "KEY_VOD",
> >> +    [KEY_UNMUTE] = "KEY_UNMUTE",
> >> +    [KEY_FASTREVERSE] = "KEY_FASTREVERSE",
> >> +    [KEY_SLOWREVERSE] = "KEY_SLOWREVERSE",
> >> +    [KEY_DATA] = "KEY_DATA",
> >> +    [KEY_ONSCREEN_KEYBOARD] = "KEY_ONSCREEN_KEYBOARD",
> >> +    [KEY_PRIVACY_SCREEN_TOGGLE] = "KEY_PRIVACY_SCREEN_TOGGLE",
> >> +    [KEY_SELECTIVE_SCREENSHOT] = "KEY_SELECTIVE_SCREENSHOT",
> >> +    // [KEY_NEXT_ELEMENT] = "KEY_NEXT_ELEMENT",
> >> +    // [KEY_PREVIOUS_ELEMENT] = "KEY_PREVIOUS_ELEMENT",
> >> +    // [KEY_AUTOPILOT_ENGAGE_TOGGLE] = "KEY_AUTOPILOT_ENGAGE_TOGGLE",
> >> +    // [KEY_MARK_WAYPOINT] = "KEY_MARK_WAYPOINT",
> >> +    // [KEY_SOS] = "KEY_SOS",
> >> +    // [KEY_NAV_CHART] = "KEY_NAV_CHART",
> >> +    // [KEY_FISHING_CHART] = "KEY_FISHING_CHART",
> >> +    // [KEY_SINGLE_RANGE_RADAR] = "KEY_SINGLE_RANGE_RADAR",
> >> +    // [KEY_DUAL_RANGE_RADAR] = "KEY_DUAL_RANGE_RADAR",
> >> +    // [KEY_RADAR_OVERLAY] = "KEY_RADAR_OVERLAY",
> >> +    // [KEY_TRADITIONAL_SONAR] = "KEY_TRADITIONAL_SONAR",
> >> +    //  [KEY_CLEARVU_SONAR] = "KEY_CLEARVU_SONAR",
> >> +    // [KEY_SIDEVU_SONAR] = "KEY_SIDEVU_SONAR",
> >> +    // [KEY_NAV_INFO] = "KEY_NAV_INFO",
> >> +    // [KEY_BRIGHTNESS_MENU] = "KEY_BRIGHTNESS_MENU",
> >> +    [KEY_MACRO1] = "KEY_MACRO1",
> >> +    [KEY_MACRO2] = "KEY_MACRO2",
> >> +    [KEY_MACRO3] = "KEY_MACRO3",
> >> +    [KEY_MACRO4] = "KEY_MACRO4",
> >> +    [KEY_MACRO5] = "KEY_MACRO5",
> >> +    [KEY_MACRO6] = "KEY_MACRO6",
> >> +    [KEY_MACRO7] = "KEY_MACRO7",
> >> +    [KEY_MACRO8] = "KEY_MACRO8",
> >> +    [KEY_MACRO9] = "KEY_MACRO9",
> >> +    [KEY_MACRO10] = "KEY_MACRO10",
> >> +    [KEY_MACRO11] = "KEY_MACRO11",
> >> +    [KEY_MACRO12] = "KEY_MACRO12",
> >> +    [KEY_MACRO13] = "KEY_MACRO13",
> >> +    [KEY_MACRO14] = "KEY_MACRO14",
> >> +    [KEY_MACRO15] = "KEY_MACRO15",
> >> +    [KEY_MACRO16] = "KEY_MACRO16",
> >> +    [KEY_MACRO17] = "KEY_MACRO17",
> >> +    [KEY_MACRO18] = "KEY_MACRO18",
> >> +    [KEY_MACRO19] = "KEY_MACRO19",
> >> +    [KEY_MACRO20] = "KEY_MACRO20",
> >> +    [KEY_MACRO21] = "KEY_MACRO21",
> >> +    [KEY_MACRO22] = "KEY_MACRO22",
> >> +    [KEY_MACRO23] = "KEY_MACRO23",
> >> +    [KEY_MACRO24] = "KEY_MACRO24",
> >> +    [KEY_MACRO25] = "KEY_MACRO25",
> >> +    [KEY_MACRO26] = "KEY_MACRO26",
> >> +    [KEY_MACRO27] = "KEY_MACRO27",
> >> +    [KEY_MACRO28] = "KEY_MACRO28",
> >> +    [KEY_MACRO29] = "KEY_MACRO29",
> >> +    [KEY_MACRO30] = "KEY_MACRO30",
> >> +    [KEY_MACRO_RECORD_START] = "KEY_MACRO_RECORD_START",
> >> +    [KEY_MACRO_RECORD_STOP] = "KEY_MACRO_RECORD_STOP",
> >> +    [KEY_MACRO_PRESET_CYCLE] = "KEY_MACRO_PRESET_CYCLE",
> >> +    [KEY_MACRO_PRESET1] = "KEY_MACRO_PRESET1",
> >> +    [KEY_MACRO_PRESET2] = "KEY_MACRO_PRESET2",
> >> +    [KEY_MACRO_PRESET3] = "KEY_MACRO_PRESET3",
> >> +    [KEY_KBD_LCD_MENU1] = "KEY_KBD_LCD_MENU1",
> >> +    [KEY_KBD_LCD_MENU2] = "KEY_KBD_LCD_MENU2",
> >> +    [KEY_KBD_LCD_MENU3] = "KEY_KBD_LCD_MENU3",
> >> +    [KEY_KBD_LCD_MENU4] = "KEY_KBD_LCD_MENU4",
> >> +    [KEY_KBD_LCD_MENU5] = "KEY_KBD_LCD_MENU5",
> >> +    [KEY_MAX] = "KEY_MAX",
> >> +    [BTN_0] = "BTN_0",
> >> +    [BTN_1] = "BTN_1",
> >> +    [BTN_2] = "BTN_2",
> >> +    [BTN_3] = "BTN_3",
> >> +    [BTN_4] = "BTN_4",
> >> +    [BTN_5] = "BTN_5",
> >> +    [BTN_6] = "BTN_6",
> >> +    [BTN_7] = "BTN_7",
> >> +    [BTN_8] = "BTN_8",
> >> +    [BTN_9] = "BTN_9",
> >> +    [BTN_LEFT] = "BTN_LEFT",
> >> +    [BTN_RIGHT] = "BTN_RIGHT",
> >> +    [BTN_MIDDLE] = "BTN_MIDDLE",
> >> +    [BTN_SIDE] = "BTN_SIDE",
> >> +    [BTN_EXTRA] = "BTN_EXTRA",
> >> +    [BTN_FORWARD] = "BTN_FORWARD",
> >> +    [BTN_BACK] = "BTN_BACK",
> >> +    [BTN_TASK] = "BTN_TASK",
> >> +    [BTN_TRIGGER] = "BTN_TRIGGER",
> >> +    [BTN_THUMB] = "BTN_THUMB",
> >> +    [BTN_THUMB2] = "BTN_THUMB2",
> >> +    [BTN_TOP] = "BTN_TOP",
> >> +    [BTN_TOP2] = "BTN_TOP2",
> >> +    [BTN_PINKIE] = "BTN_PINKIE",
> >> +    [BTN_BASE] = "BTN_BASE",
> >> +    [BTN_BASE2] = "BTN_BASE2",
> >> +    [BTN_BASE3] = "BTN_BASE3",
> >> +    [BTN_BASE4] = "BTN_BASE4",
> >> +    [BTN_BASE5] = "BTN_BASE5",
> >> +    [BTN_BASE6] = "BTN_BASE6",
> >> +    [BTN_DEAD] = "BTN_DEAD",
> >> +    [BTN_SOUTH] = "BTN_SOUTH",
> >> +    [BTN_EAST] = "BTN_EAST",
> >> +    [BTN_C] = "BTN_C",
> >> +    [BTN_NORTH] = "BTN_NORTH",
> >> +    [BTN_WEST] = "BTN_WEST",
> >> +    [BTN_Z] = "BTN_Z",
> >> +    [BTN_TL] = "BTN_TL",
> >> +    [BTN_TR] = "BTN_TR",
> >> +    [BTN_TL2] = "BTN_TL2",
> >> +    [BTN_TR2] = "BTN_TR2",
> >> +    [BTN_SELECT] = "BTN_SELECT",
> >> +    [BTN_START] = "BTN_START",
> >> +    [BTN_MODE] = "BTN_MODE",
> >> +    [BTN_THUMBL] = "BTN_THUMBL",
> >> +    [BTN_THUMBR] = "BTN_THUMBR",
> >> +    [BTN_TOOL_PEN] = "BTN_TOOL_PEN",
> >> +    [BTN_TOOL_RUBBER] = "BTN_TOOL_RUBBER",
> >> +    [BTN_TOOL_BRUSH] = "BTN_TOOL_BRUSH",
> >> +    [BTN_TOOL_PENCIL] = "BTN_TOOL_PENCIL",
> >> +    [BTN_TOOL_AIRBRUSH] = "BTN_TOOL_AIRBRUSH",
> >> +    [BTN_TOOL_FINGER] = "BTN_TOOL_FINGER",
> >> +    [BTN_TOOL_MOUSE] = "BTN_TOOL_MOUSE",
> >> +    [BTN_TOOL_LENS] = "BTN_TOOL_LENS",
> >> +    [BTN_TOOL_QUINTTAP] = "BTN_TOOL_QUINTTAP",
> >> +    [BTN_STYLUS3] = "BTN_STYLUS3",
> >> +    [BTN_TOUCH] = "BTN_TOUCH",
> >> +    [BTN_STYLUS] = "BTN_STYLUS",
> >> +    [BTN_STYLUS2] = "BTN_STYLUS2",
> >> +    [BTN_TOOL_DOUBLETAP] = "BTN_TOOL_DOUBLETAP",
> >> +    [BTN_TOOL_TRIPLETAP] = "BTN_TOOL_TRIPLETAP",
> >> +    [BTN_TOOL_QUADTAP] = "BTN_TOOL_QUADTAP",
> >> +    [BTN_GEAR_DOWN] = "BTN_GEAR_DOWN",
> >> +    [BTN_GEAR_UP] = "BTN_GEAR_UP",
> >> +    [BTN_DPAD_UP] = "BTN_DPAD_UP",
> >> +    [BTN_DPAD_DOWN] = "BTN_DPAD_DOWN",
> >> +    [BTN_DPAD_LEFT] = "BTN_DPAD_LEFT",
> >> +    [BTN_DPAD_RIGHT] = "BTN_DPAD_RIGHT",
> >> +    [BTN_TRIGGER_HAPPY1] = "BTN_TRIGGER_HAPPY1",
> >> +    [BTN_TRIGGER_HAPPY2] = "BTN_TRIGGER_HAPPY2",
> >> +    [BTN_TRIGGER_HAPPY3] = "BTN_TRIGGER_HAPPY3",
> >> +    [BTN_TRIGGER_HAPPY4] = "BTN_TRIGGER_HAPPY4",
> >> +    [BTN_TRIGGER_HAPPY5] = "BTN_TRIGGER_HAPPY5",
> >> +    [BTN_TRIGGER_HAPPY6] = "BTN_TRIGGER_HAPPY6",
> >> +    [BTN_TRIGGER_HAPPY7] = "BTN_TRIGGER_HAPPY7",
> >> +    [BTN_TRIGGER_HAPPY8] = "BTN_TRIGGER_HAPPY8",
> >> +    [BTN_TRIGGER_HAPPY9] = "BTN_TRIGGER_HAPPY9",
> >> +    [BTN_TRIGGER_HAPPY10] = "BTN_TRIGGER_HAPPY10",
> >> +    [BTN_TRIGGER_HAPPY11] = "BTN_TRIGGER_HAPPY11",
> >> +    [BTN_TRIGGER_HAPPY12] = "BTN_TRIGGER_HAPPY12",
> >> +    [BTN_TRIGGER_HAPPY13] = "BTN_TRIGGER_HAPPY13",
> >> +    [BTN_TRIGGER_HAPPY14] = "BTN_TRIGGER_HAPPY14",
> >> +    [BTN_TRIGGER_HAPPY15] = "BTN_TRIGGER_HAPPY15",
> >> +    [BTN_TRIGGER_HAPPY16] = "BTN_TRIGGER_HAPPY16",
> >> +    [BTN_TRIGGER_HAPPY17] = "BTN_TRIGGER_HAPPY17",
> >> +    [BTN_TRIGGER_HAPPY18] = "BTN_TRIGGER_HAPPY18",
> >> +    [BTN_TRIGGER_HAPPY19] = "BTN_TRIGGER_HAPPY19",
> >> +    [BTN_TRIGGER_HAPPY20] = "BTN_TRIGGER_HAPPY20",
> >> +    [BTN_TRIGGER_HAPPY21] = "BTN_TRIGGER_HAPPY21",
> >> +    [BTN_TRIGGER_HAPPY22] = "BTN_TRIGGER_HAPPY22",
> >> +    [BTN_TRIGGER_HAPPY23] = "BTN_TRIGGER_HAPPY23",
> >> +    [BTN_TRIGGER_HAPPY24] = "BTN_TRIGGER_HAPPY24",
> >> +    [BTN_TRIGGER_HAPPY25] = "BTN_TRIGGER_HAPPY25",
> >> +    [BTN_TRIGGER_HAPPY26] = "BTN_TRIGGER_HAPPY26",
> >> +    [BTN_TRIGGER_HAPPY27] = "BTN_TRIGGER_HAPPY27",
> >> +    [BTN_TRIGGER_HAPPY28] = "BTN_TRIGGER_HAPPY28",
> >> +    [BTN_TRIGGER_HAPPY29] = "BTN_TRIGGER_HAPPY29",
> >> +    [BTN_TRIGGER_HAPPY30] = "BTN_TRIGGER_HAPPY30",
> >> +    [BTN_TRIGGER_HAPPY31] = "BTN_TRIGGER_HAPPY31",
> >> +    [BTN_TRIGGER_HAPPY32] = "BTN_TRIGGER_HAPPY32",
> >> +    [BTN_TRIGGER_HAPPY33] = "BTN_TRIGGER_HAPPY33",
> >> +    [BTN_TRIGGER_HAPPY34] = "BTN_TRIGGER_HAPPY34",
> >> +    [BTN_TRIGGER_HAPPY35] = "BTN_TRIGGER_HAPPY35",
> >> +    [BTN_TRIGGER_HAPPY36] = "BTN_TRIGGER_HAPPY36",
> >> +    [BTN_TRIGGER_HAPPY37] = "BTN_TRIGGER_HAPPY37",
> >> +    [BTN_TRIGGER_HAPPY38] = "BTN_TRIGGER_HAPPY38",
> >> +    [BTN_TRIGGER_HAPPY39] = "BTN_TRIGGER_HAPPY39",
> >> +    [BTN_TRIGGER_HAPPY40] = "BTN_TRIGGER_HAPPY40",
> >> +};
> >> +
> >> +static const char * const led_map[LED_MAX + 1] = {
> >> +    [LED_NUML] = "LED_NUML",
> >> +    [LED_CAPSL] = "LED_CAPSL",
> >> *** 11201 LINES SKIPPED ***
> >>
> >
> > make buildworld fails to build due to this error:
> >
> > [...]
> > c++  -target x86_64-unknown-freebsd16.0
> --sysroot=/usr/obj/usr/src/amd64.amd64/tmp
> > -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -fpie  -O2 -pipe -fno-common
> -march=native -I.
> > -I/usr/src/sbin/devd -fPIE -DNDEBUG -MD -MF.depend.devd.pieo -MTdevd.pieo
> > -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Wall
> -Wno-format-y2k -W
> > -Wno-unused-parameter -Wpointer-arith -Wreturn-type -Wcast-qual
> -Wwrite-strings -Wswitch
> > -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Wdate-time
> > -Wmissing-variable-declarations -Wthread-safety -Wno-empty-body
> -Wno-string-plus-int
> > -Wno-unused-const-variable -Wno-error=unused-but-set-parameter
> > -Wno-error=cast-function-type-mismatch
> -Wno-missing-variable-declarations -Qunused-arguments
> > -march=native  -fPIE -std=gnu++17         -c /usr/src/sbin/devd/devd.cc
> -o devd.pieo
> > /usr/src/sbin/devd/devd.cc:1228:2: error: "Remove this gross hack" 1228
> | #error "Remove this
> > gross hack" |  ^ 1 error generated. *** Error code 1
>
> Unrelated. This is because __FreeBSD_version was bumped now 15
> branched, and this was left in to scream at people to do something for
> FreeBSD 16. I guess that worked, though a bit of an unfortunate way to
> start the 16 cycle :)
>

Works as designed.

Warner

Reply via email to