Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Sep 2025 22:37:55 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Jessica Clarke <jrtc27@freebsd.org>
Cc:        A FreeBSD User <freebsd@walstatt-de.de>, Vladimir Kondratyev <wulf@freebsd.org>,  "src-committers@freebsd.org" <src-committers@freebsd.org>,  "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>,  "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org>
Subject:   Re: git: aef807876c30 - main - moused(8): Add support for evdev protocol
Message-ID:  <CANCZdfow5y7PLV3SYyUm9RBeemup7MZ5aLac9Kx2H_eD_1DPrQ@mail.gmail.com>
In-Reply-To: <4AC13FF6-98EB-41C9-83EC-E8B9FB6A1093@freebsd.org>
References:  <202509042108.584L86Ro060944@gitrepo.freebsd.org> <20250905061122.69e01f1a@thor.sb211.local> <4AC13FF6-98EB-41C9-83EC-E8B9FB6A1093@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000726764063e066722
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Sep 4, 2025 at 10:17=E2=80=AFPM Jessica Clarke <jrtc27@freebsd.org>=
 wrote:

> On 5 Sep 2025, at 05:13, A FreeBSD User <freebsd@walstatt-de.de> wrote:
>
> > Am Tage des Herren Thu, 4 Sep 2025 21:08:06 GMT
> > Vladimir Kondratyev <wulf@FreeBSD.org> schrieb:
> >
> >> The branch main has been updated by wulf:
> >>
> >> URL:
> https://cgit.FreeBSD.org/src/commit/?id=3Daef807876c305587c60f73e2cd91411=
5d22a53fd
> >>
> >> commit aef807876c305587c60f73e2cd914115d22a53fd
> >> Author:     Vladimir Kondratyev <wulf@FreeBSD.org>
> >> AuthorDate: 2025-09-04 21:07:25 +0000
> >> Commit:     Vladimir Kondratyev <wulf@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=3D"/dev/psm0"
> >>          moused_nondefault_enable=3D"YES"
> >>       One may add hw.usb.usbhid.enable=3D0 to /boot/loader.conf to ena=
ble
> >>       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 =3D> msconvd/msconvd.8}    |  395 +--
> >> usr.sbin/moused/{moused.c =3D> 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=3D"NO" # font 8x14 from
> >> /usr/share/{syscons,vt}/fonts/* (or NO). font8x8=3D"NO" # font 8x8 fro=
m
> >> /usr/share/{syscons,vt}/fonts/* (or NO). blanktime=3D"300" # blank tim=
e
> (in
> >> seconds) or "NO" to turn it off. saver=3D"NO" # screen saver: Uses
> >> /boot/kernel/${saver}_saver.ko -moused_nondefault_enable=3D"YES" # Tre=
at
> non-default mice as
> >> enabled unless +moused_nondefault_enable=3D"NO" # Treat non-default mi=
ce
> as enabled unless
> >>       # specifically overridden in rc.conf(5).
> >> moused_enable=3D"NO" # Run the mouse daemon.
> >> moused_type=3D"auto" # See man page for rc.conf(5) for available setti=
ngs.
> >> -moused_port=3D"/dev/psm0" # Set to your mouse port.
> >> +moused_port=3D"auto" # Set to your mouse port.
> >> moused_flags=3D"" # Any additional flags to moused.
> >> mousechar_start=3D"NO" # if 0xd0-0xd3 default range is occupied in you=
r
> >> # language code table, specify alternative range
> >> # start like mousechar_start=3D3, see vidcontrol(1)
> >> +msconvd_enable=3D"NO" # Run the mouse protocol conversion daemon.
> >> +msconvd_type=3D"auto" # See rc.conf(5) man page for available
> moused_type-s.
> >> +msconvd_ports=3D"" # List of msconvd ports.
> >> +msconvd_flags=3D"" # Any additional flags to msconvd.
> >> allscreens_flags=3D"" # Set this vidcontrol mode for all virtual scree=
ns
> >> allscreens_kbdflags=3D"" # 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=3D jail
> >> .if ${MK_LEGACY_CONSOLE} !=3D "no"
> >> CONFGROUPS+=3D CONSOLE
> >> CONSOLE+=3D moused
> >> +CONSOLE+=3D msconvd
> >> CONSOLE+=3D syscons
> >> CONSOLEPACKAGE=3D 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=3D"msconvd"
> >> +desc=3D"Mouse protocol conversion daemon"
> >> +command=3D"/usr/sbin/${name}"
> >> +start_cmd=3D"msconvd_start"
> >> +pidprefix=3D"/var/run/msconvd"
> >> +load_rc_config $name
> >> +
> >> +: ${msconvd_enable=3D"NO"}
> >> +: ${msconvd_type=3D"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=3D"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=3D\${msconvd_$2_enable-${msconvd_enable}}
> >> + rcvar=3D"msconvd_$2_enable"
> >> + pidfile=3D"${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=3D$1
> >> + eval myflags=3D\${msconvd_${ms}_flags-$msconvd_flags}
> >> + eval myport=3D\${msconvd_${ms}_port-/dev/${ms}}
> >> + eval mytype=3D\${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+=3Dusr/share/man/man1/host.1.gz
> >> .endif
> >>
> >> .if ${MK_LEGACY_CONSOLE} =3D=3D no
> >> +OLD_FILES+=3Detc/moused.conf
> >> OLD_FILES+=3Detc/rc.d/moused
> >> +OLD_FILES+=3Detc/rc.d/msconvd
> >> OLD_FILES+=3Detc/rc.d/syscons
> >> OLD_FILES+=3Dusr/sbin/kbdcontrol
> >> OLD_FILES+=3Dusr/sbin/kbdmap
> >> OLD_FILES+=3Dusr/sbin/moused
> >> +OLD_FILES+=3Dusr/sbin/msconvd
> >> OLD_FILES+=3Dusr/sbin/vidcontrol
> >> OLD_FILES+=3Dusr/sbin/vidfont
> >> OLD_FILES+=3Dusr/share/man/man1/kbdcontrol.1.gz
> >> @@ -3806,7 +3809,11 @@ OLD_FILES+=3Dusr/share/man/man1/vidcontrol.1.gz
> >> OLD_FILES+=3Dusr/share/man/man1/vidfont.1.gz
> >> OLD_FILES+=3Dusr/share/man/man5/kbdmap.5.gz
> >> OLD_FILES+=3Dusr/share/man/man5/keymap.5.gz
> >> +OLD_FILES+=3Dusr/share/man/man5/moused.conf.5.gz
> >> OLD_FILES+=3Dusr/share/man/man8/moused.8.gz
> >> +OLD_FILES+=3Dusr/share/man/man8/msconvd.8.gz
> >> +OLD_FILES+=3Dusr/share/moused/5-generic-touchpad.quirks
> >> +OLD_DIRS+=3Dusr/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=3D console-tools
> >> -PROG=3D moused
> >> -MAN=3D moused.8
> >> +SUBDIR+=3Dmoused
> >> +SUBDIR+=3Dmsconvd
> >>
> >> -LIBADD=3D m util
> >> -
> >> -#BINMODE=3D4555
> >> -#PRECIOUSPROG=3D
> >> -
> >> -.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 =3D \
> >> - include \
> >> - include/xlocale \
> >> - lib/${CSU_DIR} \
> >> - lib/libc \
> >> - lib/libcompiler_rt \
> >> - lib/libutil \
> >> - lib/msun \
> >> -
> >> -
> >> -.include <dirdeps.mk>
> >> -
> >> -.if ${DEP_RELDIR} =3D=3D ${_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=3D console-tools
> >> +PROG=3D moused
> >> +
> >> +SRCS=3D 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=3D moused.8 \
> >> + moused.conf.5
> >> +CONFS=3D moused.conf
> >> +QUIRKS=3D 5-generic-touchpad.quirks
> >> +
> >> +CWARNFLAGS.quirks.c+=3D -Wno-cast-align -Wno-shadow -Wno-cast-qual \
> >> + -Wno-unused-variable -Wno-unused-parameter
> >> +CWARNFLAGS.util.c+=3D -Wno-shadow
> >> +LIBADD=3D m util
> >> +BINDIR=3D /usr/sbin
> >> +
> >> +FILES=3D ${QUIRKS:S|^|quirks/|}
> >> +FILESDIR=3D /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] =3D {
> >> +    [EV_SYN] =3D "EV_SYN",
> >> +    [EV_KEY] =3D "EV_KEY",
> >> +    [EV_REL] =3D "EV_REL",
> >> +    [EV_ABS] =3D "EV_ABS",
> >> +    [EV_MSC] =3D "EV_MSC",
> >> +    [EV_SW] =3D "EV_SW",
> >> +    [EV_LED] =3D "EV_LED",
> >> +    [EV_SND] =3D "EV_SND",
> >> +    [EV_REP] =3D "EV_REP",
> >> +    [EV_FF] =3D "EV_FF",
> >> +    [EV_PWR] =3D "EV_PWR",
> >> +    [EV_FF_STATUS] =3D "EV_FF_STATUS",
> >> +    [EV_MAX] =3D "EV_MAX",
> >> +};
> >> +
> >> +static const char * const rel_map[REL_MAX + 1] =3D {
> >> +    [REL_X] =3D "REL_X",
> >> +    [REL_Y] =3D "REL_Y",
> >> +    [REL_Z] =3D "REL_Z",
> >> +    [REL_RX] =3D "REL_RX",
> >> +    [REL_RY] =3D "REL_RY",
> >> +    [REL_RZ] =3D "REL_RZ",
> >> +    [REL_HWHEEL] =3D "REL_HWHEEL",
> >> +    [REL_DIAL] =3D "REL_DIAL",
> >> +    [REL_WHEEL] =3D "REL_WHEEL",
> >> +    [REL_MISC] =3D "REL_MISC",
> >> +    [REL_RESERVED] =3D "REL_RESERVED",
> >> +    [REL_WHEEL_HI_RES] =3D "REL_WHEEL_HI_RES",
> >> +    [REL_HWHEEL_HI_RES] =3D "REL_HWHEEL_HI_RES",
> >> +    [REL_MAX] =3D "REL_MAX",
> >> +};
> >> +
> >> +static const char * const abs_map[ABS_MAX + 1] =3D {
> >> +    [ABS_X] =3D "ABS_X",
> >> +    [ABS_Y] =3D "ABS_Y",
> >> +    [ABS_Z] =3D "ABS_Z",
> >> +    [ABS_RX] =3D "ABS_RX",
> >> +    [ABS_RY] =3D "ABS_RY",
> >> +    [ABS_RZ] =3D "ABS_RZ",
> >> +    [ABS_THROTTLE] =3D "ABS_THROTTLE",
> >> +    [ABS_RUDDER] =3D "ABS_RUDDER",
> >> +    [ABS_WHEEL] =3D "ABS_WHEEL",
> >> +    [ABS_GAS] =3D "ABS_GAS",
> >> +    [ABS_BRAKE] =3D "ABS_BRAKE",
> >> +    [ABS_HAT0X] =3D "ABS_HAT0X",
> >> +    [ABS_HAT0Y] =3D "ABS_HAT0Y",
> >> +    [ABS_HAT1X] =3D "ABS_HAT1X",
> >> +    [ABS_HAT1Y] =3D "ABS_HAT1Y",
> >> +    [ABS_HAT2X] =3D "ABS_HAT2X",
> >> +    [ABS_HAT2Y] =3D "ABS_HAT2Y",
> >> +    [ABS_HAT3X] =3D "ABS_HAT3X",
> >> +    [ABS_HAT3Y] =3D "ABS_HAT3Y",
> >> +    [ABS_PRESSURE] =3D "ABS_PRESSURE",
> >> +    [ABS_DISTANCE] =3D "ABS_DISTANCE",
> >> +    [ABS_TILT_X] =3D "ABS_TILT_X",
> >> +    [ABS_TILT_Y] =3D "ABS_TILT_Y",
> >> +    [ABS_TOOL_WIDTH] =3D "ABS_TOOL_WIDTH",
> >> +    [ABS_VOLUME] =3D "ABS_VOLUME",
> >> +    // [ABS_PROFILE] =3D "ABS_PROFILE",
> >> +    [ABS_MISC] =3D "ABS_MISC",
> >> +    [ABS_RESERVED] =3D "ABS_RESERVED",
> >> +    [ABS_MT_SLOT] =3D "ABS_MT_SLOT",
> >> +    [ABS_MT_TOUCH_MAJOR] =3D "ABS_MT_TOUCH_MAJOR",
> >> +    [ABS_MT_TOUCH_MINOR] =3D "ABS_MT_TOUCH_MINOR",
> >> +    [ABS_MT_WIDTH_MAJOR] =3D "ABS_MT_WIDTH_MAJOR",
> >> +    [ABS_MT_WIDTH_MINOR] =3D "ABS_MT_WIDTH_MINOR",
> >> +    [ABS_MT_ORIENTATION] =3D "ABS_MT_ORIENTATION",
> >> +    [ABS_MT_POSITION_X] =3D "ABS_MT_POSITION_X",
> >> +    [ABS_MT_POSITION_Y] =3D "ABS_MT_POSITION_Y",
> >> +    [ABS_MT_TOOL_TYPE] =3D "ABS_MT_TOOL_TYPE",
> >> +    [ABS_MT_BLOB_ID] =3D "ABS_MT_BLOB_ID",
> >> +    [ABS_MT_TRACKING_ID] =3D "ABS_MT_TRACKING_ID",
> >> +    [ABS_MT_PRESSURE] =3D "ABS_MT_PRESSURE",
> >> +    [ABS_MT_DISTANCE] =3D "ABS_MT_DISTANCE",
> >> +    [ABS_MT_TOOL_X] =3D "ABS_MT_TOOL_X",
> >> +    [ABS_MT_TOOL_Y] =3D "ABS_MT_TOOL_Y",
> >> +    [ABS_MAX] =3D "ABS_MAX",
> >> +};
> >> +
> >> +static const char * const key_map[KEY_MAX + 1] =3D {
> >> +    [KEY_RESERVED] =3D "KEY_RESERVED",
> >> +    [KEY_ESC] =3D "KEY_ESC",
> >> +    [KEY_1] =3D "KEY_1",
> >> +    [KEY_2] =3D "KEY_2",
> >> +    [KEY_3] =3D "KEY_3",
> >> +    [KEY_4] =3D "KEY_4",
> >> +    [KEY_5] =3D "KEY_5",
> >> +    [KEY_6] =3D "KEY_6",
> >> +    [KEY_7] =3D "KEY_7",
> >> +    [KEY_8] =3D "KEY_8",
> >> +    [KEY_9] =3D "KEY_9",
> >> +    [KEY_0] =3D "KEY_0",
> >> +    [KEY_MINUS] =3D "KEY_MINUS",
> >> +    [KEY_EQUAL] =3D "KEY_EQUAL",
> >> +    [KEY_BACKSPACE] =3D "KEY_BACKSPACE",
> >> +    [KEY_TAB] =3D "KEY_TAB",
> >> +    [KEY_Q] =3D "KEY_Q",
> >> +    [KEY_W] =3D "KEY_W",
> >> +    [KEY_E] =3D "KEY_E",
> >> +    [KEY_R] =3D "KEY_R",
> >> +    [KEY_T] =3D "KEY_T",
> >> +    [KEY_Y] =3D "KEY_Y",
> >> +    [KEY_U] =3D "KEY_U",
> >> +    [KEY_I] =3D "KEY_I",
> >> +    [KEY_O] =3D "KEY_O",
> >> +    [KEY_P] =3D "KEY_P",
> >> +    [KEY_LEFTBRACE] =3D "KEY_LEFTBRACE",
> >> +    [KEY_RIGHTBRACE] =3D "KEY_RIGHTBRACE",
> >> +    [KEY_ENTER] =3D "KEY_ENTER",
> >> +    [KEY_LEFTCTRL] =3D "KEY_LEFTCTRL",
> >> +    [KEY_A] =3D "KEY_A",
> >> +    [KEY_S] =3D "KEY_S",
> >> +    [KEY_D] =3D "KEY_D",
> >> +    [KEY_F] =3D "KEY_F",
> >> +    [KEY_G] =3D "KEY_G",
> >> +    [KEY_H] =3D "KEY_H",
> >> +    [KEY_J] =3D "KEY_J",
> >> +    [KEY_K] =3D "KEY_K",
> >> +    [KEY_L] =3D "KEY_L",
> >> +    [KEY_SEMICOLON] =3D "KEY_SEMICOLON",
> >> +    [KEY_APOSTROPHE] =3D "KEY_APOSTROPHE",
> >> +    [KEY_GRAVE] =3D "KEY_GRAVE",
> >> +    [KEY_LEFTSHIFT] =3D "KEY_LEFTSHIFT",
> >> +    [KEY_BACKSLASH] =3D "KEY_BACKSLASH",
> >> +    [KEY_Z] =3D "KEY_Z",
> >> +    [KEY_X] =3D "KEY_X",
> >> +    [KEY_C] =3D "KEY_C",
> >> +    [KEY_V] =3D "KEY_V",
> >> +    [KEY_B] =3D "KEY_B",
> >> +    [KEY_N] =3D "KEY_N",
> >> +    [KEY_M] =3D "KEY_M",
> >> +    [KEY_COMMA] =3D "KEY_COMMA",
> >> +    [KEY_DOT] =3D "KEY_DOT",
> >> +    [KEY_SLASH] =3D "KEY_SLASH",
> >> +    [KEY_RIGHTSHIFT] =3D "KEY_RIGHTSHIFT",
> >> +    [KEY_KPASTERISK] =3D "KEY_KPASTERISK",
> >> +    [KEY_LEFTALT] =3D "KEY_LEFTALT",
> >> +    [KEY_SPACE] =3D "KEY_SPACE",
> >> +    [KEY_CAPSLOCK] =3D "KEY_CAPSLOCK",
> >> +    [KEY_F1] =3D "KEY_F1",
> >> +    [KEY_F2] =3D "KEY_F2",
> >> +    [KEY_F3] =3D "KEY_F3",
> >> +    [KEY_F4] =3D "KEY_F4",
> >> +    [KEY_F5] =3D "KEY_F5",
> >> +    [KEY_F6] =3D "KEY_F6",
> >> +    [KEY_F7] =3D "KEY_F7",
> >> +    [KEY_F8] =3D "KEY_F8",
> >> +    [KEY_F9] =3D "KEY_F9",
> >> +    [KEY_F10] =3D "KEY_F10",
> >> +    [KEY_NUMLOCK] =3D "KEY_NUMLOCK",
> >> +    [KEY_SCROLLLOCK] =3D "KEY_SCROLLLOCK",
> >> +    [KEY_KP7] =3D "KEY_KP7",
> >> +    [KEY_KP8] =3D "KEY_KP8",
> >> +    [KEY_KP9] =3D "KEY_KP9",
> >> +    [KEY_KPMINUS] =3D "KEY_KPMINUS",
> >> +    [KEY_KP4] =3D "KEY_KP4",
> >> +    [KEY_KP5] =3D "KEY_KP5",
> >> +    [KEY_KP6] =3D "KEY_KP6",
> >> +    [KEY_KPPLUS] =3D "KEY_KPPLUS",
> >> +    [KEY_KP1] =3D "KEY_KP1",
> >> +    [KEY_KP2] =3D "KEY_KP2",
> >> +    [KEY_KP3] =3D "KEY_KP3",
> >> +    [KEY_KP0] =3D "KEY_KP0",
> >> +    [KEY_KPDOT] =3D "KEY_KPDOT",
> >> +    [KEY_ZENKAKUHANKAKU] =3D "KEY_ZENKAKUHANKAKU",
> >> +    [KEY_102ND] =3D "KEY_102ND",
> >> +    [KEY_F11] =3D "KEY_F11",
> >> +    [KEY_F12] =3D "KEY_F12",
> >> +    [KEY_RO] =3D "KEY_RO",
> >> +    [KEY_KATAKANA] =3D "KEY_KATAKANA",
> >> +    [KEY_HIRAGANA] =3D "KEY_HIRAGANA",
> >> +    [KEY_HENKAN] =3D "KEY_HENKAN",
> >> +    [KEY_KATAKANAHIRAGANA] =3D "KEY_KATAKANAHIRAGANA",
> >> +    [KEY_MUHENKAN] =3D "KEY_MUHENKAN",
> >> +    [KEY_KPJPCOMMA] =3D "KEY_KPJPCOMMA",
> >> +    [KEY_KPENTER] =3D "KEY_KPENTER",
> >> +    [KEY_RIGHTCTRL] =3D "KEY_RIGHTCTRL",
> >> +    [KEY_KPSLASH] =3D "KEY_KPSLASH",
> >> +    [KEY_SYSRQ] =3D "KEY_SYSRQ",
> >> +    [KEY_RIGHTALT] =3D "KEY_RIGHTALT",
> >> +    [KEY_LINEFEED] =3D "KEY_LINEFEED",
> >> +    [KEY_HOME] =3D "KEY_HOME",
> >> +    [KEY_UP] =3D "KEY_UP",
> >> +    [KEY_PAGEUP] =3D "KEY_PAGEUP",
> >> +    [KEY_LEFT] =3D "KEY_LEFT",
> >> +    [KEY_RIGHT] =3D "KEY_RIGHT",
> >> +    [KEY_END] =3D "KEY_END",
> >> +    [KEY_DOWN] =3D "KEY_DOWN",
> >> +    [KEY_PAGEDOWN] =3D "KEY_PAGEDOWN",
> >> +    [KEY_INSERT] =3D "KEY_INSERT",
> >> +    [KEY_DELETE] =3D "KEY_DELETE",
> >> +    [KEY_MACRO] =3D "KEY_MACRO",
> >> +    [KEY_MUTE] =3D "KEY_MUTE",
> >> +    [KEY_VOLUMEDOWN] =3D "KEY_VOLUMEDOWN",
> >> +    [KEY_VOLUMEUP] =3D "KEY_VOLUMEUP",
> >> +    [KEY_POWER] =3D "KEY_POWER",
> >> +    [KEY_KPEQUAL] =3D "KEY_KPEQUAL",
> >> +    [KEY_KPPLUSMINUS] =3D "KEY_KPPLUSMINUS",
> >> +    [KEY_PAUSE] =3D "KEY_PAUSE",
> >> +    [KEY_SCALE] =3D "KEY_SCALE",
> >> +    [KEY_KPCOMMA] =3D "KEY_KPCOMMA",
> >> +    [KEY_HANGEUL] =3D "KEY_HANGEUL",
> >> +    [KEY_HANJA] =3D "KEY_HANJA",
> >> +    [KEY_YEN] =3D "KEY_YEN",
> >> +    [KEY_LEFTMETA] =3D "KEY_LEFTMETA",
> >> +    [KEY_RIGHTMETA] =3D "KEY_RIGHTMETA",
> >> +    [KEY_COMPOSE] =3D "KEY_COMPOSE",
> >> +    [KEY_STOP] =3D "KEY_STOP",
> >> +    [KEY_AGAIN] =3D "KEY_AGAIN",
> >> +    [KEY_PROPS] =3D "KEY_PROPS",
> >> +    [KEY_UNDO] =3D "KEY_UNDO",
> >> +    [KEY_FRONT] =3D "KEY_FRONT",
> >> +    [KEY_COPY] =3D "KEY_COPY",
> >> +    [KEY_OPEN] =3D "KEY_OPEN",
> >> +    [KEY_PASTE] =3D "KEY_PASTE",
> >> +    [KEY_FIND] =3D "KEY_FIND",
> >> +    [KEY_CUT] =3D "KEY_CUT",
> >> +    [KEY_HELP] =3D "KEY_HELP",
> >> +    [KEY_MENU] =3D "KEY_MENU",
> >> +    [KEY_CALC] =3D "KEY_CALC",
> >> +    [KEY_SETUP] =3D "KEY_SETUP",
> >> +    [KEY_SLEEP] =3D "KEY_SLEEP",
> >> +    [KEY_WAKEUP] =3D "KEY_WAKEUP",
> >> +    [KEY_FILE] =3D "KEY_FILE",
> >> +    [KEY_SENDFILE] =3D "KEY_SENDFILE",
> >> +    [KEY_DELETEFILE] =3D "KEY_DELETEFILE",
> >> +    [KEY_XFER] =3D "KEY_XFER",
> >> +    [KEY_PROG1] =3D "KEY_PROG1",
> >> +    [KEY_PROG2] =3D "KEY_PROG2",
> >> +    [KEY_WWW] =3D "KEY_WWW",
> >> +    [KEY_MSDOS] =3D "KEY_MSDOS",
> >> +    [KEY_COFFEE] =3D "KEY_COFFEE",
> >> +    [KEY_ROTATE_DISPLAY] =3D "KEY_ROTATE_DISPLAY",
> >> +    [KEY_CYCLEWINDOWS] =3D "KEY_CYCLEWINDOWS",
> >> +    [KEY_MAIL] =3D "KEY_MAIL",
> >> +    [KEY_BOOKMARKS] =3D "KEY_BOOKMARKS",
> >> +    [KEY_COMPUTER] =3D "KEY_COMPUTER",
> >> +    [KEY_BACK] =3D "KEY_BACK",
> >> +    [KEY_FORWARD] =3D "KEY_FORWARD",
> >> +    [KEY_CLOSECD] =3D "KEY_CLOSECD",
> >> +    [KEY_EJECTCD] =3D "KEY_EJECTCD",
> >> +    [KEY_EJECTCLOSECD] =3D "KEY_EJECTCLOSECD",
> >> +    [KEY_NEXTSONG] =3D "KEY_NEXTSONG",
> >> +    [KEY_PLAYPAUSE] =3D "KEY_PLAYPAUSE",
> >> +    [KEY_PREVIOUSSONG] =3D "KEY_PREVIOUSSONG",
> >> +    [KEY_STOPCD] =3D "KEY_STOPCD",
> >> +    [KEY_RECORD] =3D "KEY_RECORD",
> >> +    [KEY_REWIND] =3D "KEY_REWIND",
> >> +    [KEY_PHONE] =3D "KEY_PHONE",
> >> +    [KEY_ISO] =3D "KEY_ISO",
> >> +    [KEY_CONFIG] =3D "KEY_CONFIG",
> >> +    [KEY_HOMEPAGE] =3D "KEY_HOMEPAGE",
> >> +    [KEY_REFRESH] =3D "KEY_REFRESH",
> >> +    [KEY_EXIT] =3D "KEY_EXIT",
> >> +    [KEY_MOVE] =3D "KEY_MOVE",
> >> +    [KEY_EDIT] =3D "KEY_EDIT",
> >> +    [KEY_SCROLLUP] =3D "KEY_SCROLLUP",
> >> +    [KEY_SCROLLDOWN] =3D "KEY_SCROLLDOWN",
> >> +    [KEY_KPLEFTPAREN] =3D "KEY_KPLEFTPAREN",
> >> +    [KEY_KPRIGHTPAREN] =3D "KEY_KPRIGHTPAREN",
> >> +    [KEY_NEW] =3D "KEY_NEW",
> >> +    [KEY_REDO] =3D "KEY_REDO",
> >> +    [KEY_F13] =3D "KEY_F13",
> >> +    [KEY_F14] =3D "KEY_F14",
> >> +    [KEY_F15] =3D "KEY_F15",
> >> +    [KEY_F16] =3D "KEY_F16",
> >> +    [KEY_F17] =3D "KEY_F17",
> >> +    [KEY_F18] =3D "KEY_F18",
> >> +    [KEY_F19] =3D "KEY_F19",
> >> +    [KEY_F20] =3D "KEY_F20",
> >> +    [KEY_F21] =3D "KEY_F21",
> >> +    [KEY_F22] =3D "KEY_F22",
> >> +    [KEY_F23] =3D "KEY_F23",
> >> +    [KEY_F24] =3D "KEY_F24",
> >> +    [KEY_PLAYCD] =3D "KEY_PLAYCD",
> >> +    [KEY_PAUSECD] =3D "KEY_PAUSECD",
> >> +    [KEY_PROG3] =3D "KEY_PROG3",
> >> +    [KEY_PROG4] =3D "KEY_PROG4",
> >> +    // [KEY_ALL_APPLICATIONS] =3D "KEY_ALL_APPLICATIONS",
> >> +    [KEY_SUSPEND] =3D "KEY_SUSPEND",
> >> +    [KEY_CLOSE] =3D "KEY_CLOSE",
> >> +    [KEY_PLAY] =3D "KEY_PLAY",
> >> +    [KEY_FASTFORWARD] =3D "KEY_FASTFORWARD",
> >> +    [KEY_BASSBOOST] =3D "KEY_BASSBOOST",
> >> +    [KEY_PRINT] =3D "KEY_PRINT",
> >> +    [KEY_HP] =3D "KEY_HP",
> >> +    [KEY_CAMERA] =3D "KEY_CAMERA",
> >> +    [KEY_SOUND] =3D "KEY_SOUND",
> >> +    [KEY_QUESTION] =3D "KEY_QUESTION",
> >> +    [KEY_EMAIL] =3D "KEY_EMAIL",
> >> +    [KEY_CHAT] =3D "KEY_CHAT",
> >> +    [KEY_SEARCH] =3D "KEY_SEARCH",
> >> +    [KEY_CONNECT] =3D "KEY_CONNECT",
> >> +    [KEY_FINANCE] =3D "KEY_FINANCE",
> >> +    [KEY_SPORT] =3D "KEY_SPORT",
> >> +    [KEY_SHOP] =3D "KEY_SHOP",
> >> +    [KEY_ALTERASE] =3D "KEY_ALTERASE",
> >> +    [KEY_CANCEL] =3D "KEY_CANCEL",
> >> +    [KEY_BRIGHTNESSDOWN] =3D "KEY_BRIGHTNESSDOWN",
> >> +    [KEY_BRIGHTNESSUP] =3D "KEY_BRIGHTNESSUP",
> >> +    [KEY_MEDIA] =3D "KEY_MEDIA",
> >> +    [KEY_SWITCHVIDEOMODE] =3D "KEY_SWITCHVIDEOMODE",
> >> +    [KEY_KBDILLUMTOGGLE] =3D "KEY_KBDILLUMTOGGLE",
> >> +    [KEY_KBDILLUMDOWN] =3D "KEY_KBDILLUMDOWN",
> >> +    [KEY_KBDILLUMUP] =3D "KEY_KBDILLUMUP",
> >> +    [KEY_SEND] =3D "KEY_SEND",
> >> +    [KEY_REPLY] =3D "KEY_REPLY",
> >> +    [KEY_FORWARDMAIL] =3D "KEY_FORWARDMAIL",
> >> +    [KEY_SAVE] =3D "KEY_SAVE",
> >> +    [KEY_DOCUMENTS] =3D "KEY_DOCUMENTS",
> >> +    [KEY_BATTERY] =3D "KEY_BATTERY",
> >> +    [KEY_BLUETOOTH] =3D "KEY_BLUETOOTH",
> >> +    [KEY_WLAN] =3D "KEY_WLAN",
> >> +    [KEY_UWB] =3D "KEY_UWB",
> >> +    [KEY_UNKNOWN] =3D "KEY_UNKNOWN",
> >> +    [KEY_VIDEO_NEXT] =3D "KEY_VIDEO_NEXT",
> >> +    [KEY_VIDEO_PREV] =3D "KEY_VIDEO_PREV",
> >> +    [KEY_BRIGHTNESS_CYCLE] =3D "KEY_BRIGHTNESS_CYCLE",
> >> +    [KEY_BRIGHTNESS_AUTO] =3D "KEY_BRIGHTNESS_AUTO",
> >> +    [KEY_DISPLAY_OFF] =3D "KEY_DISPLAY_OFF",
> >> +    [KEY_WWAN] =3D "KEY_WWAN",
> >> +    [KEY_RFKILL] =3D "KEY_RFKILL",
> >> +    [KEY_MICMUTE] =3D "KEY_MICMUTE",
> >> +    [KEY_OK] =3D "KEY_OK",
> >> +    [KEY_SELECT] =3D "KEY_SELECT",
> >> +    [KEY_GOTO] =3D "KEY_GOTO",
> >> +    [KEY_CLEAR] =3D "KEY_CLEAR",
> >> +    [KEY_POWER2] =3D "KEY_POWER2",
> >> +    [KEY_OPTION] =3D "KEY_OPTION",
> >> +    [KEY_INFO] =3D "KEY_INFO",
> >> +    [KEY_TIME] =3D "KEY_TIME",
> >> +    [KEY_VENDOR] =3D "KEY_VENDOR",
> >> +    [KEY_ARCHIVE] =3D "KEY_ARCHIVE",
> >> +    [KEY_PROGRAM] =3D "KEY_PROGRAM",
> >> +    [KEY_CHANNEL] =3D "KEY_CHANNEL",
> >> +    [KEY_FAVORITES] =3D "KEY_FAVORITES",
> >> +    [KEY_EPG] =3D "KEY_EPG",
> >> +    [KEY_PVR] =3D "KEY_PVR",
> >> +    [KEY_MHP] =3D "KEY_MHP",
> >> +    [KEY_LANGUAGE] =3D "KEY_LANGUAGE",
> >> +    [KEY_TITLE] =3D "KEY_TITLE",
> >> +    [KEY_SUBTITLE] =3D "KEY_SUBTITLE",
> >> +    [KEY_ANGLE] =3D "KEY_ANGLE",
> >> +    [KEY_FULL_SCREEN] =3D "KEY_FULL_SCREEN",
> >> +    [KEY_MODE] =3D "KEY_MODE",
> >> +    [KEY_KEYBOARD] =3D "KEY_KEYBOARD",
> >> +    [KEY_ASPECT_RATIO] =3D "KEY_ASPECT_RATIO",
> >> +    [KEY_PC] =3D "KEY_PC",
> >> +    [KEY_TV] =3D "KEY_TV",
> >> +    [KEY_TV2] =3D "KEY_TV2",
> >> +    [KEY_VCR] =3D "KEY_VCR",
> >> +    [KEY_VCR2] =3D "KEY_VCR2",
> >> +    [KEY_SAT] =3D "KEY_SAT",
> >> +    [KEY_SAT2] =3D "KEY_SAT2",
> >> +    [KEY_CD] =3D "KEY_CD",
> >> +    [KEY_TAPE] =3D "KEY_TAPE",
> >> +    [KEY_RADIO] =3D "KEY_RADIO",
> >> +    [KEY_TUNER] =3D "KEY_TUNER",
> >> +    [KEY_PLAYER] =3D "KEY_PLAYER",
> >> +    [KEY_TEXT] =3D "KEY_TEXT",
> >> +    [KEY_DVD] =3D "KEY_DVD",
> >> +    [KEY_AUX] =3D "KEY_AUX",
> >> +    [KEY_MP3] =3D "KEY_MP3",
> >> +    [KEY_AUDIO] =3D "KEY_AUDIO",
> >> +    [KEY_VIDEO] =3D "KEY_VIDEO",
> >> +    [KEY_DIRECTORY] =3D "KEY_DIRECTORY",
> >> +    [KEY_LIST] =3D "KEY_LIST",
> >> +    [KEY_MEMO] =3D "KEY_MEMO",
> >> +    [KEY_CALENDAR] =3D "KEY_CALENDAR",
> >> +    [KEY_RED] =3D "KEY_RED",
> >> +    [KEY_GREEN] =3D "KEY_GREEN",
> >> +    [KEY_YELLOW] =3D "KEY_YELLOW",
> >> +    [KEY_BLUE] =3D "KEY_BLUE",
> >> +    [KEY_CHANNELUP] =3D "KEY_CHANNELUP",
> >> +    [KEY_CHANNELDOWN] =3D "KEY_CHANNELDOWN",
> >> +    [KEY_FIRST] =3D "KEY_FIRST",
> >> +    [KEY_LAST] =3D "KEY_LAST",
> >> +    [KEY_AB] =3D "KEY_AB",
> >> +    [KEY_NEXT] =3D "KEY_NEXT",
> >> +    [KEY_RESTART] =3D "KEY_RESTART",
> >> +    [KEY_SLOW] =3D "KEY_SLOW",
> >> +    [KEY_SHUFFLE] =3D "KEY_SHUFFLE",
> >> +    [KEY_BREAK] =3D "KEY_BREAK",
> >> +    [KEY_PREVIOUS] =3D "KEY_PREVIOUS",
> >> +    [KEY_DIGITS] =3D "KEY_DIGITS",
> >> +    [KEY_TEEN] =3D "KEY_TEEN",
> >> +    [KEY_TWEN] =3D "KEY_TWEN",
> >> +    [KEY_VIDEOPHONE] =3D "KEY_VIDEOPHONE",
> >> +    [KEY_GAMES] =3D "KEY_GAMES",
> >> +    [KEY_ZOOMIN] =3D "KEY_ZOOMIN",
> >> +    [KEY_ZOOMOUT] =3D "KEY_ZOOMOUT",
> >> +    [KEY_ZOOMRESET] =3D "KEY_ZOOMRESET",
> >> +    [KEY_WORDPROCESSOR] =3D "KEY_WORDPROCESSOR",
> >> +    [KEY_EDITOR] =3D "KEY_EDITOR",
> >> +    [KEY_SPREADSHEET] =3D "KEY_SPREADSHEET",
> >> +    [KEY_GRAPHICSEDITOR] =3D "KEY_GRAPHICSEDITOR",
> >> +    [KEY_PRESENTATION] =3D "KEY_PRESENTATION",
> >> +    [KEY_DATABASE] =3D "KEY_DATABASE",
> >> +    [KEY_NEWS] =3D "KEY_NEWS",
> >> +    [KEY_VOICEMAIL] =3D "KEY_VOICEMAIL",
> >> +    [KEY_ADDRESSBOOK] =3D "KEY_ADDRESSBOOK",
> >> +    [KEY_MESSENGER] =3D "KEY_MESSENGER",
> >> +    [KEY_DISPLAYTOGGLE] =3D "KEY_DISPLAYTOGGLE",
> >> +    [KEY_SPELLCHECK] =3D "KEY_SPELLCHECK",
> >> +    [KEY_LOGOFF] =3D "KEY_LOGOFF",
> >> +    [KEY_DOLLAR] =3D "KEY_DOLLAR",
> >> +    [KEY_EURO] =3D "KEY_EURO",
> >> +    [KEY_FRAMEBACK] =3D "KEY_FRAMEBACK",
> >> +    [KEY_FRAMEFORWARD] =3D "KEY_FRAMEFORWARD",
> >> +    [KEY_CONTEXT_MENU] =3D "KEY_CONTEXT_MENU",
> >> +    [KEY_MEDIA_REPEAT] =3D "KEY_MEDIA_REPEAT",
> >> +    [KEY_10CHANNELSUP] =3D "KEY_10CHANNELSUP",
> >> +    [KEY_10CHANNELSDOWN] =3D "KEY_10CHANNELSDOWN",
> >> +    [KEY_IMAGES] =3D "KEY_IMAGES",
> >> +    // [KEY_NOTIFICATION_CENTER] =3D "KEY_NOTIFICATION_CENTER",
> >> +    // [KEY_PICKUP_PHONE] =3D "KEY_PICKUP_PHONE",
> >> +    // [KEY_HANGUP_PHONE] =3D "KEY_HANGUP_PHONE",
> >> +    [KEY_DEL_EOL] =3D "KEY_DEL_EOL",
> >> +    [KEY_DEL_EOS] =3D "KEY_DEL_EOS",
> >> +    [KEY_INS_LINE] =3D "KEY_INS_LINE",
> >> +    [KEY_DEL_LINE] =3D "KEY_DEL_LINE",
> >> +    [KEY_FN] =3D "KEY_FN",
> >> +    [KEY_FN_ESC] =3D "KEY_FN_ESC",
> >> +    [KEY_FN_F1] =3D "KEY_FN_F1",
> >> +    [KEY_FN_F2] =3D "KEY_FN_F2",
> >> +    [KEY_FN_F3] =3D "KEY_FN_F3",
> >> +    [KEY_FN_F4] =3D "KEY_FN_F4",
> >> +    [KEY_FN_F5] =3D "KEY_FN_F5",
> >> +    [KEY_FN_F6] =3D "KEY_FN_F6",
> >> +    [KEY_FN_F7] =3D "KEY_FN_F7",
> >> +    [KEY_FN_F8] =3D "KEY_FN_F8",
> >> +    [KEY_FN_F9] =3D "KEY_FN_F9",
> >> +    [KEY_FN_F10] =3D "KEY_FN_F10",
> >> +    [KEY_FN_F11] =3D "KEY_FN_F11",
> >> +    [KEY_FN_F12] =3D "KEY_FN_F12",
> >> +    [KEY_FN_1] =3D "KEY_FN_1",
> >> +    [KEY_FN_2] =3D "KEY_FN_2",
> >> +    [KEY_FN_D] =3D "KEY_FN_D",
> >> +    [KEY_FN_E] =3D "KEY_FN_E",
> >> +    [KEY_FN_F] =3D "KEY_FN_F",
> >> +    [KEY_FN_S] =3D "KEY_FN_S",
> >> +    [KEY_FN_B] =3D "KEY_FN_B",
> >> +    // [KEY_FN_RIGHT_SHIFT] =3D "KEY_FN_RIGHT_SHIFT",
> >> +    [KEY_BRL_DOT1] =3D "KEY_BRL_DOT1",
> >> +    [KEY_BRL_DOT2] =3D "KEY_BRL_DOT2",
> >> +    [KEY_BRL_DOT3] =3D "KEY_BRL_DOT3",
> >> +    [KEY_BRL_DOT4] =3D "KEY_BRL_DOT4",
> >> +    [KEY_BRL_DOT5] =3D "KEY_BRL_DOT5",
> >> +    [KEY_BRL_DOT6] =3D "KEY_BRL_DOT6",
> >> +    [KEY_BRL_DOT7] =3D "KEY_BRL_DOT7",
> >> +    [KEY_BRL_DOT8] =3D "KEY_BRL_DOT8",
> >> +    [KEY_BRL_DOT9] =3D "KEY_BRL_DOT9",
> >> +    [KEY_BRL_DOT10] =3D "KEY_BRL_DOT10",
> >> +    [KEY_NUMERIC_0] =3D "KEY_NUMERIC_0",
> >> +    [KEY_NUMERIC_1] =3D "KEY_NUMERIC_1",
> >> +    [KEY_NUMERIC_2] =3D "KEY_NUMERIC_2",
> >> +    [KEY_NUMERIC_3] =3D "KEY_NUMERIC_3",
> >> +    [KEY_NUMERIC_4] =3D "KEY_NUMERIC_4",
> >> +    [KEY_NUMERIC_5] =3D "KEY_NUMERIC_5",
> >> +    [KEY_NUMERIC_6] =3D "KEY_NUMERIC_6",
> >> +    [KEY_NUMERIC_7] =3D "KEY_NUMERIC_7",
> >> +    [KEY_NUMERIC_8] =3D "KEY_NUMERIC_8",
> >> +    [KEY_NUMERIC_9] =3D "KEY_NUMERIC_9",
> >> +    [KEY_NUMERIC_STAR] =3D "KEY_NUMERIC_STAR",
> >> +    [KEY_NUMERIC_POUND] =3D "KEY_NUMERIC_POUND",
> >> +    [KEY_NUMERIC_A] =3D "KEY_NUMERIC_A",
> >> +    [KEY_NUMERIC_B] =3D "KEY_NUMERIC_B",
> >> +    [KEY_NUMERIC_C] =3D "KEY_NUMERIC_C",
> >> +    [KEY_NUMERIC_D] =3D "KEY_NUMERIC_D",
> >> +    [KEY_CAMERA_FOCUS] =3D "KEY_CAMERA_FOCUS",
> >> +    [KEY_WPS_BUTTON] =3D "KEY_WPS_BUTTON",
> >> +    [KEY_TOUCHPAD_TOGGLE] =3D "KEY_TOUCHPAD_TOGGLE",
> >> +    [KEY_TOUCHPAD_ON] =3D "KEY_TOUCHPAD_ON",
> >> +    [KEY_TOUCHPAD_OFF] =3D "KEY_TOUCHPAD_OFF",
> >> +    [KEY_CAMERA_ZOOMIN] =3D "KEY_CAMERA_ZOOMIN",
> >> +    [KEY_CAMERA_ZOOMOUT] =3D "KEY_CAMERA_ZOOMOUT",
> >> +    [KEY_CAMERA_UP] =3D "KEY_CAMERA_UP",
> >> +    [KEY_CAMERA_DOWN] =3D "KEY_CAMERA_DOWN",
> >> +    [KEY_CAMERA_LEFT] =3D "KEY_CAMERA_LEFT",
> >> +    [KEY_CAMERA_RIGHT] =3D "KEY_CAMERA_RIGHT",
> >> +    [KEY_ATTENDANT_ON] =3D "KEY_ATTENDANT_ON",
> >> +    [KEY_ATTENDANT_OFF] =3D "KEY_ATTENDANT_OFF",
> >> +    [KEY_ATTENDANT_TOGGLE] =3D "KEY_ATTENDANT_TOGGLE",
> >> +    [KEY_LIGHTS_TOGGLE] =3D "KEY_LIGHTS_TOGGLE",
> >> +    [KEY_ALS_TOGGLE] =3D "KEY_ALS_TOGGLE",
> >> +    [KEY_ROTATE_LOCK_TOGGLE] =3D "KEY_ROTATE_LOCK_TOGGLE",
> >> +    [KEY_BUTTONCONFIG] =3D "KEY_BUTTONCONFIG",
> >> +    [KEY_TASKMANAGER] =3D "KEY_TASKMANAGER",
> >> +    [KEY_JOURNAL] =3D "KEY_JOURNAL",
> >> +    [KEY_CONTROLPANEL] =3D "KEY_CONTROLPANEL",
> >> +    [KEY_APPSELECT] =3D "KEY_APPSELECT",
> >> +    [KEY_SCREENSAVER] =3D "KEY_SCREENSAVER",
> >> +    [KEY_VOICECOMMAND] =3D "KEY_VOICECOMMAND",
> >> +    [KEY_ASSISTANT] =3D "KEY_ASSISTANT",
> >> +    [KEY_KBD_LAYOUT_NEXT] =3D "KEY_KBD_LAYOUT_NEXT",
> >> +    // [KEY_EMOJI_PICKER] =3D "KEY_EMOJI_PICKER",
> >> +    //[KEY_DICTATE] =3D "KEY_DICTATE",
> >> +    //[KEY_CAMERA_ACCESS_ENABLE] =3D "KEY_CAMERA_ACCESS_ENABLE",
> >> +    //[KEY_CAMERA_ACCESS_DISABLE] =3D "KEY_CAMERA_ACCESS_DISABLE",
> >> +    //[KEY_CAMERA_ACCESS_TOGGLE] =3D "KEY_CAMERA_ACCESS_TOGGLE",
> >> +    [KEY_BRIGHTNESS_MIN] =3D "KEY_BRIGHTNESS_MIN",
> >> +    [KEY_BRIGHTNESS_MAX] =3D "KEY_BRIGHTNESS_MAX",
> >> +    [KEY_KBDINPUTASSIST_PREV] =3D "KEY_KBDINPUTASSIST_PREV",
> >> +    [KEY_KBDINPUTASSIST_NEXT] =3D "KEY_KBDINPUTASSIST_NEXT",
> >> +    [KEY_KBDINPUTASSIST_PREVGROUP] =3D "KEY_KBDINPUTASSIST_PREVGROUP"=
,
> >> +    [KEY_KBDINPUTASSIST_NEXTGROUP] =3D "KEY_KBDINPUTASSIST_NEXTGROUP"=
,
> >> +    [KEY_KBDINPUTASSIST_ACCEPT] =3D "KEY_KBDINPUTASSIST_ACCEPT",
> >> +    [KEY_KBDINPUTASSIST_CANCEL] =3D "KEY_KBDINPUTASSIST_CANCEL",
> >> +    [KEY_RIGHT_UP] =3D "KEY_RIGHT_UP",
> >> +    [KEY_RIGHT_DOWN] =3D "KEY_RIGHT_DOWN",
> >> +    [KEY_LEFT_UP] =3D "KEY_LEFT_UP",
> >> +    [KEY_LEFT_DOWN] =3D "KEY_LEFT_DOWN",
> >> +    [KEY_ROOT_MENU] =3D "KEY_ROOT_MENU",
> >> +    [KEY_MEDIA_TOP_MENU] =3D "KEY_MEDIA_TOP_MENU",
> >> +    [KEY_NUMERIC_11] =3D "KEY_NUMERIC_11",
> >> +    [KEY_NUMERIC_12] =3D "KEY_NUMERIC_12",
> >> +    [KEY_AUDIO_DESC] =3D "KEY_AUDIO_DESC",
> >> +    [KEY_3D_MODE] =3D "KEY_3D_MODE",
> >> +    [KEY_NEXT_FAVORITE] =3D "KEY_NEXT_FAVORITE",
> >> +    [KEY_STOP_RECORD] =3D "KEY_STOP_RECORD",
> >> +    [KEY_PAUSE_RECORD] =3D "KEY_PAUSE_RECORD",
> >> +    [KEY_VOD] =3D "KEY_VOD",
> >> +    [KEY_UNMUTE] =3D "KEY_UNMUTE",
> >> +    [KEY_FASTREVERSE] =3D "KEY_FASTREVERSE",
> >> +    [KEY_SLOWREVERSE] =3D "KEY_SLOWREVERSE",
> >> +    [KEY_DATA] =3D "KEY_DATA",
> >> +    [KEY_ONSCREEN_KEYBOARD] =3D "KEY_ONSCREEN_KEYBOARD",
> >> +    [KEY_PRIVACY_SCREEN_TOGGLE] =3D "KEY_PRIVACY_SCREEN_TOGGLE",
> >> +    [KEY_SELECTIVE_SCREENSHOT] =3D "KEY_SELECTIVE_SCREENSHOT",
> >> +    // [KEY_NEXT_ELEMENT] =3D "KEY_NEXT_ELEMENT",
> >> +    // [KEY_PREVIOUS_ELEMENT] =3D "KEY_PREVIOUS_ELEMENT",
> >> +    // [KEY_AUTOPILOT_ENGAGE_TOGGLE] =3D "KEY_AUTOPILOT_ENGAGE_TOGGLE=
",
> >> +    // [KEY_MARK_WAYPOINT] =3D "KEY_MARK_WAYPOINT",
> >> +    // [KEY_SOS] =3D "KEY_SOS",
> >> +    // [KEY_NAV_CHART] =3D "KEY_NAV_CHART",
> >> +    // [KEY_FISHING_CHART] =3D "KEY_FISHING_CHART",
> >> +    // [KEY_SINGLE_RANGE_RADAR] =3D "KEY_SINGLE_RANGE_RADAR",
> >> +    // [KEY_DUAL_RANGE_RADAR] =3D "KEY_DUAL_RANGE_RADAR",
> >> +    // [KEY_RADAR_OVERLAY] =3D "KEY_RADAR_OVERLAY",
> >> +    // [KEY_TRADITIONAL_SONAR] =3D "KEY_TRADITIONAL_SONAR",
> >> +    //  [KEY_CLEARVU_SONAR] =3D "KEY_CLEARVU_SONAR",
> >> +    // [KEY_SIDEVU_SONAR] =3D "KEY_SIDEVU_SONAR",
> >> +    // [KEY_NAV_INFO] =3D "KEY_NAV_INFO",
> >> +    // [KEY_BRIGHTNESS_MENU] =3D "KEY_BRIGHTNESS_MENU",
> >> +    [KEY_MACRO1] =3D "KEY_MACRO1",
> >> +    [KEY_MACRO2] =3D "KEY_MACRO2",
> >> +    [KEY_MACRO3] =3D "KEY_MACRO3",
> >> +    [KEY_MACRO4] =3D "KEY_MACRO4",
> >> +    [KEY_MACRO5] =3D "KEY_MACRO5",
> >> +    [KEY_MACRO6] =3D "KEY_MACRO6",
> >> +    [KEY_MACRO7] =3D "KEY_MACRO7",
> >> +    [KEY_MACRO8] =3D "KEY_MACRO8",
> >> +    [KEY_MACRO9] =3D "KEY_MACRO9",
> >> +    [KEY_MACRO10] =3D "KEY_MACRO10",
> >> +    [KEY_MACRO11] =3D "KEY_MACRO11",
> >> +    [KEY_MACRO12] =3D "KEY_MACRO12",
> >> +    [KEY_MACRO13] =3D "KEY_MACRO13",
> >> +    [KEY_MACRO14] =3D "KEY_MACRO14",
> >> +    [KEY_MACRO15] =3D "KEY_MACRO15",
> >> +    [KEY_MACRO16] =3D "KEY_MACRO16",
> >> +    [KEY_MACRO17] =3D "KEY_MACRO17",
> >> +    [KEY_MACRO18] =3D "KEY_MACRO18",
> >> +    [KEY_MACRO19] =3D "KEY_MACRO19",
> >> +    [KEY_MACRO20] =3D "KEY_MACRO20",
> >> +    [KEY_MACRO21] =3D "KEY_MACRO21",
> >> +    [KEY_MACRO22] =3D "KEY_MACRO22",
> >> +    [KEY_MACRO23] =3D "KEY_MACRO23",
> >> +    [KEY_MACRO24] =3D "KEY_MACRO24",
> >> +    [KEY_MACRO25] =3D "KEY_MACRO25",
> >> +    [KEY_MACRO26] =3D "KEY_MACRO26",
> >> +    [KEY_MACRO27] =3D "KEY_MACRO27",
> >> +    [KEY_MACRO28] =3D "KEY_MACRO28",
> >> +    [KEY_MACRO29] =3D "KEY_MACRO29",
> >> +    [KEY_MACRO30] =3D "KEY_MACRO30",
> >> +    [KEY_MACRO_RECORD_START] =3D "KEY_MACRO_RECORD_START",
> >> +    [KEY_MACRO_RECORD_STOP] =3D "KEY_MACRO_RECORD_STOP",
> >> +    [KEY_MACRO_PRESET_CYCLE] =3D "KEY_MACRO_PRESET_CYCLE",
> >> +    [KEY_MACRO_PRESET1] =3D "KEY_MACRO_PRESET1",
> >> +    [KEY_MACRO_PRESET2] =3D "KEY_MACRO_PRESET2",
> >> +    [KEY_MACRO_PRESET3] =3D "KEY_MACRO_PRESET3",
> >> +    [KEY_KBD_LCD_MENU1] =3D "KEY_KBD_LCD_MENU1",
> >> +    [KEY_KBD_LCD_MENU2] =3D "KEY_KBD_LCD_MENU2",
> >> +    [KEY_KBD_LCD_MENU3] =3D "KEY_KBD_LCD_MENU3",
> >> +    [KEY_KBD_LCD_MENU4] =3D "KEY_KBD_LCD_MENU4",
> >> +    [KEY_KBD_LCD_MENU5] =3D "KEY_KBD_LCD_MENU5",
> >> +    [KEY_MAX] =3D "KEY_MAX",
> >> +    [BTN_0] =3D "BTN_0",
> >> +    [BTN_1] =3D "BTN_1",
> >> +    [BTN_2] =3D "BTN_2",
> >> +    [BTN_3] =3D "BTN_3",
> >> +    [BTN_4] =3D "BTN_4",
> >> +    [BTN_5] =3D "BTN_5",
> >> +    [BTN_6] =3D "BTN_6",
> >> +    [BTN_7] =3D "BTN_7",
> >> +    [BTN_8] =3D "BTN_8",
> >> +    [BTN_9] =3D "BTN_9",
> >> +    [BTN_LEFT] =3D "BTN_LEFT",
> >> +    [BTN_RIGHT] =3D "BTN_RIGHT",
> >> +    [BTN_MIDDLE] =3D "BTN_MIDDLE",
> >> +    [BTN_SIDE] =3D "BTN_SIDE",
> >> +    [BTN_EXTRA] =3D "BTN_EXTRA",
> >> +    [BTN_FORWARD] =3D "BTN_FORWARD",
> >> +    [BTN_BACK] =3D "BTN_BACK",
> >> +    [BTN_TASK] =3D "BTN_TASK",
> >> +    [BTN_TRIGGER] =3D "BTN_TRIGGER",
> >> +    [BTN_THUMB] =3D "BTN_THUMB",
> >> +    [BTN_THUMB2] =3D "BTN_THUMB2",
> >> +    [BTN_TOP] =3D "BTN_TOP",
> >> +    [BTN_TOP2] =3D "BTN_TOP2",
> >> +    [BTN_PINKIE] =3D "BTN_PINKIE",
> >> +    [BTN_BASE] =3D "BTN_BASE",
> >> +    [BTN_BASE2] =3D "BTN_BASE2",
> >> +    [BTN_BASE3] =3D "BTN_BASE3",
> >> +    [BTN_BASE4] =3D "BTN_BASE4",
> >> +    [BTN_BASE5] =3D "BTN_BASE5",
> >> +    [BTN_BASE6] =3D "BTN_BASE6",
> >> +    [BTN_DEAD] =3D "BTN_DEAD",
> >> +    [BTN_SOUTH] =3D "BTN_SOUTH",
> >> +    [BTN_EAST] =3D "BTN_EAST",
> >> +    [BTN_C] =3D "BTN_C",
> >> +    [BTN_NORTH] =3D "BTN_NORTH",
> >> +    [BTN_WEST] =3D "BTN_WEST",
> >> +    [BTN_Z] =3D "BTN_Z",
> >> +    [BTN_TL] =3D "BTN_TL",
> >> +    [BTN_TR] =3D "BTN_TR",
> >> +    [BTN_TL2] =3D "BTN_TL2",
> >> +    [BTN_TR2] =3D "BTN_TR2",
> >> +    [BTN_SELECT] =3D "BTN_SELECT",
> >> +    [BTN_START] =3D "BTN_START",
> >> +    [BTN_MODE] =3D "BTN_MODE",
> >> +    [BTN_THUMBL] =3D "BTN_THUMBL",
> >> +    [BTN_THUMBR] =3D "BTN_THUMBR",
> >> +    [BTN_TOOL_PEN] =3D "BTN_TOOL_PEN",
> >> +    [BTN_TOOL_RUBBER] =3D "BTN_TOOL_RUBBER",
> >> +    [BTN_TOOL_BRUSH] =3D "BTN_TOOL_BRUSH",
> >> +    [BTN_TOOL_PENCIL] =3D "BTN_TOOL_PENCIL",
> >> +    [BTN_TOOL_AIRBRUSH] =3D "BTN_TOOL_AIRBRUSH",
> >> +    [BTN_TOOL_FINGER] =3D "BTN_TOOL_FINGER",
> >> +    [BTN_TOOL_MOUSE] =3D "BTN_TOOL_MOUSE",
> >> +    [BTN_TOOL_LENS] =3D "BTN_TOOL_LENS",
> >> +    [BTN_TOOL_QUINTTAP] =3D "BTN_TOOL_QUINTTAP",
> >> +    [BTN_STYLUS3] =3D "BTN_STYLUS3",
> >> +    [BTN_TOUCH] =3D "BTN_TOUCH",
> >> +    [BTN_STYLUS] =3D "BTN_STYLUS",
> >> +    [BTN_STYLUS2] =3D "BTN_STYLUS2",
> >> +    [BTN_TOOL_DOUBLETAP] =3D "BTN_TOOL_DOUBLETAP",
> >> +    [BTN_TOOL_TRIPLETAP] =3D "BTN_TOOL_TRIPLETAP",
> >> +    [BTN_TOOL_QUADTAP] =3D "BTN_TOOL_QUADTAP",
> >> +    [BTN_GEAR_DOWN] =3D "BTN_GEAR_DOWN",
> >> +    [BTN_GEAR_UP] =3D "BTN_GEAR_UP",
> >> +    [BTN_DPAD_UP] =3D "BTN_DPAD_UP",
> >> +    [BTN_DPAD_DOWN] =3D "BTN_DPAD_DOWN",
> >> +    [BTN_DPAD_LEFT] =3D "BTN_DPAD_LEFT",
> >> +    [BTN_DPAD_RIGHT] =3D "BTN_DPAD_RIGHT",
> >> +    [BTN_TRIGGER_HAPPY1] =3D "BTN_TRIGGER_HAPPY1",
> >> +    [BTN_TRIGGER_HAPPY2] =3D "BTN_TRIGGER_HAPPY2",
> >> +    [BTN_TRIGGER_HAPPY3] =3D "BTN_TRIGGER_HAPPY3",
> >> +    [BTN_TRIGGER_HAPPY4] =3D "BTN_TRIGGER_HAPPY4",
> >> +    [BTN_TRIGGER_HAPPY5] =3D "BTN_TRIGGER_HAPPY5",
> >> +    [BTN_TRIGGER_HAPPY6] =3D "BTN_TRIGGER_HAPPY6",
> >> +    [BTN_TRIGGER_HAPPY7] =3D "BTN_TRIGGER_HAPPY7",
> >> +    [BTN_TRIGGER_HAPPY8] =3D "BTN_TRIGGER_HAPPY8",
> >> +    [BTN_TRIGGER_HAPPY9] =3D "BTN_TRIGGER_HAPPY9",
> >> +    [BTN_TRIGGER_HAPPY10] =3D "BTN_TRIGGER_HAPPY10",
> >> +    [BTN_TRIGGER_HAPPY11] =3D "BTN_TRIGGER_HAPPY11",
> >> +    [BTN_TRIGGER_HAPPY12] =3D "BTN_TRIGGER_HAPPY12",
> >> +    [BTN_TRIGGER_HAPPY13] =3D "BTN_TRIGGER_HAPPY13",
> >> +    [BTN_TRIGGER_HAPPY14] =3D "BTN_TRIGGER_HAPPY14",
> >> +    [BTN_TRIGGER_HAPPY15] =3D "BTN_TRIGGER_HAPPY15",
> >> +    [BTN_TRIGGER_HAPPY16] =3D "BTN_TRIGGER_HAPPY16",
> >> +    [BTN_TRIGGER_HAPPY17] =3D "BTN_TRIGGER_HAPPY17",
> >> +    [BTN_TRIGGER_HAPPY18] =3D "BTN_TRIGGER_HAPPY18",
> >> +    [BTN_TRIGGER_HAPPY19] =3D "BTN_TRIGGER_HAPPY19",
> >> +    [BTN_TRIGGER_HAPPY20] =3D "BTN_TRIGGER_HAPPY20",
> >> +    [BTN_TRIGGER_HAPPY21] =3D "BTN_TRIGGER_HAPPY21",
> >> +    [BTN_TRIGGER_HAPPY22] =3D "BTN_TRIGGER_HAPPY22",
> >> +    [BTN_TRIGGER_HAPPY23] =3D "BTN_TRIGGER_HAPPY23",
> >> +    [BTN_TRIGGER_HAPPY24] =3D "BTN_TRIGGER_HAPPY24",
> >> +    [BTN_TRIGGER_HAPPY25] =3D "BTN_TRIGGER_HAPPY25",
> >> +    [BTN_TRIGGER_HAPPY26] =3D "BTN_TRIGGER_HAPPY26",
> >> +    [BTN_TRIGGER_HAPPY27] =3D "BTN_TRIGGER_HAPPY27",
> >> +    [BTN_TRIGGER_HAPPY28] =3D "BTN_TRIGGER_HAPPY28",
> >> +    [BTN_TRIGGER_HAPPY29] =3D "BTN_TRIGGER_HAPPY29",
> >> +    [BTN_TRIGGER_HAPPY30] =3D "BTN_TRIGGER_HAPPY30",
> >> +    [BTN_TRIGGER_HAPPY31] =3D "BTN_TRIGGER_HAPPY31",
> >> +    [BTN_TRIGGER_HAPPY32] =3D "BTN_TRIGGER_HAPPY32",
> >> +    [BTN_TRIGGER_HAPPY33] =3D "BTN_TRIGGER_HAPPY33",
> >> +    [BTN_TRIGGER_HAPPY34] =3D "BTN_TRIGGER_HAPPY34",
> >> +    [BTN_TRIGGER_HAPPY35] =3D "BTN_TRIGGER_HAPPY35",
> >> +    [BTN_TRIGGER_HAPPY36] =3D "BTN_TRIGGER_HAPPY36",
> >> +    [BTN_TRIGGER_HAPPY37] =3D "BTN_TRIGGER_HAPPY37",
> >> +    [BTN_TRIGGER_HAPPY38] =3D "BTN_TRIGGER_HAPPY38",
> >> +    [BTN_TRIGGER_HAPPY39] =3D "BTN_TRIGGER_HAPPY39",
> >> +    [BTN_TRIGGER_HAPPY40] =3D "BTN_TRIGGER_HAPPY40",
> >> +};
> >> +
> >> +static const char * const led_map[LED_MAX + 1] =3D {
> >> +    [LED_NUML] =3D "LED_NUML",
> >> +    [LED_CAPSL] =3D "LED_CAPSL",
> >> *** 11201 LINES SKIPPED ***
> >>
> >
> > make buildworld fails to build due to this error:
> >
> > [...]
> > c++  -target x86_64-unknown-freebsd16.0
> --sysroot=3D/usr/obj/usr/src/amd64.amd64/tmp
> > -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -fpie  -O2 -pipe -fno-common
> -march=3Dnative -I.
> > -I/usr/src/sbin/devd -fPIE -DNDEBUG -MD -MF.depend.devd.pieo -MTdevd.pi=
eo
> > -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=3Dunused-but-set-parameter
> > -Wno-error=3Dcast-function-type-mismatch
> -Wno-missing-variable-declarations -Qunused-arguments
> > -march=3Dnative  -fPIE -std=3Dgnu++17         -c /usr/src/sbin/devd/dev=
d.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

--000000000000726764063e066722
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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

--000000000000726764063e066722--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfow5y7PLV3SYyUm9RBeemup7MZ5aLac9Kx2H_eD_1DPrQ>