Daniel Pavel
70c341e268
don't use proxies for receiver/device objects
...
they should be unnecessary now that their status is properly tracked
2013-06-23 18:37:50 +02:00
Daniel Pavel
422cd26b92
some extra asserts on hid++ 1.0 register r/w
2013-06-23 18:16:13 +02:00
Daniel Pavel
cec892ce88
disable poll ticking
...
It was necessary to periodically check if the peripherals are still
online -- suspend/resume may cause Solaar to (wrongfully) remember the
status of devices after a resume.
Now that is handled by the optional upower module -- the hard way -- by
restarting all listeners on resume.
2013-06-23 18:15:19 +02:00
Daniel Pavel
273284da39
use number instead of serial to pick devices in ui (faster start-up)
2013-06-23 12:09:46 +02:00
Daniel Pavel
df8df2bffa
don't force a battery read on link active, will happen anyway
2013-06-21 22:24:28 +02:00
Daniel Pavel
ae4c921300
cleaner start-up of paired devices
2013-06-21 22:23:53 +02:00
Daniel Pavel
3d1aa6698d
only check for non-unifying protocol only on nano receviers
2013-06-21 22:19:31 +02:00
Daniel Pavel
e19b690bd5
fixed reading of polling rate
2013-06-21 16:47:19 +02:00
Daniel Pavel
5785896007
status: the device may be invalid when processing the unpair notification
2013-06-21 16:39:30 +02:00
Daniel Pavel
8d522de7e7
drop some unnecessary logging when ignoring request replies
2013-06-21 16:39:04 +02:00
Daniel Pavel
81ae4c8d4d
forgot about pairing notification on receiver...
2013-06-21 16:32:29 +02:00
Daniel Pavel
c1aa341a7a
tweaked timing of enabling receiver notifications
2013-06-21 15:20:52 +02:00
Daniel Pavel
fd35f23af7
one a separate flag to check if the device is active
2013-06-21 15:17:14 +02:00
Daniel Pavel
c04851f64e
better handling of timeouts in base.request
2013-06-21 15:05:48 +02:00
Daniel Pavel
431f1c97cf
added read/write_register to receiver and devices
2013-06-21 15:03:36 +02:00
Daniel Pavel
1b68a3d5a9
fixed request timeouts for devices
2013-06-20 19:51:54 +02:00
Daniel Pavel
1d9a3bf23a
fixed checking for features of offline 2.0 devices
2013-06-20 17:21:23 +02:00
Daniel Pavel
3d8c764eb0
relax timeouts for device requests
2013-06-20 17:13:49 +02:00
Daniel Pavel
31e134c1e0
don't wait so long on the first idle poll
2013-06-20 13:12:29 +02:00
Daniel Pavel
ca9825d262
support for the VX Nano mouse
2013-06-20 13:10:30 +02:00
Daniel Pavel
1a36ec65ee
faster checking of feature-based settings
2013-06-20 12:55:48 +02:00
Daniel Pavel
d07a20e6f8
improved reading device properties
2013-06-20 12:54:27 +02:00
Daniel Pavel
783b317281
added a protocol field to the device descriptors
2013-06-20 11:04:17 +02:00
Daniel Pavel
4bc525f250
minor clean-ups
2013-06-20 11:02:45 +02:00
Daniel Pavel
11cfc7ea09
enable notification on recevier as soon as possible
2013-06-19 19:46:54 +02:00
Daniel Pavel
a806f2672d
group all status keys into one object
2013-06-19 19:45:39 +02:00
Daniel Pavel
b4bca4670b
cache notification flags when possible
...
avoids unnecessary reads from devices when the status hasn't changed
2013-06-19 17:03:01 +02:00
Daniel Pavel
4af714f1dd
K750: register the FN swap setting statically, no need to detect it at runtime
2013-06-18 16:48:02 +02:00
Daniel Pavel
836719587c
renamed NANO receiver id
2013-06-18 16:45:44 +02:00
Daniel Pavel
57c759773a
attach configuration to device settings objects
2013-06-17 11:00:53 +02:00
Daniel Pavel
9d6402a4f7
shorter thread name on receiver listener
2013-06-17 08:00:17 +02:00
Daniel Pavel
04ea8293a8
persist and restore device settings
2013-06-16 17:41:03 +02:00
Daniel Pavel
febf571d84
account for devices going out-of-range while active
2013-06-16 17:10:46 +02:00
Daniel Pavel
8852d50971
mark device status as inactive after idling out
2013-06-12 14:31:46 +02:00
Daniel Pavel
d9801e2d57
fixed firmware info for some HID++ 2.0 devices
2013-06-12 14:21:31 +02:00
Daniel Pavel
5cf6777340
more tweaks to idle polling
2013-06-08 21:06:52 +02:00
Daniel Pavel
17863c85b6
fixed querying for known registers
2013-06-08 21:06:22 +02:00
Daniel Pavel
237d0f9d9a
keep the battery level if polling the device marks it as offline
2013-06-08 21:05:30 +02:00
Daniel Pavel
d01d9edb78
tweaked idle polling timings
2013-06-08 16:27:03 +02:00
Daniel Pavel
b2b4febd31
receiver notifications: don't set all flags, might fail
2013-06-08 16:18:10 +02:00
Daniel Pavel
ad67e6eaee
fix read timeouts in base.py, use seconds everywhere
2013-06-08 16:17:14 +02:00
Daniel Pavel
ed5ce48f65
fixes to polling receiver/device status
2013-06-08 16:16:12 +02:00
Daniel Pavel
46544e1cbe
listen for udev events on the GLib main loop
2013-06-07 14:39:04 +02:00
Daniel Pavel
c52f2fc069
fix descriptor for K700 keyboard
2013-06-05 01:24:19 +02:00
Daniel Pavel
c186573775
fix register blacklisting
2013-06-05 00:31:40 +02:00
Daniel Pavel
cbdc0bd99b
very low battery level should trigger an attention event
2013-06-03 21:40:15 +02:00
Daniel Pavel
bfe7bcf1b4
avoid possible race condition on device initialization
2013-06-02 11:19:30 +02:00
Daniel Pavel
c61eb3f039
show charging status in device icon
2013-06-01 22:08:14 +02:00
Daniel Pavel
83a29328c7
don't use notification flags with HID++ 2.0 devices
2013-06-01 15:07:39 +02:00
Peter Wu
39e630cece
cli: improve alignment for special keys
...
The following lines have an insane length and are therefore not included in the
longest line:
WIN7_MONITOR_SWITCH_AS_WIN_SHIFT_LEFTARROW=0x0093,
WIN7_MONITOR_SWITCH_AS_WIN_SHIFT_RIGHTARROW=0x0094,
While doing this, also fix an obvious typo in the "Lock PC" control.
2013-05-27 14:07:38 +02:00
Peter Wu
b2a62c2dd7
special_keys: update controls list
...
My previous observation was right, controls and tasks are really different
entities. The following "controls" appears to be invalid and have been removed:
Home=0x001A,
Music=0x001D,
Search=0x0029,
Sleep=0x002F,
2013-05-27 11:44:20 +02:00
Peter Wu
6ae11f862c
Add more feature names, rename existing ones
...
Extracted from SetPoint 6.52.74 software using:
<FeaturesSupported.xml awk -F\" '/<Feature /{sub(/^LD_FID_/, "", $2); printf("\t%s=%s,\n", $2, $4)}' | sort -t= -k2
Existing names are renamed to the newer, verbose names.
2013-05-26 23:47:40 +02:00
Peter Wu
28c35633d3
Add more tasks for special keys
...
Based on tasks.xml from `%ProgramFiles%\\SetPointP\\tasks.xml`.
2013-05-26 22:47:03 +02:00
Peter Wu
6e36e33b22
Decouple controls from tasks (programmable keys)
...
They are treated differently in the HID++ 2.0 specification. Observations seem
to confirm this difference. For instance, a part of solaar-cli's output:
0: unknown:0022 => Home FN sensitive, is FN, reprogrammable
1: Mail => Mail FN sensitive, is FN, reprogrammable
2: unknown:003E => Search FN sensitive, is FN, reprogrammable
2013-05-26 22:47:03 +02:00
Daniel Pavel
e73f076324
don't support the VX Nano right now
2013-05-22 20:43:29 +03:00
Daniel Pavel
131f8f7f45
disable status polling on devices
...
the regular flow should be reading the battery on all devices now
2013-05-22 20:42:26 +03:00
Daniel Pavel
c3b73964d5
improved support for some Nano receivers
2013-05-22 20:41:11 +03:00
Daniel Pavel
790fc7c04b
improved support for the Nano receiver
2013-05-22 07:31:16 +03:00
Peter Wu
9c0dac044c
hid10: update 07 battery parsing based on spec
...
This fixes pwr/Solaar#49 partially, at least the charging state will be reported
correctly hereafter. The charge level may still be incorrect though.
2013-05-22 00:10:17 +02:00
Daniel Pavel
da6711c93c
the 'Solar key' on K750 is named 'Light Check button'
2013-05-21 00:48:21 +03:00
Daniel Pavel
d3dcdcb92e
Merge remote-tracking branch 'origin/master'
2013-05-19 11:54:38 +03:00
Peter Wu
f0542923d7
hid10: update flags description for notifications
...
The Logitech HID++ 1.0 documentation actually names the fields for devices and
receiver. Clarify that and explain why enabling all of the bits is a bad idea.
2013-05-19 10:30:41 +02:00
Peter Wu
29d0c07164
hid10: Formatting and re-order NOTIFICATION_FLAGs
...
Align values for easier reading the numeric values of NOTIFICATION_FLAGs. To
maintain consistency in the ordering of the values, swap keyboard_backlight with
keyboard_present.
2013-05-19 10:20:21 +02:00
Peter Wu
152abb086a
hid10: document notifications better
...
See [registers.txt][1] for 'keyboard_backlight'. The behavior of
keyboard_sleep_raw and keyboard_multimedia_raw is described at
[keyboard.txt][2].
[1]: https://git.lekensteyn.nl/ltunify/tree/registers.txt
[2]: https://git.lekensteyn.nl/ltunify/tree/keyboard.txt
2013-05-19 10:14:31 +02:00
Daniel Pavel
ef62892f60
pop up a desktop notification if the battery is below 5%
2013-05-18 14:35:33 +03:00
Daniel Pavel
7ae24488d9
only notify on connected devices at start-up
2013-05-18 02:20:22 +03:00
Daniel Pavel
317cf6d00f
only enable certain notification flags on devices
...
Also added some documentation to the notification flags, where possible.
2013-05-18 00:15:42 +03:00
Daniel Pavel
a5eeac6e5a
enable notifications for peripherals; fixes #27
2013-05-17 23:06:24 +03:00
Daniel Pavel
c20b279362
minor tweaks
2013-05-08 12:06:01 +03:00
Daniel Pavel
8d5ca66db7
get rid of bad map() calls
2013-05-06 17:51:03 +02:00
Daniel Pavel
3ecfdd027e
handle all 07/0D register notifications
2013-05-06 17:08:58 +02:00
Daniel Pavel
55ca9927b0
python 2/3: fix handling of first argument (unicode) of pack/unpack
2013-05-06 16:50:17 +02:00
Daniel Pavel
0283bb0e91
fix str/unicode detection in Python 3.2
2013-05-06 15:33:42 +02:00
Daniel Pavel
d39c0995b6
Merge remote-tracking branch 'origin/master'
2013-05-06 14:55:21 +02:00
Daniel Pavel
db4c088ce9
Merge pull request #37 from Lekensteyn/py3-compat
...
Py3 compat: replace use of "unicode" (pwr/Solaar#32 )
The `u''` syntax fails in Python 3.2; will fix is_string after the merge.
2013-05-06 05:54:53 -07:00
Daniel Pavel
a4898e24b7
extended documentation of descriptors and registers
2013-05-06 14:51:57 +02:00
Daniel Pavel
1f48e44cc6
Merge remote-tracking branch 'origin/master'
2013-05-04 20:20:43 +02:00
Daniel Pavel
9d8743e765
comment-out descriptor settings for Anywhere MX, not actually tested
2013-05-04 20:18:10 +02:00
Peter Wu
2327a0012e
descriptors.py: Clarify use of negative values
...
The negative behavior is not obvious, document it in the descriptors.py file
such that people who edit it to add new devices know how it works.
2013-05-04 20:02:37 +02:00
Daniel Pavel
e819265e7e
fix automatic register blacklisting
2013-05-04 19:50:08 +02:00
Daniel Pavel
d7dd9393ff
minor clean-ups
2013-05-04 17:19:48 +02:00
Daniel Pavel
64c36a1562
updated descriptors table and the devices doc
2013-05-04 17:18:39 +02:00
Daniel Pavel
13a54565ba
cleaned-up the descriptors table
2013-05-04 15:09:50 +02:00
Daniel Pavel
ad577d22d0
handle sleep in udev monitoring, fixes #35
2013-05-04 12:19:29 +02:00
Peter Wu
10c26fe642
Py3 compat: replace use of "unicode" ( pwr/Solaar#32 )
...
Generating "an unknown notification" type bailed out because of an unknown
feature type None. Since `isinstance(other, str)` is False for None, the script
will raise an exception on `isinstance(other, unicode)`.
There is no differentiation between `str` and `bytes` in Python 2, therefore
add another condition to `NamedInt.__eq__` to catch unknown types (like
`bytes`).
2013-05-03 23:46:46 +02:00
Daniel Pavel
2ee2a5dc46
Merge remote-tracking branch 'origin/master'
2013-05-03 17:08:32 +02:00
Daniel Pavel
430fdf4fcf
initial support for the MOUSE_POINTER hid++2.0 feature
2013-05-03 17:08:26 +02:00
Daniel Pavel
a0a76f738b
assert that data read/written on the receiver handle is of type bytes
2013-05-03 16:35:28 +02:00
Peter Wu
266edd80f3
Process reg07 battery notification
2013-05-03 00:10:58 +02:00
Peter Wu
d1b1be32ca
Make read_battery use set_battery_info
...
This allows battery readouts to generate warnings and debug logs for a given
status and level.
2013-05-02 23:56:08 +02:00
Peter Wu
fbdd923d43
Refactor battery info update
...
- `self[BATTERY_STATUS] = BATTERY_STATUS[battery_status]` should be:
`self[BATTERY_STATUS] = _hidpp20.BATTERY_STATUS[battery_status]`, otherwise
the battery status would be a single char from the string `battery-status`.
- Make `_hidpp20.BATTERY_OK` check against strings instead of a number.
- Move setting battery information to a separate function, `set_battery_info`.
This prepares for notifications when a battery error/warning occurs.
2013-05-02 23:51:40 +02:00
Peter Wu
d8e469a33a
hidpp10: split reg07 (battery) parsing so it can be reused
2013-05-02 23:06:45 +02:00
Daniel Pavel
0f80901bce
quicker detection of matching receivers in udev
2013-05-02 11:11:53 +02:00
Daniel Pavel
c829304e31
use only udev events to detect receiver devices
2013-05-01 15:47:23 +02:00
Daniel Pavel
d3f94ff2fb
detect some HID++1.0 custom battery notifications
...
they're not handled yet
2013-05-01 11:36:15 +02:00
Daniel Pavel
04db6d3838
python 3 fixes for #29
2013-04-30 22:31:06 +02:00
Daniel Pavel
feedbcf581
some code clean-ups
2013-04-28 15:16:45 +02:00
Daniel Pavel
a57f3be58d
renamed event alert levels to be more clear
2013-04-28 15:12:20 +02:00
Daniel Pavel
897dffc426
only dispatch notification events from the specialized listener thread
2013-04-28 15:09:09 +02:00
Daniel Pavel
6f0b61e6d8
better handling of eq/ne/hash in receiver and device objects
2013-04-28 15:02:17 +02:00