Commit Graph

625 Commits

Author SHA1 Message Date
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 2fee88e54b fixed battery charge display in device info 2013-06-19 19:23:18 +02:00
Daniel Pavel 7e1a2a6e4f more fixes for device unpairing 2013-06-19 17:21:28 +02:00
Daniel Pavel d5b311760e clean obsolete settings controls when devices are unpaired 2013-06-19 17:04:01 +02:00
Daniel Pavel dffe6f8b91 fix display of firmware in details panel 2013-06-19 17:03:16 +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 150c43f41f some logging in udev 2013-06-19 16:49:20 +02:00
Daniel Pavel 9fc11df229 fixed window update when unpairing 2013-06-19 16:22:44 +02:00
Daniel Pavel 56a7a960c3 polling: it may happen that the receiver is removed mid-poll 2013-06-19 16:14:04 +02:00
Daniel Pavel cd44cc6396 new single-window UI 2013-06-19 15:28:13 +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 f32e958984 version 0.8.9.4 2013-06-17 16:12:32 +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 a29609df21 only save the configuration once when Solaar ends 2013-06-17 08:00:00 +02:00
Daniel Pavel 04ea8293a8 persist and restore device settings 2013-06-16 17:41:03 +02:00
Daniel Pavel bde54aba3b proper shutdown of receiver listeners 2013-06-16 17:10:46 +02:00
Daniel Pavel a44d9b7ca8 fix battery display in main window 2013-06-16 17:10:46 +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 03e20842fb cleaned-up gtk ui initialization 2013-06-12 14:29:34 +02:00
Daniel Pavel d9801e2d57 fixed firmware info for some HID++ 2.0 devices 2013-06-12 14:21:31 +02:00
Daniel Pavel 29fe913fd8 version 0.8.9.3 2013-06-08 21:11:39 +02:00
Daniel Pavel 5b68f9623e fix indicator description when there are receivers but no devices 2013-06-08 21:10:17 +02:00
Daniel Pavel 2a6662472d account for all GLib.id_add_watch variants 2013-06-08 21:07:24 +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 b98e27e464 fix permissions error popup 2013-06-08 21:04:32 +02:00
Daniel Pavel d01d9edb78 tweaked idle polling timings 2013-06-08 16:27:03 +02:00
Daniel Pavel 0a86683392 clean-up in solaar.listener 2013-06-08 16:18:25 +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 f324b97e8b use GLib.io_add_watch_full when available 2013-06-08 15:02:44 +02:00
Daniel Pavel 46544e1cbe listen for udev events on the GLib main loop 2013-06-07 14:39:04 +02:00
Daniel Pavel ffab6c0e12 move Gtk-specific idle_add() and main() into ui 2013-06-07 14:37:03 +02:00
Daniel Pavel 10e736386b user module __name__ when initializing logger 2013-06-07 14:28:13 +02:00
Daniel Pavel a1ecebf5bf documentation and logging for 2013-06-07 14:24:05 +02:00
Daniel Pavel e09ad373b3 version 0.8.9.2 2013-06-06 12:19:44 +02:00
Daniel Pavel 39a75a6792 AppIndicator: scrolling on the icon cycles through all devices 2013-06-06 10:25:35 +02:00
Daniel Pavel 8900ac9a1f tweak main window geometry 2013-06-05 13:21:22 +02:00
Peter Wu 59459ebbd6 Fix crash in Python3 due to excess space
The error message was:

    TabError: inconsistent use of tabs and spaces in indentation
2013-06-05 12:39:00 +02:00
Daniel Pavel c52f2fc069 fix descriptor for K700 keyboard 2013-06-05 01:24:19 +02:00
Daniel Pavel eb3e2566e9 comment-out unnecessary logs 2013-06-05 00:32:01 +02:00
Daniel Pavel c186573775 fix register blacklisting 2013-06-05 00:31:40 +02:00
Daniel Pavel 1ed82fc7d5 version 0.8.9.1 2013-06-03 22:02:00 +02:00
Daniel Pavel 162228aff3 started configuration persistence implementation 2013-06-03 22:01:16 +02:00
Daniel Pavel cbdc0bd99b very low battery level should trigger an attention event 2013-06-03 21:40:15 +02:00
Daniel Pavel b4fc36701a added attention() to tray icon 2013-06-03 21:39:29 +02:00
Daniel Pavel c706fbc6e7 update icon theme paths directly, don't mess with XDG_DATA_DIRS 2013-06-03 11:17:19 +02:00
Daniel Pavel 88fb8458c1 logging tweaks 2013-06-02 16:16:58 +02:00
Daniel Pavel b18aee9dba maintain proper devices order in tray menu 2013-06-02 11:19:49 +02:00
Daniel Pavel bfe7bcf1b4 avoid possible race condition on device initialization 2013-06-02 11:19:30 +02:00
Daniel Pavel 465fea8a16 dropped solaar-mask unused icon 2013-06-02 01:11:32 +02:00
Daniel Pavel 149758ccab fixed battery icons in systray menu items 2013-06-02 01:11:04 +02:00
Daniel Pavel 37265f25d8 support custom icons in notification messages 2013-06-01 22:32:57 +02:00
Daniel Pavel c61eb3f039 show charging status in device icon 2013-06-01 22:08:14 +02:00
Daniel Pavel 39862034e1 use just the battery icon in systray 2013-06-01 21:09:41 +02:00
Daniel Pavel f938b29040 doc: icon names for various icon themes 2013-06-01 18:53:49 +02:00
Daniel Pavel 82c4b0007c updated solaar version to 0.8.9 2013-06-01 18:19:47 +02:00
Daniel Pavel 088493dc4f guess battery icon set from the current theme 2013-06-01 17:34:54 +02:00
Daniel Pavel 7317fad754 some debugging when setting icon theme paths 2013-06-01 15:08:23 +02:00
Daniel Pavel 83a29328c7 don't use notification flags with HID++ 2.0 devices 2013-06-01 15:07:39 +02:00
Daniel Pavel 788fb145af use an AppIndicator if available, instead of the status icon 2013-06-01 15:06:43 +02:00
Daniel Pavel b1b1a9b5de Merge remote-tracking branch 'origin/master' 2013-05-27 16:24:34 +03: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
Daniel Pavel 26dd3a2ca8 only need to set the default window icon once 2013-05-27 12:36:39 +03:00
Daniel Pavel c328d6f6c6 fixed pairing in solaar-cli 2013-05-27 09:08:23 +03:00
Daniel Pavel 44c79d71d7 use new get_notifications_flags api in solaar-cli 2013-05-27 08:04:49 +03:00
Peter Wu b6bd4b9da0 cli: fix alignment with new feature names 2013-05-26 23:51:46 +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
Peter Wu 51305e0a21 solaar-cli: fix regression in argument parsing
When no hidraw device is given, `solaar-cli` crashes because `None` is being
indirected. Use the correct action (`store`) to avoid indirecting a list.
2013-05-26 20:51:58 +02:00
Daniel Pavel fda3398440 commented-out stray print 2013-05-26 19:02:17 +03:00
Daniel Pavel 340ff0107c version 0.8.8.2 2013-05-26 18:43:23 +03:00
Daniel Pavel 8374a58dc1 fixed items in the systray menu 2013-05-26 18:40:53 +03:00
Daniel Pavel 3690863a27 fixed receiver icon in systray menu 2013-05-26 02:56:43 +03:00
Daniel Pavel 078d003cfe about window icon was not displayed 2013-05-26 02:56:25 +03:00
Daniel Pavel b6ab795878 don't add receivers to the status icon tooltip 2013-05-26 02:03:58 +03:00
Daniel Pavel 7e81dede2f non-modal about dialog; fixes #46 2013-05-26 02:01:59 +03:00
Daniel Pavel 3482257b15 fix solaar-cli when no hidraw path given 2013-05-26 01:40:10 +03:00
Daniel Pavel 9f3ab8d3dd Merge remote-tracking branch 'origin/master' 2013-05-26 01:33:13 +03:00
Daniel Pavel db53de2233 updated status_icon to support future appindicator implementation 2013-05-26 01:24:49 +03:00
Peter Wu 7f229005a6 solaar-cli: support specifying different receiver 2013-05-25 15:46:13 +02:00
Peter Wu e3a887f36c solaar-cli: fix argument parsing in Python 3 2013-05-25 15:17:43 +02:00
Daniel Pavel 3873d7099c slightly reduce sleep timings when waiting for reply 2013-05-23 04:59:16 +03:00
Daniel Pavel 8b8b387f2a minor tweak to guessing device icon 2013-05-22 20:50:49 +03: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 e868cf6270 use a separate icon for the about logo 2013-05-20 16:32:26 +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 d5c36ddc89 about window tweak 2013-05-19 03:54:30 +03:00
Daniel Pavel 226a4ea2f3 version 0.8.8.1 2013-05-19 03:53:49 +03:00
Daniel Pavel ac0eafe6ab don't crash when failing to load the icon mask 2013-05-19 03:52:01 +03: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 1764633bc5 status icon menu items open the right device window 2013-05-17 19:55:07 +03:00
Daniel Pavel 5f46c820e6 re-work the status icon updating 2013-05-17 16:03:37 +03:00
Daniel Pavel c20b279362 minor tweaks 2013-05-08 12:06:01 +03:00
Daniel Pavel 24ceb8801e window popup fix for kwin
also, only try to position the window next to the status icon if it has never
been shown before
2013-05-07 05:59:29 +02:00
Daniel Pavel 8d5ca66db7 get rid of bad map() calls 2013-05-06 17:51:03 +02:00
Daniel Pavel 074cafbab1 simpler (and dumber) way to position receiver windows initially 2013-05-06 17:39:27 +02:00
Daniel Pavel 79cd52833c fix hidconsole for python 2/3 2013-05-06 17:38:09 +02:00
Daniel Pavel 6b75286885 Merge remote-tracking branch 'origin/master' 2013-05-06 17:23:38 +02:00
Daniel Pavel b884ae039c Merge pull request #40 from Lekensteyn/fixes
Fix window close, fix positioning of new windows
2013-05-06 08:19:27 -07: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 15f24eb26b use 'with' lock syntax instead of acquire/release 2013-05-06 15:35:20 +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 74ca91d611 next version will be 0.8.8 2013-05-06 14:33:06 +02:00
Daniel Pavel e94d4b28b0 build a proper ghost device when unpairing; fixes #36 2013-05-06 12:06:28 +02:00
Peter Wu dded8504e6 Fix window positioning of main windows
Previously, the intent was likely to position the receiver window near the
status icon. It did so by calling move followed by present. According to the
Gtk documentation, move() may fail if the window is hidden before.

Therefore present the window *after* determining the position, but *before*
moving it. (presenting the window before getting the position gives a Gtk
warning and has unpredictable behavior wrt. the window position).

As window positioning is now enabled, add additional logic to prevent overlap
of windows: position the first window near the status icon and others on the
left. This is not idea, e.g. when the status icon is on the left side of the
screen, but the idea of positioning windows near to each other is broken anyway.
2013-05-05 11:18:29 +02:00
Peter Wu a2bad425f6 Fix window close, icon toggle logic
"Toggle" should mean "show or hide all windows", not "flip the visibility state
of windows". Case: one receiver window is open. When a new receiver is
connected, I also expect it to be open. Instead it is hidden, so I click the
icon. Now the new receiver window is shown, but the previous one is hidden.
Huh?! Indeed, let's fix that.
2013-05-05 11:18:29 +02:00
Daniel Pavel a4ec8ec05d better error dialog on receiver permission error; fixes #17
The problem is caused by starting Solaar right after installing it; while udev
does have the new rule loaded, the /dev/hidraw* device nodes already exist
with the old permissions.

Rather than doing a "udevadm --reload-rules" (which could have unknown side-
effects on other devices), instruct the user to remove and re-insert the usb
receiver. The new /dev/hidraw* device nods will be created with the right
permissions.
2013-05-05 10:35:03 +02:00
Daniel Pavel 1f48e44cc6 Merge remote-tracking branch 'origin/master' 2013-05-04 20:20:43 +02:00
Daniel Pavel 83613f02a0 disable info label while we're still reading the info from the device 2013-05-04 20:19:33 +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 4cdd796a3d comment-out some debugging prints 2013-05-04 19:50:50 +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 4eeca12d6a create and destroy windows on demand
based on receiver added/removed events generated by udev
2013-05-04 12:20:51 +02:00
Daniel Pavel ad577d22d0 handle sleep in udev monitoring, fixes #35 2013-05-04 12:19:29 +02:00
Daniel Pavel 5e68094e87 split the about window into its own module 2013-05-04 12:01:28 +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 49ecd252ed always log exceptions, even without -v 2013-05-03 18:42:45 +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 abca81ea38 fix device _match-ing in enumerate() 2013-05-03 16:35:54 +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
Daniel Pavel 7d440c2430 replace thrown OSError with IOError 2013-05-03 16:25:32 +02:00
Daniel Pavel 94274fd092 Merge pull request #34 from Lekensteyn/battery-notif
Refactor battery setter, register 07 processing
2013-05-02 20:40:20 -07: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
Peter Wu a6b89b3ea3 Python3 compatibility for hidconsole
`type(u'')` is 'str' in Python 3, it was `unicode` on Python 2 (with
`unicode_literals` from `__future__`).
2013-05-02 22:58:35 +02:00
Daniel Pavel 0f80901bce quicker detection of matching receivers in udev 2013-05-02 11:11:53 +02:00
Daniel Pavel 8fc45e5590 fix solaar-cli to handle the new Receiver.open() api 2013-05-01 15:51:12 +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 e5a28ac64e simplified window/icon code, reworked how device updates are signalled 2013-04-30 19:44:03 +02:00
Daniel Pavel 2397c6c0ea about dialog updated 2013-04-30 17:25:09 +02:00
Daniel Pavel c3e6c3d1da more flexible icon loading 2013-04-30 15:45:35 +02:00
Daniel Pavel 22da75cb72 replaced some deprecated GObject calls with GLib 2013-04-30 11:47:30 +02:00
Daniel Pavel 9c621d5816 always try to initialize systray icon and notifications 2013-04-28 15:44:20 +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
Daniel Pavel 674ee9ac9e split read_battery in status into its own function 2013-04-28 15:01:27 +02:00
Daniel Pavel 5eab013cf6 more explicit logging 2013-04-28 14:58:40 +02:00
Daniel Pavel 079ef8d800 incipient support for the Nano receiver 2013-04-28 14:27:16 +02:00
Daniel Pavel 1a9be279c6 move the code for single-instance check into its own file 2013-04-28 14:06:41 +02:00
Daniel Pavel f5d2eba0c4 hidapi: dropped native, slight update to the python implementation
added an optional filter for driver name when enumerating devices
2013-04-28 14:05:33 +02:00
Daniel Pavel e7d19c9084 small fixes to hidconsole 2013-04-28 14:00:46 +02:00
Daniel Pavel 638bf38b25 version increased to 0.8.7.1 2013-04-28 13:59:07 +02:00
Daniel Pavel c4dc49ac5e Merge pull request #24 from Lekensteyn/hid10-fnkey
Add FN key swap support for K800 (and presumably K710)
2013-04-28 02:03:33 -07:00
Peter Wu 5e58f1e273 Fix battery status reading, add "fully charged"
Commit 438c501fae introduced support for HID++ 1.0
battery information. That accidentally selected the third parameter instead of
the second one. This commit fixes that and additionally adds a "fully charged"
status too that was found on the K800.
2013-04-27 17:07:55 +02:00
Peter Wu c79ad65d37 Add K710 with FN key swap support (pwr/Solaar#18)
The K710 keyboard is (according to the issue reporter) part of a MK710 combo
(which also contains a M705 mouse). Observing a succesful 07 register read,
I think that it is a HID++ 1.0 device too that uses the same register for FN
key swapping as K800.
2013-04-27 15:17:05 +02:00
Peter Wu 95a97ad776 Support FN keys swap for K800 2013-04-27 15:13:42 +02:00
Peter Wu 6c28cedf23 Make BooleanValidator accept bytes too besides int
Previously, only the first parameter byte can be read or written. After this
patch, it is possible to select/write more bytes by specifying a mask of type
bytes with the appropriate length.
2013-04-27 15:12:55 +02:00
Peter Wu 438c501fae Parse battery status of HID++ 1.0 devices
This applies to K800 but it seems also to apply to M510. The numbers are based
on the HID++ 2.0 spec that state the following for GetBatteryCapability:

    If number of levels < 10 or if mileage is disabled then report are
    mapped to 4 levels this way.

    0%->10%     critical
    11%->30%    low
    31%->80%    good
    81%->100%   full

    i.e. to report battery low, FW send 25%, to report battery good, FW send 50%.
2013-04-27 11:58:09 +02:00
Daniel Pavel 6ff30f2a0e release 0.8.7 2013-01-18 18:37:06 +02:00
Daniel Pavel 7707c5e558 don't notify on device disconnection 2013-01-18 17:41:45 +02:00
Daniel Pavel 9b7a920e0d fix for systray visibility (gihub #14) 2013-01-18 17:18:35 +02:00
Daniel Pavel 2e51380be5 log value of register 0x07 when register 0x0D not available 2013-01-18 12:41:01 +02:00
Daniel Pavel b82c89c582 release 0.8.6.2 2013-01-09 21:47:59 +02:00
Daniel Pavel 581d6747ad Merge branch 'nano' into 0.9
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2013-01-09 21:10:39 +02:00
Daniel Pavel 00a1aa7628 release 0.8.6.1 2013-01-09 15:36:15 +02:00
Daniel Pavel 79a9048db5 fixed names for NamedInts numerical values 2013-01-09 15:31:19 +02:00
Daniel Pavel 2bfba2e399 fixed application quit icon 2013-01-09 13:47:30 +02:00
Daniel Pavel 484419e526 release 0.8.6 2013-01-08 00:59:30 +02:00
Daniel Pavel 653d370a85 fixed locating application icons when running in a custom prefix 2013-01-08 00:40:54 +02:00
Daniel Pavel 316e91cfcf fixed some icon names 2013-01-08 00:39:13 +02:00
Daniel Pavel bb52c13f9a only allow a single instance of solaar to run at a time 2013-01-07 21:34:47 +02:00
Daniel Pavel 738d43fd83 fix for gihub issue #10
http://github.com/pwr/Solaar/issues/10
2013-01-07 20:14:31 +02:00
Daniel Pavel 60405abf58 dropped unnecessary #! in lib/ python files 2013-01-07 11:54:52 +02:00
Daniel Pavel 36f34da227 proper debian packaging, dropper stdeb 2013-01-05 11:48:35 +02:00
Daniel Pavel 064a7a113c added setup.py for python and debian packaging 2012-12-18 05:03:43 +02:00
Daniel Pavel 430a2d71e3 read all device features as soon as the application is idle 2012-12-14 19:51:18 +02:00
Daniel Pavel e43e92f2b0 commented-out testing register for M705 2012-12-14 16:57:10 +02:00
Daniel Pavel cc6c0ee7df fix for python3 2012-12-14 16:25:46 +02:00
Daniel Pavel f0c5046ccf re-worked the settings classes 2012-12-14 06:44:44 +02:00
Daniel Pavel 9db2a65b31 solaar-cli: return on the first match when searching for device name
results may be occasionally ambiguous, but the command runs faster
2012-12-13 15:12:51 +02:00
Daniel Pavel b39016df7c small clean-ups in device status handling 2012-12-13 14:54:31 +02:00
Daniel Pavel c22fe6320d properly slice NamedInts 2012-12-13 05:26:56 +02:00
Daniel Pavel b99ccdf612 support slices in FeaturesArray and KeysArray 2012-12-13 03:34:39 +02:00
Daniel Pavel 2d338ffbfb better __str__ of Setting instances 2012-12-13 03:33:19 +02:00
Daniel Pavel 954fc29613 fix event storm when toggling a device's property 2012-12-12 22:55:04 +02:00
Daniel Pavel 27f10cd10e small clean-up in FeaturesArray, should be slightly faster 2012-12-12 21:44:37 +02:00
Daniel Pavel f4b92ee690 print () clean-ups 2012-12-12 21:43:55 +02:00
Daniel Pavel 1c4d3d5f13 simpler NamedInt, more logical NamedInts 2012-12-12 21:42:43 +02:00
Daniel Pavel 7bb7a092a4 descriptors update (new device K230)
also assume by default all devices have battery info in register 0x0D,
and blacklist them when that's not the case
2012-12-12 21:41:29 +02:00
Daniel Pavel 0ed623caf9 made notifications handling clearer in status.py 2012-12-12 21:39:04 +02:00
Daniel Pavel 19cd40cfdd renamed 'events' to 'notifications'
in order to match the name in Logitech's documentation
2012-12-12 21:03:07 +02:00
Daniel Pavel 17698bfeae minor clean-ups in texts 2012-12-12 20:44:29 +02:00
Daniel Pavel fa72b89b3a release 0.8.3 2012-12-08 05:29:50 +02:00
Daniel Pavel 80c36a02a9 improved notifications detection 2012-12-08 01:49:59 +02:00
Daniel Pavel d38bec39b6 improved hid++ support 2012-12-08 00:41:43 +02:00
Daniel Pavel 33a9ca060d made hidconsole more user-friendly 2012-12-08 00:41:10 +02:00
Daniel Pavel 30fedf418c re-read device settings when they come back online 2012-12-07 21:00:36 +02:00
Daniel Pavel ee16892481 fixed registers access 2012-12-07 20:38:24 +02:00
Daniel Pavel e2909f6165 fixed event detection 2012-12-07 20:37:13 +02:00
Daniel Pavel b86dcce381 I come from the __future__, come with me if you want to live. 2012-12-07 17:10:22 +02:00
Daniel Pavel c4be58f074 dropped bin/scan as deprecated, bin/solaar-cli completely replaces it 2012-12-07 15:31:19 +02:00
Daniel Pavel b3f0bfa4fb fixed obsolete import 2012-12-07 14:41:00 +02:00
Daniel Pavel 37daf3a192 better handling of terminal in hidconsole 2012-12-07 14:40:48 +02:00
Daniel Pavel 7ada4af31b hidconsole has to be run in unbuffered mode 2012-12-07 14:29:30 +02:00
Daniel Pavel 67db483b0b dropped the unittests, they've been obsolete and nonfunctional for a long time now 2012-12-07 14:00:28 +02:00
Daniel Pavel 3569489ce7 added registers and settings to device descriptors 2012-12-07 13:54:03 +02:00
Daniel Pavel 9066003240 named ints act like proper sequences now 2012-12-07 13:50:44 +02:00
Daniel Pavel f0007d0a13 updates to the command lines 2012-12-07 13:41:07 +02:00
Daniel Pavel ff6db1d00a fix for python 3 2012-12-06 14:15:28 +02:00
Daniel Pavel 27403a08d2 improved hid++ 1.0 support 2012-12-05 21:41:02 +02:00
Daniel Pavel 6d70d2aada improved support for hid++ 1.0 devices 2012-12-05 15:10:41 +02:00
Daniel Pavel 5a99e55309 readme updates 2012-12-03 15:07:35 +02:00
Daniel Pavel 116ba72f37 fixed possible dangling weakrefs on start-up 2012-12-03 12:51:22 +02:00
Daniel Pavel 3fe9caf0e6 added solaar-cli for command-line operations 2012-12-03 11:34:35 +02:00
Daniel Pavel 2a44b0bb5b fixed scan not seeing the devices 2012-12-01 22:34:52 +02:00
Daniel Pavel 1cc532d600 fixed orphaned weakrefs when unpairing a device 2012-12-01 19:12:53 +02:00
Daniel Pavel 8f5fa0cf9a code clean-ups, the app starts faster now 2012-12-01 15:49:52 +02:00
Daniel Pavel 89c6904d69 fixed pairing (again), this time also tested it 2012-11-30 20:28:22 +02:00
Daniel Pavel 14663ca204 re-wrote loading of icons for devices 2012-11-30 15:23:16 +02:00
Daniel Pavel 64d2b35ace some clean-ups 2012-11-30 15:20:41 +02:00
Daniel Pavel ab5e09db93 pairing fixes 2012-11-29 21:26:03 +02:00
Daniel Pavel 932a015e49 better battery icon in the systray 2012-11-29 20:13:53 +02:00
Daniel Pavel d6b18cd426 python 3 fixes 2012-11-29 12:34:20 +02:00
Daniel Pavel 84540fb087 re-wrote most of the app, based on latest HID++ docs from Logitech 2012-11-29 04:10:16 +02:00
Daniel Pavel 5b8c983ab3 some speed tweaks to hidconsole batch mode 2012-11-24 22:49:15 +02:00
Daniel Pavel 13a11e78f0 added more known device names and kinds 2012-11-13 09:48:52 +02:00
Daniel Pavel 4c5cf85091 re-worked the UI a bit to give better info on devices status 2012-11-12 15:28:38 +02:00
Daniel Pavel 6db4deafee python 3 fixes 2012-11-11 22:37:42 +02:00
Daniel Pavel bcc2bf123e fixed initialization sequence for newly detected devices 2012-11-11 20:11:30 +02:00
Daniel Pavel 50fedab19e re-worked how fd handles are used in multi-threading 2012-11-11 17:03:13 +02:00
Daniel Pavel 4b2d8a8d5a addded custom swids to feature calls 2012-11-09 09:20:28 +02:00
Daniel Pavel ec6a2d892a improved hidconsole in tty and batch mode 2012-11-08 12:01:00 +02:00
Daniel Pavel a59ad221a1 improved support for HID 1.0 devices 2012-11-08 11:41:09 +02:00
Daniel Pavel c9843e4408 properly implemented pinging a device 2012-11-08 11:39:56 +02:00
Daniel Pavel 8ae8d4502d fixed some log messages 2012-11-07 22:32:55 +02:00
Daniel Pavel 5f6fd5a333 added codename for Performance MX mouse 2012-11-07 21:51:07 +02:00
Daniel Pavel 89205f0bbc better matching of task replies 2012-11-07 21:29:06 +02:00
Daniel Pavel f172ceebd1 when input is not a tty, wait a second before exiting 2012-11-07 21:28:42 +02:00
Daniel Pavel d5dec5f7ec logging fix 2012-11-07 21:14:50 +02:00
Daniel Pavel f8d0beb471 don't forget the 6th device on scan 2012-11-07 20:41:14 +02:00
Daniel Pavel 6e939e9485 small documentation updates 2012-11-06 18:44:24 +02:00
Daniel Pavel 4cb9b30466 use the first python version found when starting the scripts 2012-11-05 20:52:51 +02:00
Daniel Pavel 5c38c33374 notify in case of permissions problem on the hidraw device 2012-11-04 15:30:39 +02:00
Daniel Pavel d5f8a4bc45 cleanup in the pyudev hidapi implementation, incremented app version 2012-11-03 07:49:10 +02:00
Daniel Pavel 39855408ed added pyudev-based implementation of hidapi 2012-11-02 22:09:31 +02:00
Daniel Pavel 8fc078bdaf hidapi.enumerate() returns an iterable 2012-11-02 22:09:04 +02:00
Daniel Pavel 6e06e39612 fixed loading readline history when the file does not exist 2012-11-02 09:57:08 +02:00
Daniel Pavel 802da6a21a clean-ups 2012-11-02 07:21:55 +02:00
Daniel Pavel 1d8ac27614 clean-up and simpler monitoring of receiver state 2012-11-01 13:47:11 +02:00
Daniel Pavel a8a72f7ae5 dropped the watcher thread
now the receiver is looked for and initialized on the application's main
thread
2012-11-01 06:30:29 +02:00
Daniel Pavel e7bb599689 reworked the way tasks are processed by the listener 2012-10-27 18:40:54 +03:00
Daniel Pavel 62a91b56d2 logging and python3 cleanups 2012-10-24 15:09:39 +03:00
Daniel Pavel 60c13270f9 ui and pairing updates 2012-10-24 01:50:57 +03:00
Daniel Pavel 7354429316 fix for python3 2012-10-23 09:06:19 +03:00
Daniel Pavel 4f183b2826 added info box for the unifying receiver 2012-10-22 20:59:21 +03:00
Daniel Pavel b10ade4430 initial implementation of pairing 2012-10-22 10:03:26 +03:00
Daniel Pavel f2dac70131 reworked the receiver and devices into classes 2012-10-18 14:19:20 +03:00
Daniel Pavel ec7ebb0939 fix a double-free when the receiver is removed 2012-10-13 19:55:44 +03:00
Daniel Pavel 371b874986 Packet __str__ fix 2012-10-13 18:30:00 +03:00
Daniel Pavel e6d1244ed5 use a fully async model for updating the device statuses 2012-10-13 18:21:47 +03:00
Daniel Pavel bca21a7220 use specialized namedtuple for events 2012-10-13 18:13:05 +03:00
Daniel Pavel 0255194b46 dropped firmware from standard device info 2012-10-12 04:36:13 +03:00
Daniel Pavel 5da2d43b1c expanded devices database, commented out some unnecessary logging 2012-10-12 04:24:35 +03:00
Daniel Pavel bc9f39873e api function to query receiver info 2012-10-11 22:02:13 +03:00
Daniel Pavel cbfcd8416a re-organized the directories a bit 2012-10-11 19:19:27 +03:00
Daniel Pavel c9f06aa5da clean-ups in LUR library 2012-10-11 18:38:57 +03:00
Daniel Pavel f295d1d90e tweaked the ui a bit 2012-10-11 16:46:49 +03:00
Daniel Pavel e52bfe53a5 reorganized the app files a bit 2012-10-10 17:24:13 +03:00
Daniel Pavel e34ad5104f reworked the event listener 2012-10-10 06:37:03 +03:00
Daniel Pavel 9111afcd6b small updates to the app 2012-10-09 15:13:31 +03:00
Daniel Pavel 9b2c1bdef6 fixes for python3 2012-10-09 12:31:46 +03:00
Daniel Pavel 377d7c844d made hidconsole work in python2 and 3 2012-10-08 15:03:36 +03:00
Daniel Pavel 257f74b496 cleaned-up the app a bit 2012-10-08 14:12:38 +03:00
Daniel Pavel 882332256b made hidconsole read events properly 2012-10-08 14:10:56 +03:00
Daniel Pavel 058d81a767 improvements to the hid console 2012-10-07 20:20:36 +03:00
Daniel Pavel 8ee2940106 cleanups in api 2012-10-07 20:19:57 +03:00
Daniel Pavel 4f8e983843 some cleanups in base 2012-10-07 16:45:44 +03:00
Daniel Pavel c6427ab4a6 better logging in cli tools 2012-10-06 14:48:42 +03:00
Daniel Pavel ecf3539ba2 cleanups 2012-10-05 13:26:52 +03:00
Daniel Pavel cb3a42c04e greatly simplified loading of icons 2012-10-05 02:39:32 +03:00
Daniel Pavel 9ba6aa1c31 added a devices status window 2012-10-04 01:36:43 +03:00
Daniel Pavel 7ba3a6fe70 made hidapi a package 2012-10-03 08:42:40 +03:00
Daniel Pavel 73460c2541 fixed some typos 2012-09-28 14:10:56 +03:00
Daniel Pavel d65c1dbf59 some clean-ups in the logitech library 2012-09-28 13:58:17 +03:00
Daniel Pavel 0fe3151051 added a cli tool for scanning the UR devices 2012-09-28 10:34:49 +03:00
Daniel Pavel 407c41756d added a hid console tool 2012-09-28 02:18:10 +03:00
Daniel Pavel 42ef44e2e2 forget about devices that have been disconnected for too long 2012-09-28 01:19:23 +03:00
Daniel Pavel 4100e8c625 small clean-ups 2012-09-28 00:59:03 +03:00
Daniel Pavel 4da3c09949 updated lib and application to work both python 2 and 3 2012-09-27 21:17:49 +03:00
Daniel Pavel 216c9eafe7 added proper icons for the receiver and K750 keyboard 2012-09-27 17:44:03 +03:00
Daniel Pavel 51bdea32d5 some library cleanups 2012-09-27 16:05:41 +03:00
Daniel Pavel 692ea58937 raise NoReceiver if the receiver is removed during read 2012-09-27 15:52:42 +03:00
Daniel Pavel 0dc02af78d properly distinguish between read error and no data read 2012-09-27 15:16:43 +03:00
Daniel Pavel 05560d8af4 solaar app functional now 2012-09-27 14:55:38 +03:00
Daniel Pavel 2c5a3b0ed2 small doc changes 2012-09-25 13:47:37 +03:00
Daniel Pavel 6c68f47597 small updates to hidapi, mostly cosmetic 2012-09-25 07:56:32 +03:00