NAME
btmagic —
Apple Magic Mouse and Apple
Magic Trackpad
SYNOPSIS
btmagic* at bthub?
wsmouse* at btmagic?
DESCRIPTION
The
btmagic driver provides support for the Bluetooth
“Magic Mouse” and “Magic Trackpad” from Apple, Inc. As
remote devices cannot be discovered by autoconfig, configuring a mouse is
normally carried out with the
btdevctl(8) program.
The Magic Mouse and Magic Trackpad use the standard USB Human Interface Device
protocol to communicate, but do not provide a proper HID Descriptor, and
require specific initializations to enable the proprietary touch reports.
The Magic Mouse provides basic mouse functionality with two buttons, and the
btmagic driver additionally interprets the touch reports to
emulate a middle mouse button when more than one firm touch is detected during
a click event, plus horizontal and vertical scrolling for touch movements
greater than a certain distance. The mouse has a base resolution of 1300dpi,
which the driver scales by default to a less sensitive 650dpi, but this is
adjustable with
sysctl(8) along
with the pressure needed to discern a firm touch, the minimum distance
necessary to trigger scrolling and the additional downscale factor applied to
scroll movements.
The Magic Trackpad provides multi touch functionality and one button. The
btmagic driver emulates 3 buttons by splitting the area at
the bottom of the device in 3 equal zones and detects finger presence in one
of these zones when the button is pressed. In addition, a tap in any area of
the trackpad is interpreted as a left click. The timeout for tap detection
defaults to 100ms and is adjustable with
sysctl(8).
Pointer movement is reported for single-touch movements over the device, and
scroll is reported for multi-touch movements.
The trackpad has a base resolution of 1300dpi, which the driver scales by
default to a less sensitive 650dpi, but this is adjustable with
sysctl(8) along with the
additional downscale factor applied to scroll movements.
btmagic interfaces to the system as usual through the
wsmouse(4) driver, and the
following properties are used during autoconfiguration:
-
-
- vendor-id
- Must be 0x05ac.
-
-
- product-id
- Must be 0x030d or 0x030e.
-
-
- local-bdaddr
- Local device address.
-
-
- remote-bdaddr
- Remote device address.
-
-
- link-mode
- This optional string represents the link mode of the
baseband link, and may be one of ‘auth’,
‘encrypt’, or ‘secure’.
When the
btmagic driver has configured, it will attempt to
open a connection to the mouse and, if this fails or the connection is lost,
will wait for the mouse to initiate connections. The Magic Mouse requires
connections to be authenticated, and should accept a PIN of ‘0000’
during the pairing process.
SEE ALSO
bluetooth(4),
bthub(4),
wsmouse(4),
btdevctl(8),
sysctl(8)
AUTHORS
The
btmagic driver was written by
Iain
Hibbert with reference to the Linux driver written by
Michael Poole.
Manuel Bouyer
added Magic Trackpad support, with reference to the Linux driver written by
Michael Poole and
Chase
Douglas.