Commit Graph

35 Commits

Author SHA1 Message Date
rakuco
489ab0737e MFC r281146.
bthidd: Remove unused macros from hid.c.

ASIZE() was never used, and min() stopped being used in r207812.

Differential Revision:	https://reviews.freebsd.org/D2230
Reviewed by:		emax
Approved by:		emax
2015-04-15 22:07:51 +00:00
rakuco
62386cb488 MFC r281116.
bthidd: Consider usage ranges when dealing with array inputs.

So far, we were always using HID_USAGE() to determine the Usage ID of a
certain HID report input item. This does not work as intended if a field
is an array and the allowed usages are specified with a usage range, as
HID_USAGE() will return 0. We need to use the field value as an index in
the usage range list in this case instead.

This makes the volume keys in a Microsoft Bluetooth Mobile Keyboard
5000 be properly recognized. The relevant part of the HID report looks
like this:

  0xA1, 0x01,        // Collection (Application)
  0x85, 0x07,        //   Report ID (7)
  0x05, 0x0C,        //   Usage Page (Consumer)
  0x19, 0x00,        //   Usage Minimum (Unassigned)
  0x2A, 0xFF, 0x03,  //   Usage Maximum (0x03FF)
  0x95, 0x01,        //   Report Count (1)
  0x75, 0x10,        //   Report Size (16)
  0x15, 0x00,        //   Logical Minimum (0)
  0x27, 0xFF, 0x03, 0x00, 0x00,  //   Logical Maximum (1023)
  0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred
                     //   State,No Null Position)

When a key such as "volume down" is pressed, the following data is
transferred through Interrupt In:

  0x07 0xEA 0x00

Differential Revision:	https://reviews.freebsd.org/D2229
2015-04-15 22:02:52 +00:00
emax
355ebe62bd MFC r275709
handle "Kana" and "Eisu" keys on Apple Wireless Keyboard (JIS)

PR:		187470
Submitted by:	naito.yuichiro
2015-01-07 20:01:15 +00:00
eadler
ec294fd7f5 MFC r258779,r258780,r258787,r258822:
Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this
shifts into the sign bit.  Instead use (1U << 31) which gets the
expected result.

Similar to the (1 << 31) case it is not defined to do (2 << 30).

This fix is not ideal as it assumes a 32 bit int, but does fix the issue
for most cases.

A similar change was made in OpenBSD.
2014-02-04 03:36:42 +00:00
jkim
b6198521c8 Work around build breakages with GCC 4.2.
Reported by:	tinderbox
2013-05-23 05:42:35 +00:00
ed
120125784a Add the Clang specific -Wmissing-variable-declarations to WARNS=6.
This compiler flag enforces that that people either mark variables
static or use an external declarations for the variable, similar to how
-Wmissing-prototypes works for functions.

Due to the fact that Yacc/Lex generate code that cannot trivially be
changed to not warn because of this (lots of yy* variables), add a
NO_WMISSING_VARIABLE_DECLARATIONS that can be used to turn off this
specific compiler warning.

Announced on:	toolchain@
2013-04-19 19:45:00 +00:00
bapt
310ab6d7ff Fix world after byacc import:
- old yacc(1) use to magicially append stdlib.h, while new one don't
- new yacc(1) do declare yyparse by itself, fix redundant declaration of
  'yyparse'

Approved by:	des (mentor)
2012-05-22 16:33:10 +00:00
emax
8f94b35b32 Encode horizontal scroll events (AC Pan) as button presses (bit 5 and 6)
Submitted by:	David Demelier demelier dot david at gmail dot com
MFC after:	1 week
2011-05-04 17:58:15 +00:00
brucec
3aec76f035 Don't generate input() since it's not used. 2010-11-22 14:16:22 +00:00
emax
249952efeb Make sure to only pickup hid_input items when parsing input reports.
As it turns out, libusbhid(3) also picks up hic_collection items even
though we explicitly requested hid_input items only.

Tested by:	Buganini < buganini at gmail dot com >
MFC after:	1 week
2010-09-08 20:00:27 +00:00
uqs
1ab3783e1a mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the
bottom of the manpages and order them consistently.

GNU groff doesn't care about the ordering, and doesn't even mention
CAVEATS and SECURITY CONSIDERATIONS as common sections and where to put
them.

Found by:	mdocml lint run
Reviewed by:	ru
2010-05-13 12:07:55 +00:00
kaiw
5d57926a17 Catch up with libusbhid merge (rev 205728).
hid_get_data() now expects that the hid data passed in always contains
the report ID byte. Thus we should not skip the the report ID byte in
hid_interrupt().  Also, if HUP_KEYBOARD usage is an array, do not try
to modify the 'data' pointer, instead, increase the hid_item_t field
'pos' by 'report_size' before calling hid_get_data() during each
iteration.

PR:			usb/146367
Reported and tested by:	Alex Deiter
Pointy hat to:	    	kaiw
Reviewed by:	    	emax
2010-05-09 09:20:25 +00:00
uqs
4a10ff6f04 Remove redundant WARNS?=6 overrides and inherit the WARNS setting from
the toplevel directory.

This does not change any WARNS level and survives a make universe.

Approved by:        ed (co-mentor)
2010-03-02 18:44:08 +00:00
ru
0de18b1b0a Fixed "make checkdpadd" (missing library dependencies).
Approved by:	re (kensmith)
2007-10-01 18:15:11 +00:00
emax
964f1eb261 Do not mark Bluetooth HID device as a "potential keyboard" if its descriptor
has items with CONSUMER page. For now only check for items with KEYBOARD page.
This should prevent bthidd(8) from allocating vkbd(4) keyboard for Microsoft
Bluetooth Explorer mouse.

Reported by:	Eric Anderson
MFC after:	3 days
2006-11-27 22:52:11 +00:00
emax
ece06026a5 Properly htole16() PSM in sockaddr_l2cap
MFC after:	3 days
2006-11-02 18:57:09 +00:00
markus
693821d923 - Grammar and typo fixes
- Rewording of some sentences

Reviewed by:	brueffer
Approved by:	emax (mentor)
MFC after:	3 days
2006-10-10 22:38:31 +00:00
markus
bf4f608288 Fix a typo introduced in the last commit: WWW Refresh is 0x227, not 0227
Approved by:	emax (mentor)
MFC after:	1 day
2006-10-09 22:27:23 +00:00
emax
e942f54609 Pacify new GCC4 warnings.
Submitted by:	kan
MFC after:	1 week
2006-09-21 17:16:37 +00:00
emax
aed4a149cb Use socklen_t instead of int32_t where appropriate to pacify new GCC4
warnings.

Submitted by:	kan
MFC after:	1 week
2006-09-21 02:32:28 +00:00
emax
776a1a4288 Temporarily put ugly workaround in place to make sparc64 build happy.
panther is down at the moment, so better fix will follow later.
2006-09-08 15:05:38 +00:00
emax
0a0c0e69a8 Update bthidd(8) code and hook it up to the build.
bthidd(8) now was integrated with vkbd(4) and supports
multiple keyboards via vkbd(4)/kbdmux(4).

The code was tested with Apple Bluetooth keyboard and
SE k700i cell phone (remote control feature).

MFC after:	1 month
2006-09-07 21:47:49 +00:00
emax
270ddd37db Properly map mouse buttons
PR:		bin/94577
Submitted by:	Krzysztof Jedruczyk < beaker at hot dot pl >
MFC after:	3 days
2006-03-21 18:42:52 +00:00
emax
21e354aa2a Properly convert L2CAP PSM values in sockaddr_l2cap to LE16 byte order.
Noticed by:	Iain Hibbert < plunky at rya-online dot net >
MFC after:	3 days
2006-03-16 18:26:54 +00:00
ru
30cc3ea988 Style: NO_MAN doesn't need any value. 2006-03-15 10:46:38 +00:00
emax
f8eae18fea Teach bthidd(8) to reload its config when SIGHUP is received.
Submitted by:	Iain Hibbert < plunky at rya-online dot net >
MFC after:	3 days
2006-03-14 19:29:40 +00:00
emax
a29d4dd33a Fix typo
Submitted by:	Iain Hibbert < plunky at rya-online dot net >
MFC after:	3 days
2006-03-13 23:59:43 +00:00
markus
9ddbaff9a6 Fix scancode translation table
Approved by:	emax
MFC after:	3 days
2006-02-20 10:07:40 +00:00
emax
050a3f3809 Fix problem with session termination. bthidd(8) maintains two L2CAP
connections to Bluetooth HID device. As soon as Bluetooth HID device
is powered off (or goes out of RF range) the stack will terminate both
connections. File descriptors for both connections will become active
on next select(2) call. Because bthidd(8) processes file descriptors
in order, it will detect descriptor for one of the closed connections
first and kill the session. However, there is still a second (active)
descriptor that used to point to the same session. bthidd(8) used to
assert() if it cant find session by file descriptor, which was wrong.

While I'm here fix a couple of typos in parser.y

Reported by:	Eric Anderson anderson AT centtech DOT com
MFC after:	3 days
2005-05-18 23:03:44 +00:00
emax
9bd0242d83 Fix typo %d -> %x
That should fix the problem with invalid PSM returned from bthidcontrol.
Pointy hat goes to me.

PR:		misc/76107
Submitted by:	Hiroyuki Aizu < aizu at navi dot org >
MFC after:	1 day
2005-01-12 20:06:16 +00:00
ru
cec60429bb Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by:	core
2004-12-21 08:47:35 +00:00
emax
d4ffd83e77 Check in updated bthidd(8). This is still work in progress. 2004-11-18 18:05:15 +00:00
ru
5db2b9d5b3 For variables that are only checked with defined(), don't provide
any fake value.
2004-10-24 15:33:08 +00:00
emax
c114a6212c - One can use both BD_ADDR or name to specify address of the Bluetooth device.
Update man pages to document this fact.

- Update usage messages

- Change u_intXXX to uintXXX
2004-08-05 16:32:41 +00:00
emax
043ec21649 Start committing Bluetooth HID (Human Interface Device) support.
Note: bthidd(8) is still not complete. Need to commit kernel
support (a-la Linux /dev/input) to feed HID events into kernel.
Also need to write bthidd(8) and bthidd.conf(5) man pages.
2004-04-10 00:18:00 +00:00