Module Name: src Committed By: macallan Date: Thu Nov 3 02:41:29 UTC 2011
Modified Files: src/sys/dev/usb: files.usb ukbd.c Log Message: only build gdium Fn support with options GDIUM_KEYBOARD_HACK To generate a diff of this commit: cvs rdiff -u -r1.115 -r1.116 src/sys/dev/usb/files.usb cvs rdiff -u -r1.112 -r1.113 src/sys/dev/usb/ukbd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/files.usb diff -u src/sys/dev/usb/files.usb:1.115 src/sys/dev/usb/files.usb:1.116 --- src/sys/dev/usb/files.usb:1.115 Sun Oct 2 16:30:58 2011 +++ src/sys/dev/usb/files.usb Thu Nov 3 02:41:29 2011 @@ -1,4 +1,4 @@ -# $NetBSD: files.usb,v 1.115 2011/10/02 16:30:58 jmcneill Exp $ +# $NetBSD: files.usb,v 1.116 2011/11/03 02:41:29 macallan Exp $ # # Config file and device description for machine-independent USB code. # Included by ports that need it. Ports that use it must provide @@ -79,6 +79,8 @@ file dev/usb/uhid.c uhid needs-flag # Keyboards defparam UKBD_LAYOUT +# Gdium's Fn key needs software translation +defflag opt_ukbd.h GDIUM_KEYBOARD_HACK device ukbd: hid, wskbddev attach ukbd at uhidbus file dev/usb/ukbd.c ukbd needs-flag Index: src/sys/dev/usb/ukbd.c diff -u src/sys/dev/usb/ukbd.c:1.112 src/sys/dev/usb/ukbd.c:1.113 --- src/sys/dev/usb/ukbd.c:1.112 Wed Nov 2 08:49:08 2011 +++ src/sys/dev/usb/ukbd.c Thu Nov 3 02:41:29 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ukbd.c,v 1.112 2011/11/02 08:49:08 macallan Exp $ */ +/* $NetBSD: ukbd.c,v 1.113 2011/11/03 02:41:29 macallan Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.112 2011/11/02 08:49:08 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.113 2011/11/03 02:41:29 macallan Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -66,6 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: ukbd.c,v 1.1 #include <dev/wscons/wsksymvar.h> #ifdef _KERNEL_OPT +#include "opt_ukbd.h" #include "opt_ukbd_layout.h" #include "opt_wsdisplay_compat.h" #include "opt_ddb.h" @@ -145,6 +146,7 @@ Static const struct ukbd_keycodetrans tr { 0x00, 0x00 } }; +#ifdef GDIUM_KEYBOARD_HACK Static const struct ukbd_keycodetrans trtab_gdium_fn[] = { #ifdef notyet { 58, 0 }, /* F1 -> toggle camera */ @@ -169,6 +171,7 @@ Static const struct ukbd_keycodetrans tr { 81, 78 }, /* down -> page down */ { 82, 75 } /* up -> page up */ }; +#endif #if defined(__NetBSD__) && defined(WSDISPLAY_COMPAT_RAWKBD) #define NN 0 /* no translation */ @@ -423,9 +426,11 @@ ukbd_attach(device_t parent, device_t se if (qflags & UQ_APPLE_ISO) sc->sc_flags |= FLAG_APPLE_FIX_ISO; +#ifdef GDIUM_KEYBOARD_HACK if (uha->uaa->vendor == USB_VENDOR_CYPRESS && uha->uaa->product == USB_PRODUCT_CYPRESS_LPRDK) sc->sc_flags = FLAG_GDIUM_FN; +#endif #ifdef DIAGNOSTIC aprint_normal(": %d modifier keys, %d key codes", sc->sc_nmod, @@ -654,12 +659,14 @@ ukbd_intr(struct uhidev *addr, void *ibu else sc->sc_flags &= ~FLAG_FN_PRESSED; } - + +#ifdef GDIUM_KEYBOARD_HACK if (sc->sc_flags & FLAG_GDIUM_FN) { if (sc->sc_flags & FLAG_FN_PRESSED) { ukbd_translate_keycodes(sc, ud, trtab_gdium_fn); } } +#endif if ((sc->sc_flags & FLAG_DEBOUNCE) && !(sc->sc_flags & FLAG_POLLING)) { /* @@ -758,12 +765,14 @@ ukbd_decode(struct ukbd_softc *sc, struc if (key == ud->keycode[j]) goto rfound; DPRINTFN(3,("ukbd_intr: relse key=0x%02x\n", key)); +#ifdef GDIUM_KEYBOARD_HACK if (sc->sc_flags & FLAG_GDIUM_FN) { if (key == 0x82) { sc->sc_flags &= ~FLAG_FN_PRESSED; goto rfound; } } +#endif ADDKEY(key | RELEASE); rfound: ; @@ -778,12 +787,14 @@ ukbd_decode(struct ukbd_softc *sc, struc if (key == sc->sc_odata.keycode[j]) goto pfound; DPRINTFN(2,("ukbd_intr: press key=0x%02x\n", key)); +#ifdef GDIUM_KEYBOARD_HACK if (sc->sc_flags & FLAG_GDIUM_FN) { if (key == 0x82) { sc->sc_flags |= FLAG_FN_PRESSED; goto pfound; } } +#endif ADDKEY(key | PRESS); pfound: ;