lib: Add "Touchpad" device type

This commit is contained in:
Bastien Nocera 2020-12-16 11:55:41 +01:00
parent c6d2618e95
commit 67eefa17dd
8 changed files with 28 additions and 12 deletions

View file

@ -307,20 +307,23 @@ up_device_to_text (UpDevice *device)
if (kind == UP_DEVICE_KIND_BATTERY ||
kind == UP_DEVICE_KIND_MOUSE ||
kind == UP_DEVICE_KIND_KEYBOARD ||
kind == UP_DEVICE_KIND_UPS)
kind == UP_DEVICE_KIND_UPS ||
kind == UP_DEVICE_KIND_TOUCHPAD)
g_string_append_printf (string, " present: %s\n", up_device_bool_to_string (up_exported_device_get_is_present (priv->proxy_device)));
if ((kind == UP_DEVICE_KIND_PHONE ||
kind == UP_DEVICE_KIND_BATTERY ||
kind == UP_DEVICE_KIND_MOUSE ||
kind == UP_DEVICE_KIND_KEYBOARD ||
kind == UP_DEVICE_KIND_GAMING_INPUT ||
kind == UP_DEVICE_KIND_PEN) &&
kind == UP_DEVICE_KIND_PEN ||
kind == UP_DEVICE_KIND_TOUCHPAD) &&
!is_display)
g_string_append_printf (string, " rechargeable: %s\n", up_device_bool_to_string (up_exported_device_get_is_rechargeable (priv->proxy_device)));
if (kind == UP_DEVICE_KIND_BATTERY ||
kind == UP_DEVICE_KIND_MOUSE ||
kind == UP_DEVICE_KIND_KEYBOARD ||
kind == UP_DEVICE_KIND_UPS)
kind == UP_DEVICE_KIND_UPS ||
kind == UP_DEVICE_KIND_TOUCHPAD)
g_string_append_printf (string, " state: %s\n", up_device_state_to_string (up_exported_device_get_state (priv->proxy_device)));
g_string_append_printf (string, " warning-level: %s\n", up_device_level_to_string (up_exported_device_get_warning_level (priv->proxy_device)));
battery_level = up_exported_device_get_battery_level (priv->proxy_device);
@ -369,7 +372,8 @@ up_device_to_text (UpDevice *device)
kind == UP_DEVICE_KIND_MEDIA_PLAYER ||
kind == UP_DEVICE_KIND_UPS ||
kind == UP_DEVICE_KIND_GAMING_INPUT ||
kind == UP_DEVICE_KIND_PEN) {
kind == UP_DEVICE_KIND_PEN ||
kind == UP_DEVICE_KIND_TOUCHPAD) {
if (battery_level == UP_DEVICE_LEVEL_NONE)
g_string_append_printf (string, " percentage: %g%%\n", up_exported_device_get_percentage (priv->proxy_device));
else

View file

@ -73,6 +73,8 @@ up_device_kind_to_string (UpDeviceKind type_enum)
return "gaming-input";
case UP_DEVICE_KIND_PEN:
return "pen";
case UP_DEVICE_KIND_TOUCHPAD:
return "touchpad";
default:
return "unknown";
}
@ -117,6 +119,8 @@ up_device_kind_from_string (const gchar *type)
return UP_DEVICE_KIND_GAMING_INPUT;
if (g_str_equal (type, "pen"))
return UP_DEVICE_KIND_PEN;
if (g_str_equal (type, "touchpad"))
return UP_DEVICE_KIND_TOUCHPAD;
return UP_DEVICE_KIND_UNKNOWN;
}

View file

@ -50,6 +50,7 @@ typedef enum {
UP_DEVICE_KIND_COMPUTER,
UP_DEVICE_KIND_GAMING_INPUT,
UP_DEVICE_KIND_PEN,
UP_DEVICE_KIND_TOUCHPAD,
UP_DEVICE_KIND_LAST
} UpDeviceKind;

View file

@ -775,10 +775,12 @@ hidpp_device_refresh (HidppDevice *device,
break;
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_MOUSE:
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_TRACKBALL:
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_TOUCHPAD:
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_PRESENTER:
priv->kind = HIDPP_DEVICE_KIND_MOUSE;
break;
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_TOUCHPAD:
priv->kind = HIDPP_DEVICE_KIND_TOUCHPAD;
break;
case HIDPP_READ_LONG_REGISTER_DEVICE_TYPE_TABLET:
priv->kind = HIDPP_DEVICE_KIND_TABLET;
break;

View file

@ -87,7 +87,8 @@ BATTERY_IFACE = 'org.bluez.Battery1'
UP_DEVICE_KIND_TABLET,
UP_DEVICE_KIND_COMPUTER,
UP_DEVICE_KIND_GAMING_INPUT,
UP_DEVICE_KIND_PEN) = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
UP_DEVICE_KIND_PEN,
UP_DEVICE_KIND_TOUCHPAD) = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
class Tests(dbusmock.DBusTestCase):
@classmethod
@ -1275,7 +1276,7 @@ class Tests(dbusmock.DBusTestCase):
self.testbed.uevent(batt_dev, 'change')
time.sleep(0.5)
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Type'), UP_DEVICE_KIND_MOUSE)
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Type'), UP_DEVICE_KIND_TOUCHPAD)
def test_hidpp_touchpad(self):
'''HID++ touchpad battery with 5 capacity levels'''
@ -1313,7 +1314,7 @@ class Tests(dbusmock.DBusTestCase):
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Model'), 'Logitech T650')
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'PowerSupply'), False)
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Type'), UP_DEVICE_KIND_MOUSE)
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Type'), UP_DEVICE_KIND_TOUCHPAD)
self.assertEqual(self.get_dbus_dev_property(mousebat0_up, 'Serial'), '123456')
self.assertEqual(self.get_dbus_property('OnBattery'), False)
self.assertEqual(self.get_dbus_display_property('WarningLevel'), UP_DEVICE_LEVEL_NONE)

View file

@ -1053,9 +1053,10 @@ up_device_supply_guess_type (GUdevDevice *native,
sibling = up_device_supply_get_sibling_with_subsystem (native, "input");
if (sibling) {
if (g_udev_device_get_property_as_boolean (sibling, "ID_INPUT_MOUSE") ||
g_udev_device_get_property_as_boolean (sibling, "ID_INPUT_TOUCHPAD")) {
if (g_udev_device_get_property_as_boolean (sibling, "ID_INPUT_MOUSE")) {
type = UP_DEVICE_KIND_MOUSE;
} else if (g_udev_device_get_property_as_boolean (sibling, "ID_INPUT_TOUCHPAD")) {
type = UP_DEVICE_KIND_TOUCHPAD;
} else if (g_udev_device_get_property_as_boolean (sibling, "ID_INPUT_JOYSTICK")) {
type = UP_DEVICE_KIND_GAMING_INPUT;
} else {

View file

@ -114,10 +114,12 @@ up_device_unifying_get_device_kind (UpDeviceUnifying *unifying)
UpDeviceKind kind;
switch (hidpp_device_get_kind (unifying->priv->hidpp_device)) {
case HIDPP_DEVICE_KIND_MOUSE:
case HIDPP_DEVICE_KIND_TOUCHPAD:
case HIDPP_DEVICE_KIND_TRACKBALL:
kind = UP_DEVICE_KIND_MOUSE;
break;
case HIDPP_DEVICE_KIND_TOUCHPAD:
kind = UP_DEVICE_KIND_TOUCHPAD;
break;
case HIDPP_DEVICE_KIND_KEYBOARD:
kind = UP_DEVICE_KIND_KEYBOARD;
break;

View file

@ -651,7 +651,8 @@ up_daemon_compute_warning_level (UpDaemon *daemon,
* battery level, so this avoids falling directly
* into critical (or off) before any warnings */
if (kind == UP_DEVICE_KIND_MOUSE ||
kind == UP_DEVICE_KIND_KEYBOARD) {
kind == UP_DEVICE_KIND_KEYBOARD ||
kind == UP_DEVICE_KIND_TOUCHPAD) {
if (percentage <= 5.0f)
return UP_DEVICE_LEVEL_CRITICAL;
else if (percentage <= 10.0f)