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