From 4f36371af3eb43a012feb52eb9a1908ed0b2ac76 Mon Sep 17 00:00:00 2001 From: Julian Kandlhofer Date: Tue, 9 Jun 2020 09:16:20 +0200 Subject: [PATCH] implement 'DeviceType' property Signed-off-by: Julian Kandlhofer --- data/devices/asus-rog-buzzard.device | 1 + data/devices/asus-rog-chakram-x.device | 1 + data/devices/asus-rog-chakram.device | 1 + .../asus-rog-gladius2-origin-pink.device | 1 + data/devices/asus-rog-gladius2-origin.device | 1 + data/devices/asus-rog-gladius2.device | 1 + data/devices/asus-rog-keris-wireless.device | 1 + data/devices/asus-rog-pugio.device | 1 + data/devices/asus-rog-spatha-x.device | 1 + data/devices/asus-rog-strix-carry.device | 1 + data/devices/asus-rog-strix-impact.device | 1 + .../asus-rog-strix-impact2-wireless.device | 1 + data/devices/asus-rog-strix-impact2.device | 1 + data/devices/device.example | 3 +++ data/devices/etekcity-scroll-alpha.device | 1 + data/devices/glorious-model-d.device | 1 + data/devices/glorious-model-o.device | 1 + data/devices/gskill-MX-780.device | 1 + data/devices/logitech-M325.device | 1 + data/devices/logitech-M500s.device | 1 + data/devices/logitech-M545.device | 1 + data/devices/logitech-M570.device | 1 + data/devices/logitech-M585-M590.device | 1 + data/devices/logitech-M705.device | 1 + data/devices/logitech-M720.device | 1 + data/devices/logitech-MX-Anywhere-3.device | 1 + data/devices/logitech-MX-Anywhere2.device | 1 + data/devices/logitech-MX-Anywhere2S.device | 1 + data/devices/logitech-MX-Anywhere3B.device | 3 ++- data/devices/logitech-MX-Ergo.device | 1 + data/devices/logitech-MX-Master-2S.device | 1 + data/devices/logitech-MX-Master-3.device | 1 + data/devices/logitech-MX-Master-3S.device | 1 + data/devices/logitech-MX-Master.device | 1 + data/devices/logitech-MX-Vertical.device | 1 + data/devices/logitech-MX518.device | 1 + data/devices/logitech-Marathon-M705.device | 1 + data/devices/logitech-T650.device | 1 + .../devices/logitech-Wireless-Touchpad.device | 1 + data/devices/logitech-g-powerplay.device | 1 + data/devices/logitech-g-pro-wireless.device | 1 + ...ogitech-g-pro-x-wireless-superlight.device | 1 + data/devices/logitech-g-pro.device | 1 + data/devices/logitech-g102-g203.device | 1 + data/devices/logitech-g300.device | 1 + data/devices/logitech-g302.device | 1 + data/devices/logitech-g303-shroud.device | 1 + data/devices/logitech-g303.device | 1 + data/devices/logitech-g305.device | 1 + data/devices/logitech-g402.device | 1 + data/devices/logitech-g403-hero.device | 1 + data/devices/logitech-g403-wireless.device | 1 + data/devices/logitech-g403.device | 1 + data/devices/logitech-g5-2007.device | 1 + data/devices/logitech-g5.device | 1 + data/devices/logitech-g500.device | 1 + data/devices/logitech-g500s.device | 1 + .../logitech-g502-hero-wireless.device | 1 + data/devices/logitech-g502-hero.device | 1 + .../devices/logitech-g502-proteus-core.device | 1 + .../logitech-g502-proteus-spectrum.device | 1 + data/devices/logitech-g502-x-wireless.device | 1 + data/devices/logitech-g502-x.device | 1 + data/devices/logitech-g513.device | 1 + data/devices/logitech-g600.device | 1 + data/devices/logitech-g602.device | 1 + data/devices/logitech-g603.device | 1 + data/devices/logitech-g604.device | 1 + data/devices/logitech-g635.device | 1 + data/devices/logitech-g7.device | 1 + data/devices/logitech-g700-wireless.device | 1 + data/devices/logitech-g700.device | 1 + data/devices/logitech-g700s.device | 1 + data/devices/logitech-g703-hero.device | 2 +- data/devices/logitech-g703.device | 2 +- data/devices/logitech-g733.device | 1 + data/devices/logitech-g815.device | 1 + data/devices/logitech-g9.device | 1 + data/devices/logitech-g900.device | 1 + data/devices/logitech-g903-hero.device | 1 + data/devices/logitech-g903.device | 1 + data/devices/logitech-g910.device | 1 + data/devices/logitech-g915-tkl.device | 1 + data/devices/logitech-g915.device | 1 + data/devices/logitech-g935.device | 1 + ...gitech-g9x-Call-of-Duty-MW3-Edition.device | 1 + data/devices/logitech-g9x-Original.device | 1 + data/devices/nubwo-x7-spectrum.device | 1 + data/devices/openinput.device | 1 + data/devices/roccat-kone-emp.device | 1 + data/devices/roccat-kone-pure.device | 1 + data/devices/roccat-kone-xtd.device | 1 + data/devices/sinowealth-0027.device | 1 + data/devices/sinowealth-0029.device | 1 + data/devices/sinowealth-1007.device | 1 + data/devices/steelseries-kinzu-v2-pro.device | 1 + data/devices/steelseries-kinzu-v2.device | 1 + data/devices/steelseries-kinzu-v3.device | 1 + data/devices/steelseries-rival-100.device | 1 + data/devices/steelseries-rival-310.device | 1 + data/devices/steelseries-rival-600.device | 1 + data/devices/steelseries-rival.device | 1 + data/devices/steelseries-sensei-310.device | 1 + data/devices/steelseries-sensei-raw.device | 1 + ratbagd/ratbagd-device.c | 23 ++++++++++++++++ src/libratbag-data.c | 26 +++++++++++++++++++ src/libratbag-data.h | 2 ++ src/libratbag-enums.h | 26 +++++++++++++++++++ src/libratbag-private.h | 1 + src/libratbag-test.c | 2 ++ src/libratbag.c | 10 +++++++ src/libratbag.h | 9 +++++++ test/data-parse-test.py | 9 ++++++- tools/ratbagc.py.in | 21 +++++++++++++++ tools/ratbagctl.in.in | 3 ++- tools/ratbagd.py | 21 +++++++++++++++ 116 files changed, 258 insertions(+), 5 deletions(-) diff --git a/data/devices/asus-rog-buzzard.device b/data/devices/asus-rog-buzzard.device index a6a8c7b2..8762edce 100644 --- a/data/devices/asus-rog-buzzard.device +++ b/data/devices/asus-rog-buzzard.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG GX860 Buzzard Mouse DeviceMatch=usb:0b05:1816 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-chakram-x.device b/data/devices/asus-rog-chakram-x.device index 6bd8b53b..50bbba7b 100644 --- a/data/devices/asus-rog-chakram-x.device +++ b/data/devices/asus-rog-chakram-x.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Chakram X DeviceMatch=usb:0b05:1a1a +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-chakram.device b/data/devices/asus-rog-chakram.device index 76a49902..de5f4041 100644 --- a/data/devices/asus-rog-chakram.device +++ b/data/devices/asus-rog-chakram.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Chakram DeviceMatch=usb:0b05:18e3;usb:0b05:18e5 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-gladius2-origin-pink.device b/data/devices/asus-rog-gladius2-origin-pink.device index 83bfa421..13252cc8 100644 --- a/data/devices/asus-rog-gladius2-origin-pink.device +++ b/data/devices/asus-rog-gladius2-origin-pink.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Gladius II Origin PNK LTD DeviceMatch=usb:0b05:18cd +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-gladius2-origin.device b/data/devices/asus-rog-gladius2-origin.device index 2da0cc2c..7742925e 100644 --- a/data/devices/asus-rog-gladius2-origin.device +++ b/data/devices/asus-rog-gladius2-origin.device @@ -2,6 +2,7 @@ [Device] Name=ASUS ROG Gladius II Origin DeviceMatch=usb:0b05:1877 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-gladius2.device b/data/devices/asus-rog-gladius2.device index f157a621..db48565b 100644 --- a/data/devices/asus-rog-gladius2.device +++ b/data/devices/asus-rog-gladius2.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Gladius II DeviceMatch=usb:0b05:1845 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-keris-wireless.device b/data/devices/asus-rog-keris-wireless.device index cbc95707..1fda94c0 100644 --- a/data/devices/asus-rog-keris-wireless.device +++ b/data/devices/asus-rog-keris-wireless.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Keris Wireless DeviceMatch=usb:0b05:195e;usb:0b05:1960 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-pugio.device b/data/devices/asus-rog-pugio.device index b986c4fe..f7c7664b 100644 --- a/data/devices/asus-rog-pugio.device +++ b/data/devices/asus-rog-pugio.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Pugio DeviceMatch=usb:0b05:1846 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-spatha-x.device b/data/devices/asus-rog-spatha-x.device index 83195ab5..7b837f15 100644 --- a/data/devices/asus-rog-spatha-x.device +++ b/data/devices/asus-rog-spatha-x.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Spatha X DeviceMatch=usb:0b05:1979;usb:0b05:1977 +DeviceType=mouse Driver=asus LedTypes=logo;wheel;side diff --git a/data/devices/asus-rog-strix-carry.device b/data/devices/asus-rog-strix-carry.device index 95ef4462..446df41b 100644 --- a/data/devices/asus-rog-strix-carry.device +++ b/data/devices/asus-rog-strix-carry.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Strix Carry DeviceMatch=usb:0b05:18b4 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-strix-impact.device b/data/devices/asus-rog-strix-impact.device index 1bb08caf..8473fa96 100644 --- a/data/devices/asus-rog-strix-impact.device +++ b/data/devices/asus-rog-strix-impact.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Strix Impact DeviceMatch=usb:0b05:1847 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-strix-impact2-wireless.device b/data/devices/asus-rog-strix-impact2-wireless.device index 613a6e78..943dbef2 100644 --- a/data/devices/asus-rog-strix-impact2-wireless.device +++ b/data/devices/asus-rog-strix-impact2-wireless.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Strix Impact II Wireless DeviceMatch=usb:0b05:1947;usb:0b05:1949 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/asus-rog-strix-impact2.device b/data/devices/asus-rog-strix-impact2.device index 654e9a54..bc97c43a 100644 --- a/data/devices/asus-rog-strix-impact2.device +++ b/data/devices/asus-rog-strix-impact2.device @@ -1,6 +1,7 @@ [Device] Name=ASUS ROG Strix Impact II DeviceMatch=usb:0b05:18e1 +DeviceType=mouse Driver=asus [Driver/asus] diff --git a/data/devices/device.example b/data/devices/device.example index ec5b3801..9a879ca9 100644 --- a/data/devices/device.example +++ b/data/devices/device.example @@ -15,6 +15,9 @@ DeviceMatch=usb:12ab:00f2 # The libratbag driver backend Driver=hidpp10 +# The type of this Device: either 'mouse', 'keyboard' or 'other' +DeviceType=mouse + # The types of the LEDs, in the indexed order they appear in, separated by a # semicolon. # Allowed values: logo, side, battery, dpi diff --git a/data/devices/etekcity-scroll-alpha.device b/data/devices/etekcity-scroll-alpha.device index 5605ce95..daee1cab 100644 --- a/data/devices/etekcity-scroll-alpha.device +++ b/data/devices/etekcity-scroll-alpha.device @@ -2,3 +2,4 @@ Name=Etekcity Scroll Alpha DeviceMatch=usb:1ea7:4011 Driver=etekcity +DeviceType=mouse diff --git a/data/devices/glorious-model-d.device b/data/devices/glorious-model-d.device index 11eadc5f..010117d4 100644 --- a/data/devices/glorious-model-d.device +++ b/data/devices/glorious-model-d.device @@ -1,6 +1,7 @@ [Device] Name=Glorious Model D DeviceMatch=usb:258a:0033 +DeviceType=mouse Driver=sinowealth [Driver/sinowealth/devices/GloriousModelD] diff --git a/data/devices/glorious-model-o.device b/data/devices/glorious-model-o.device index 0f903fe4..ec2ec8eb 100644 --- a/data/devices/glorious-model-o.device +++ b/data/devices/glorious-model-o.device @@ -1,6 +1,7 @@ [Device] Name=Glorious Model O/O- DeviceMatch=usb:258a:0036 +DeviceType=mouse Driver=sinowealth [Driver/sinowealth/devices/GloriousModelO] diff --git a/data/devices/gskill-MX-780.device b/data/devices/gskill-MX-780.device index d258e33e..8b74dd17 100644 --- a/data/devices/gskill-MX-780.device +++ b/data/devices/gskill-MX-780.device @@ -3,3 +3,4 @@ Name=G.Skill MX-780 DeviceMatch=usb:28da:3101 Driver=gskill +DeviceType=mouse diff --git a/data/devices/logitech-M325.device b/data/devices/logitech-M325.device index 1718e6da..d716ca65 100644 --- a/data/devices/logitech-M325.device +++ b/data/devices/logitech-M325.device @@ -3,3 +3,4 @@ Name=Logitech M325 DeviceMatch=usb:046d:400a Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-M500s.device b/data/devices/logitech-M500s.device index 10f4a88a..6bec648b 100644 --- a/data/devices/logitech-M500s.device +++ b/data/devices/logitech-M500s.device @@ -2,4 +2,5 @@ [Device] Name=Logitech M500s DeviceMatch=usb:046d:c093 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-M545.device b/data/devices/logitech-M545.device index 224bbd6c..b3d3fd32 100644 --- a/data/devices/logitech-M545.device +++ b/data/devices/logitech-M545.device @@ -2,4 +2,5 @@ [Device] Name=Logitech M545 DeviceMatch=usb:046d:4052 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-M570.device b/data/devices/logitech-M570.device index 85122536..f9b1fbc2 100644 --- a/data/devices/logitech-M570.device +++ b/data/devices/logitech-M570.device @@ -3,3 +3,4 @@ Name=Logitech M570 DeviceMatch=usb:046d:1028 Driver=hidpp10 +DeviceType=mouse diff --git a/data/devices/logitech-M585-M590.device b/data/devices/logitech-M585-M590.device index 57737860..85f2d7f1 100644 --- a/data/devices/logitech-M585-M590.device +++ b/data/devices/logitech-M585-M590.device @@ -3,3 +3,4 @@ Name=Logitech M585/M590 DeviceMatch=usb:046d:406b;bluetooth:046d:b01b Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-M705.device b/data/devices/logitech-M705.device index 0ffca355..dceeb9b4 100644 --- a/data/devices/logitech-M705.device +++ b/data/devices/logitech-M705.device @@ -3,3 +3,4 @@ Name=Logitech M705 DeviceMatch=usb:046d:101b Driver=hidpp10 +DeviceType=mouse diff --git a/data/devices/logitech-M720.device b/data/devices/logitech-M720.device index 163929f0..2cc04611 100644 --- a/data/devices/logitech-M720.device +++ b/data/devices/logitech-M720.device @@ -2,3 +2,4 @@ Name=Logitech M720 DeviceMatch=usb:046d:405e;bluetooth:046d:b015 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Anywhere-3.device b/data/devices/logitech-MX-Anywhere-3.device index c09cd56b..ecb01616 100644 --- a/data/devices/logitech-MX-Anywhere-3.device +++ b/data/devices/logitech-MX-Anywhere-3.device @@ -2,4 +2,5 @@ [Device] Name=Logitech MX Anywhere 3 DeviceMatch=bluetooth:046d:b025;usb:046d:4090 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-MX-Anywhere2.device b/data/devices/logitech-MX-Anywhere2.device index b8b05437..d7ab8b62 100644 --- a/data/devices/logitech-MX-Anywhere2.device +++ b/data/devices/logitech-MX-Anywhere2.device @@ -2,3 +2,4 @@ Name=Logitech MX Anywhere 2 DeviceMatch=usb:046d:404a;usb:046d:4072;usb:046d:4063;bluetooth:046d:b013;bluetooth:046d:b018;bluetooth:046d:b01f Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Anywhere2S.device b/data/devices/logitech-MX-Anywhere2S.device index e48e628e..d0feb1ae 100644 --- a/data/devices/logitech-MX-Anywhere2S.device +++ b/data/devices/logitech-MX-Anywhere2S.device @@ -2,3 +2,4 @@ Name=Logitech MX Anywhere 2S DeviceMatch=bluetooth:046d:b01a;usb:046d:406a Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Anywhere3B.device b/data/devices/logitech-MX-Anywhere3B.device index 52a0fdfb..61152cfd 100644 --- a/data/devices/logitech-MX-Anywhere3B.device +++ b/data/devices/logitech-MX-Anywhere3B.device @@ -2,4 +2,5 @@ [Device] Driver=hidpp20 Name=Logitech MX Anywhere 3B -DeviceMatch=bluetooth:046d:b02d \ No newline at end of file +DeviceType=mouse +DeviceMatch=bluetooth:046d:b02d diff --git a/data/devices/logitech-MX-Ergo.device b/data/devices/logitech-MX-Ergo.device index 26fd001d..b6c7d9a1 100644 --- a/data/devices/logitech-MX-Ergo.device +++ b/data/devices/logitech-MX-Ergo.device @@ -3,3 +3,4 @@ Name=Logitech MX Ergo DeviceMatch=bluetooth:046d:b01d;usb:046d:406f Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Master-2S.device b/data/devices/logitech-MX-Master-2S.device index 706e24d2..c56a507a 100644 --- a/data/devices/logitech-MX-Master-2S.device +++ b/data/devices/logitech-MX-Master-2S.device @@ -3,3 +3,4 @@ Name=Logitech MX Master 2S DeviceMatch=bluetooth:046d:b019;usb:046d:4069 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Master-3.device b/data/devices/logitech-MX-Master-3.device index 60319a6b..89ad528b 100644 --- a/data/devices/logitech-MX-Master-3.device +++ b/data/devices/logitech-MX-Master-3.device @@ -3,3 +3,4 @@ Name=Logitech MX Master 3 DeviceMatch=bluetooth:046d:b023;usb:046d:4082 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Master-3S.device b/data/devices/logitech-MX-Master-3S.device index cc634540..cf5a474c 100644 --- a/data/devices/logitech-MX-Master-3S.device +++ b/data/devices/logitech-MX-Master-3S.device @@ -1,4 +1,5 @@ [Device] DeviceMatch=bluetooth:046d:b034 +DeviceType=mouse Driver=hidpp20 Name=Logitech MX Master 3S diff --git a/data/devices/logitech-MX-Master.device b/data/devices/logitech-MX-Master.device index 927fe586..3142db3b 100644 --- a/data/devices/logitech-MX-Master.device +++ b/data/devices/logitech-MX-Master.device @@ -3,3 +3,4 @@ Name=Logitech MX Master DeviceMatch=usb:046d:4041;bluetooth:046d:b012;usb:046d:4060;bluetooth:046d:b017;bluetooth:046d:b01e;usb:046d:4071 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX-Vertical.device b/data/devices/logitech-MX-Vertical.device index 7f9d6bca..1da1103c 100644 --- a/data/devices/logitech-MX-Vertical.device +++ b/data/devices/logitech-MX-Vertical.device @@ -2,3 +2,4 @@ Name=Logitech MX Vertical DeviceMatch=bluetooth:046d:b020;usb:046d:407b;usb:046d:c08a Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-MX518.device b/data/devices/logitech-MX518.device index 9b4d83e4..21b9115d 100644 --- a/data/devices/logitech-MX518.device +++ b/data/devices/logitech-MX518.device @@ -2,3 +2,4 @@ Name=MX518 DeviceMatch=usb:046d:c08e Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-Marathon-M705.device b/data/devices/logitech-Marathon-M705.device index b3aee93a..4d7ff095 100644 --- a/data/devices/logitech-Marathon-M705.device +++ b/data/devices/logitech-Marathon-M705.device @@ -2,3 +2,4 @@ Name=Logitech Marathon M705 DeviceMatch=usb:046d:406d Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-T650.device b/data/devices/logitech-T650.device index a7f45358..8a8c8a7a 100644 --- a/data/devices/logitech-T650.device +++ b/data/devices/logitech-T650.device @@ -3,3 +3,4 @@ Name=Logitech T650 DeviceMatch=usb:046d:4101 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-Wireless-Touchpad.device b/data/devices/logitech-Wireless-Touchpad.device index 87f6d076..51ebbec8 100644 --- a/data/devices/logitech-Wireless-Touchpad.device +++ b/data/devices/logitech-Wireless-Touchpad.device @@ -3,3 +3,4 @@ Name=Logitech Wireless Touchpad DeviceMatch=usb:046d:4011 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g-powerplay.device b/data/devices/logitech-g-powerplay.device index a96a198d..4df59d2a 100644 --- a/data/devices/logitech-g-powerplay.device +++ b/data/devices/logitech-g-powerplay.device @@ -3,6 +3,7 @@ Name=Logitech G Powerplay DeviceMatch=usb:046d:405f LedTypes=logo Driver=hidpp20 +DeviceType=other [Driver/hidpp20] DeviceIndex=7 diff --git a/data/devices/logitech-g-pro-wireless.device b/data/devices/logitech-g-pro-wireless.device index 604aaa6c..d6d2a90a 100644 --- a/data/devices/logitech-g-pro-wireless.device +++ b/data/devices/logitech-g-pro-wireless.device @@ -3,6 +3,7 @@ Name=Logitech G Pro Wireless DeviceMatch=usb:046d:4079;usb:046d:c088 LedTypes=logo;battery;dpi; Driver=hidpp20 +DeviceType=mouse [Driver/hidpp20] DeviceIndex=1 diff --git a/data/devices/logitech-g-pro-x-wireless-superlight.device b/data/devices/logitech-g-pro-x-wireless-superlight.device index 08fbe0d6..883d66d9 100644 --- a/data/devices/logitech-g-pro-x-wireless-superlight.device +++ b/data/devices/logitech-g-pro-x-wireless-superlight.device @@ -1,5 +1,6 @@ [Device] Name=Logitech G Pro X Wireless Superlight DeviceMatch=usb:046d:4093;usb:046d:c094 +DeviceType=mouse LedTypes=logo;battery;dpi; Driver=hidpp20 diff --git a/data/devices/logitech-g-pro.device b/data/devices/logitech-g-pro.device index 21870a52..ab6af71f 100644 --- a/data/devices/logitech-g-pro.device +++ b/data/devices/logitech-g-pro.device @@ -3,3 +3,4 @@ Name=Logitech Gaming Mouse G Pro DeviceMatch=usb:046d:c085;usb:046d:c08c Driver=hidpp20 LedTypes=logo;side +DeviceType=mouse diff --git a/data/devices/logitech-g102-g203.device b/data/devices/logitech-g102-g203.device index 2f4bd1f4..a6781a33 100644 --- a/data/devices/logitech-g102-g203.device +++ b/data/devices/logitech-g102-g203.device @@ -4,3 +4,4 @@ Name=Logitech Gaming Mouse G102/G103/G203 DeviceMatch=usb:046d:c084;usb:046d:c092;usb:046d:c09d Driver=hidpp20 LedTypes=logo;side; +DeviceType=mouse diff --git a/data/devices/logitech-g300.device b/data/devices/logitech-g300.device index fd2d298a..3af903d8 100644 --- a/data/devices/logitech-g300.device +++ b/data/devices/logitech-g300.device @@ -3,3 +3,4 @@ Name=Logitech G300 DeviceMatch=usb:046d:c246 Driver=logitech_g300 +DeviceType=mouse diff --git a/data/devices/logitech-g302.device b/data/devices/logitech-g302.device index 1aed64c5..98b085d1 100644 --- a/data/devices/logitech-g302.device +++ b/data/devices/logitech-g302.device @@ -4,3 +4,4 @@ Name=Logitech Gaming Mouse G302 DeviceMatch=usb:046d:c07f Driver=hidpp20 LedTypes=logo;side; +DeviceType=mouse diff --git a/data/devices/logitech-g303-shroud.device b/data/devices/logitech-g303-shroud.device index af9a57d9..7351ed90 100644 --- a/data/devices/logitech-g303-shroud.device +++ b/data/devices/logitech-g303-shroud.device @@ -1,4 +1,5 @@ [Device] Name=Logitech G303 Shroud Edition DeviceMatch=usb:046d:c097 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-g303.device b/data/devices/logitech-g303.device index 7549b835..19397bdf 100644 --- a/data/devices/logitech-g303.device +++ b/data/devices/logitech-g303.device @@ -4,3 +4,4 @@ Name=Logitech Gaming Mouse G303 DeviceMatch=usb:046d:c080 Driver=hidpp20 LedTypes=logo;side; +DeviceType=mouse diff --git a/data/devices/logitech-g305.device b/data/devices/logitech-g305.device index d3b42469..54641f3d 100644 --- a/data/devices/logitech-g305.device +++ b/data/devices/logitech-g305.device @@ -2,6 +2,7 @@ Name=Logitech Gaming Mouse G305 DeviceMatch=usb:046d:4074 Driver=hidpp20 +DeviceType=mouse [Driver/hidpp20] Leds=0 diff --git a/data/devices/logitech-g402.device b/data/devices/logitech-g402.device index 4099d653..ca1a719d 100644 --- a/data/devices/logitech-g402.device +++ b/data/devices/logitech-g402.device @@ -4,3 +4,4 @@ Name=Logitech G402 Gaming Mouse DeviceMatch=usb:046d:c07e LedTypes=logo Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g403-hero.device b/data/devices/logitech-g403-hero.device index 4f02fc5e..26b33605 100644 --- a/data/devices/logitech-g403-hero.device +++ b/data/devices/logitech-g403-hero.device @@ -2,3 +2,4 @@ Name=Logitech G403 Hero DeviceMatch=usb:046d:c08f Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g403-wireless.device b/data/devices/logitech-g403-wireless.device index b6e9b809..aef95f70 100644 --- a/data/devices/logitech-g403-wireless.device +++ b/data/devices/logitech-g403-wireless.device @@ -2,3 +2,4 @@ Name=Logitech G403 Wireless DeviceMatch=usb:046d:405d;usb:046d:c082 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g403.device b/data/devices/logitech-g403.device index 23d437c2..b38f5505 100644 --- a/data/devices/logitech-g403.device +++ b/data/devices/logitech-g403.device @@ -2,3 +2,4 @@ Name=Logitech G403 DeviceMatch=usb:046d:c083 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g5-2007.device b/data/devices/logitech-g5-2007.device index d905a8a4..01475453 100644 --- a/data/devices/logitech-g5-2007.device +++ b/data/devices/logitech-g5-2007.device @@ -3,6 +3,7 @@ Name=Logitech G5 DeviceMatch=usb:046d:c049 Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiList=400;800;1600;2000 diff --git a/data/devices/logitech-g5.device b/data/devices/logitech-g5.device index 6c3d8e90..a9865e5d 100644 --- a/data/devices/logitech-g5.device +++ b/data/devices/logitech-g5.device @@ -2,6 +2,7 @@ Name=G5 DeviceMatch=usb:046d:c041 Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiList=400;800;1600;2000 diff --git a/data/devices/logitech-g500.device b/data/devices/logitech-g500.device index a0d39542..3543c4a6 100644 --- a/data/devices/logitech-g500.device +++ b/data/devices/logitech-g500.device @@ -2,6 +2,7 @@ Name=Logitech G500 DeviceMatch=usb:046d:c068 Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g500s.device b/data/devices/logitech-g500s.device index 9a45df9c..a6e3ca44 100644 --- a/data/devices/logitech-g500s.device +++ b/data/devices/logitech-g500s.device @@ -2,6 +2,7 @@ Name=Logitech G500s DeviceMatch=usb:046d:c24e Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:8200@50 diff --git a/data/devices/logitech-g502-hero-wireless.device b/data/devices/logitech-g502-hero-wireless.device index ec190936..96070bab 100644 --- a/data/devices/logitech-g502-hero-wireless.device +++ b/data/devices/logitech-g502-hero-wireless.device @@ -2,3 +2,4 @@ Name=Logitech G502 Hero Wireless DeviceMatch=usb:046d:407f;usb:046d:c08d Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g502-hero.device b/data/devices/logitech-g502-hero.device index b98008c7..874e62c0 100644 --- a/data/devices/logitech-g502-hero.device +++ b/data/devices/logitech-g502-hero.device @@ -2,3 +2,4 @@ Name=Logitech G502 Hero DeviceMatch=usb:046d:c08b Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g502-proteus-core.device b/data/devices/logitech-g502-proteus-core.device index 86e8e190..c29153f8 100644 --- a/data/devices/logitech-g502-proteus-core.device +++ b/data/devices/logitech-g502-proteus-core.device @@ -2,3 +2,4 @@ Name=Logitech G502 Proteus Core DeviceMatch=usb:046d:c07d Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g502-proteus-spectrum.device b/data/devices/logitech-g502-proteus-spectrum.device index c0fd28c8..816c6c40 100644 --- a/data/devices/logitech-g502-proteus-spectrum.device +++ b/data/devices/logitech-g502-proteus-spectrum.device @@ -2,3 +2,4 @@ Name=Logitech G502 Proteus Spectrum DeviceMatch=usb:046d:c332 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g502-x-wireless.device b/data/devices/logitech-g502-x-wireless.device index 32f583c4..3c2d4fb3 100644 --- a/data/devices/logitech-g502-x-wireless.device +++ b/data/devices/logitech-g502-x-wireless.device @@ -1,4 +1,5 @@ [Device] Name=Logitech G502 X Wireless DeviceMatch=usb:046d:c098 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-g502-x.device b/data/devices/logitech-g502-x.device index 30f626e1..088c42ef 100644 --- a/data/devices/logitech-g502-x.device +++ b/data/devices/logitech-g502-x.device @@ -1,4 +1,5 @@ [Device] Name=Logitech G502 X DeviceMatch=usb:046d:c099 +DeviceType=mouse Driver=hidpp20 diff --git a/data/devices/logitech-g513.device b/data/devices/logitech-g513.device index e9f3feb9..2f115468 100644 --- a/data/devices/logitech-g513.device +++ b/data/devices/logitech-g513.device @@ -3,3 +3,4 @@ Name=Logitech G513 DeviceMatch=usb:046d:c33c LedTypes=switches Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g600.device b/data/devices/logitech-g600.device index b261baeb..e29844c3 100644 --- a/data/devices/logitech-g600.device +++ b/data/devices/logitech-g600.device @@ -3,3 +3,4 @@ Name=Logitech G600 DeviceMatch=usb:046d:c24a Driver=logitech_g600 +DeviceType=mouse diff --git a/data/devices/logitech-g602.device b/data/devices/logitech-g602.device index 2748ef13..41b8adfb 100644 --- a/data/devices/logitech-g602.device +++ b/data/devices/logitech-g602.device @@ -3,6 +3,7 @@ Name=Logitech G602 DeviceMatch=usb:046d:402c Driver=hidpp20 +DeviceType=mouse [Driver/hidpp20] DeviceIndex=1 diff --git a/data/devices/logitech-g603.device b/data/devices/logitech-g603.device index 5fa54216..8cc21f79 100644 --- a/data/devices/logitech-g603.device +++ b/data/devices/logitech-g603.device @@ -3,3 +3,4 @@ Name=Logitech G603 DeviceMatch=usb:046d:406c;bluetooth:046d:b01c Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g604.device b/data/devices/logitech-g604.device index 3ea943c3..9c8dbbfb 100644 --- a/data/devices/logitech-g604.device +++ b/data/devices/logitech-g604.device @@ -2,3 +2,4 @@ Name=Logitech G604 DeviceMatch=usb:046d:4085;bluetooth:046d:b024 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g635.device b/data/devices/logitech-g635.device index 5a692634..b11747c3 100644 --- a/data/devices/logitech-g635.device +++ b/data/devices/logitech-g635.device @@ -1,6 +1,7 @@ [Device] Name=Logitech G635 DeviceMatch=usb:046d:0a89 +DeviceType=mouse LedTypes=logo;side Driver=hidpp20 diff --git a/data/devices/logitech-g7.device b/data/devices/logitech-g7.device index c3e5d7d2..efcd15c8 100644 --- a/data/devices/logitech-g7.device +++ b/data/devices/logitech-g7.device @@ -4,6 +4,7 @@ Name=Logitech G7 DeviceMatch=usb:046d:c51a Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] Profiles=1 diff --git a/data/devices/logitech-g700-wireless.device b/data/devices/logitech-g700-wireless.device index 1b41b8be..7a1cb678 100644 --- a/data/devices/logitech-g700-wireless.device +++ b/data/devices/logitech-g700-wireless.device @@ -4,6 +4,7 @@ Name=Logitech G700 DeviceMatch=usb:046d:c531 Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g700.device b/data/devices/logitech-g700.device index 6a8787e3..b598afad 100644 --- a/data/devices/logitech-g700.device +++ b/data/devices/logitech-g700.device @@ -4,6 +4,7 @@ Name=Logitech G700 DeviceMatch=usb:046d:c06b Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g700s.device b/data/devices/logitech-g700s.device index ad3c2e62..61cd41b4 100644 --- a/data/devices/logitech-g700s.device +++ b/data/devices/logitech-g700s.device @@ -4,6 +4,7 @@ Name=Logitech G700s DeviceMatch=usb:046d:c07c Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:8200@50 diff --git a/data/devices/logitech-g703-hero.device b/data/devices/logitech-g703-hero.device index 384ac2a6..1dbe412c 100644 --- a/data/devices/logitech-g703-hero.device +++ b/data/devices/logitech-g703-hero.device @@ -2,4 +2,4 @@ Name=Logitech G703 Hero DeviceMatch=usb:046d:4086;usb:046d:c090 Driver=hidpp20 - +DeviceType=mouse diff --git a/data/devices/logitech-g703.device b/data/devices/logitech-g703.device index 2c41f14d..5504efaf 100644 --- a/data/devices/logitech-g703.device +++ b/data/devices/logitech-g703.device @@ -2,4 +2,4 @@ Name=Logitech G703 DeviceMatch=usb:046d:c087;usb:046d:4070 Driver=hidpp20 - +DeviceType=mouse diff --git a/data/devices/logitech-g733.device b/data/devices/logitech-g733.device index e608706b..30323034 100644 --- a/data/devices/logitech-g733.device +++ b/data/devices/logitech-g733.device @@ -1,6 +1,7 @@ [Device] Name=Logitech G733 Gaming Headset DeviceMatch=usb:046d:0ab5 +DeviceType=mouse Driver=hidpp20 [Driver/hidpp20] diff --git a/data/devices/logitech-g815.device b/data/devices/logitech-g815.device index 120049a8..95ffda66 100644 --- a/data/devices/logitech-g815.device +++ b/data/devices/logitech-g815.device @@ -3,3 +3,4 @@ Name=Logitech G815 DeviceMatch=usb:046d:c33f LedTypes=logo;switches Driver=hidpp20 +DeviceType=keyboard diff --git a/data/devices/logitech-g9.device b/data/devices/logitech-g9.device index 80ecba53..779e1a3a 100644 --- a/data/devices/logitech-g9.device +++ b/data/devices/logitech-g9.device @@ -5,6 +5,7 @@ Name=Logitech G9 DeviceMatch=usb:046d:c048 LedTypes=dpi Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiList=200;400;600;800;1000;1200;1400;1600;1800;2000;2200;2400;2600;2800;3000;3200 diff --git a/data/devices/logitech-g900.device b/data/devices/logitech-g900.device index 846066dd..84c7065a 100644 --- a/data/devices/logitech-g900.device +++ b/data/devices/logitech-g900.device @@ -3,3 +3,4 @@ Name=Logitech G900 DeviceMatch=usb:046d:c081;usb:046d:4053 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g903-hero.device b/data/devices/logitech-g903-hero.device index a99a7ffd..462139e7 100644 --- a/data/devices/logitech-g903-hero.device +++ b/data/devices/logitech-g903-hero.device @@ -2,3 +2,4 @@ Name=Logitech G903 Hero DeviceMatch=usb:046d:c091;usb:046d:4087 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g903.device b/data/devices/logitech-g903.device index c7f3deb3..431cb351 100644 --- a/data/devices/logitech-g903.device +++ b/data/devices/logitech-g903.device @@ -2,3 +2,4 @@ Name=Logitech G903 DeviceMatch=usb:046d:c086;usb:046d:4067 Driver=hidpp20 +DeviceType=mouse diff --git a/data/devices/logitech-g910.device b/data/devices/logitech-g910.device index ff4928de..42502e7e 100644 --- a/data/devices/logitech-g910.device +++ b/data/devices/logitech-g910.device @@ -3,6 +3,7 @@ Name=Logitech G910 DeviceMatch=usb:046d:c335 LedTypes=logo;switches Driver=hidpp20 +DeviceType=keyboard [Driver/hidpp20] DeviceIndex=ff diff --git a/data/devices/logitech-g915-tkl.device b/data/devices/logitech-g915-tkl.device index 3361e248..10560ba0 100644 --- a/data/devices/logitech-g915-tkl.device +++ b/data/devices/logitech-g915-tkl.device @@ -1,6 +1,7 @@ [Device] Name=Logitech G915 TKL DeviceMatch=usb:046d:c343;bluetooth:046d:b35f +DeviceType=mouse LedTypes=logo;switches Driver=hidpp20 diff --git a/data/devices/logitech-g915.device b/data/devices/logitech-g915.device index 89739177..d2b27159 100644 --- a/data/devices/logitech-g915.device +++ b/data/devices/logitech-g915.device @@ -3,6 +3,7 @@ Name=Logitech G915 DeviceMatch=usb:046d:c33e LedTypes=logo;switches Driver=hidpp20 +DeviceType=keyboard [Driver/hidpp20] DeviceIndex=1 diff --git a/data/devices/logitech-g935.device b/data/devices/logitech-g935.device index 07c90320..6d12f80a 100644 --- a/data/devices/logitech-g935.device +++ b/data/devices/logitech-g935.device @@ -3,3 +3,4 @@ Name=Logitech G935 DeviceMatch=usb:046d:0a87 LedTypes=logo;side Driver=hidpp20 +DeviceType=other diff --git a/data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device b/data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device index 87c7f709..a2cc6d11 100644 --- a/data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device +++ b/data/devices/logitech-g9x-Call-of-Duty-MW3-Edition.device @@ -4,6 +4,7 @@ Name=Logitech G9x [Call of Duty MW3 Edition] DeviceMatch=usb:046d:c249 Driver=hidpp10 +DeviceType=mouse [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g9x-Original.device b/data/devices/logitech-g9x-Original.device index ab54ce64..65397dad 100644 --- a/data/devices/logitech-g9x-Original.device +++ b/data/devices/logitech-g9x-Original.device @@ -3,6 +3,7 @@ [Device] Name=G9x [Original] DeviceMatch=usb:046d:c066 +DeviceType=mouse Driver=hidpp10 LedTypes=dpi diff --git a/data/devices/nubwo-x7-spectrum.device b/data/devices/nubwo-x7-spectrum.device index 5f8c2a0c..8d2f1425 100644 --- a/data/devices/nubwo-x7-spectrum.device +++ b/data/devices/nubwo-x7-spectrum.device @@ -1,5 +1,6 @@ [Device] Name=Nubwo x7 spectrum DeviceMatch=usb:258a:0012 +DeviceType=mouse Driver=sinowealth_nubwo diff --git a/data/devices/openinput.device b/data/devices/openinput.device index 2feede2e..292aad10 100644 --- a/data/devices/openinput.device +++ b/data/devices/openinput.device @@ -1,4 +1,5 @@ [Device] Name=openinput DeviceMatch=usb:1d50:616a +DeviceType=mouse Driver=openinput diff --git a/data/devices/roccat-kone-emp.device b/data/devices/roccat-kone-emp.device index 6e7222f4..19535133 100644 --- a/data/devices/roccat-kone-emp.device +++ b/data/devices/roccat-kone-emp.device @@ -1,4 +1,5 @@ [Device] Name=Roccat Kone EMP DeviceMatch=usb:1e7d:2e24 +DeviceType=mouse Driver=roccat-kone-emp diff --git a/data/devices/roccat-kone-pure.device b/data/devices/roccat-kone-pure.device index e9a7bc61..f3fe7433 100644 --- a/data/devices/roccat-kone-pure.device +++ b/data/devices/roccat-kone-pure.device @@ -2,3 +2,4 @@ Name=Roccat Kone Pure DeviceMatch=usb:1e7d:2dc2;usb:1e7d:2dbe;usb:1e7d:2dcb Driver=roccat-kone-pure +DeviceType=mouse diff --git a/data/devices/roccat-kone-xtd.device b/data/devices/roccat-kone-xtd.device index 872e60e7..b5e01290 100644 --- a/data/devices/roccat-kone-xtd.device +++ b/data/devices/roccat-kone-xtd.device @@ -2,3 +2,4 @@ Name=Roccat Kone XTD DeviceMatch=usb:1e7d:2e22 Driver=roccat +DeviceType=mouse diff --git a/data/devices/sinowealth-0027.device b/data/devices/sinowealth-0027.device index ce61b22b..6be64598 100644 --- a/data/devices/sinowealth-0027.device +++ b/data/devices/sinowealth-0027.device @@ -1,5 +1,6 @@ [Device] DeviceMatch=usb:258a:0027 +DeviceType=mouse Driver=sinowealth Name=SinoWealth Generic Mouse (0027) diff --git a/data/devices/sinowealth-0029.device b/data/devices/sinowealth-0029.device index e8d83b8f..99b7ed0c 100644 --- a/data/devices/sinowealth-0029.device +++ b/data/devices/sinowealth-0029.device @@ -1,5 +1,6 @@ [Device] DeviceMatch=usb:258a:0029 +DeviceType=mouse Driver=sinowealth Name=SinoWealth Generic Mouse (0029) diff --git a/data/devices/sinowealth-1007.device b/data/devices/sinowealth-1007.device index 648a2160..63bcdc49 100644 --- a/data/devices/sinowealth-1007.device +++ b/data/devices/sinowealth-1007.device @@ -1,5 +1,6 @@ [Device] DeviceMatch=usb:258a:1007 +DeviceType=mouse Driver=sinowealth Name=SinoWealth Generic Mouse (1007) diff --git a/data/devices/steelseries-kinzu-v2-pro.device b/data/devices/steelseries-kinzu-v2-pro.device index 6dd394b8..e80e7050 100644 --- a/data/devices/steelseries-kinzu-v2-pro.device +++ b/data/devices/steelseries-kinzu-v2-pro.device @@ -1,6 +1,7 @@ [Device] Name=SteelSeries Kinzu V2 Pro Edition DeviceMatch=usb:1038:1366 +DeviceType=mouse Driver=steelseries [Driver/steelseries] diff --git a/data/devices/steelseries-kinzu-v2.device b/data/devices/steelseries-kinzu-v2.device index c11db589..9ca9ec86 100644 --- a/data/devices/steelseries-kinzu-v2.device +++ b/data/devices/steelseries-kinzu-v2.device @@ -2,6 +2,7 @@ Name=SteelSeries Kinzu V2 DeviceMatch=usb:1038:1378 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=1 diff --git a/data/devices/steelseries-kinzu-v3.device b/data/devices/steelseries-kinzu-v3.device index d44535d4..ffe7e698 100644 --- a/data/devices/steelseries-kinzu-v3.device +++ b/data/devices/steelseries-kinzu-v3.device @@ -2,6 +2,7 @@ Name=SteelSeries Kinzu V3 DeviceMatch=usb:1038:1388 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=1 diff --git a/data/devices/steelseries-rival-100.device b/data/devices/steelseries-rival-100.device index 17173516..1d7ce4b6 100644 --- a/data/devices/steelseries-rival-100.device +++ b/data/devices/steelseries-rival-100.device @@ -1,6 +1,7 @@ [Device] # 100; 100 (Dell China); 100 Dota 2 Edition (retail); 100 Dota 2 Edition (Lenovo); 105. DeviceMatch=usb:1038:1702;usb:1038:170a;usb:1038:170b;usb:1038:170c;usb:1038:1814 +DeviceType=mouse Driver=steelseries Name=SteelSeries Rival 100/105 diff --git a/data/devices/steelseries-rival-310.device b/data/devices/steelseries-rival-310.device index 61af3f78..18841d54 100644 --- a/data/devices/steelseries-rival-310.device +++ b/data/devices/steelseries-rival-310.device @@ -2,6 +2,7 @@ Name=SteelSeries Rival 310 DeviceMatch=usb:1038:1720 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=2 diff --git a/data/devices/steelseries-rival-600.device b/data/devices/steelseries-rival-600.device index c2b1badd..f8a12c85 100644 --- a/data/devices/steelseries-rival-600.device +++ b/data/devices/steelseries-rival-600.device @@ -2,6 +2,7 @@ Name=SteelSeries Rival 600 DeviceMatch=usb:1038:1724 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=3 diff --git a/data/devices/steelseries-rival.device b/data/devices/steelseries-rival.device index 8ac44fb0..011cbb1e 100644 --- a/data/devices/steelseries-rival.device +++ b/data/devices/steelseries-rival.device @@ -2,6 +2,7 @@ Name=SteelSeries Rival DeviceMatch=usb:1038:1384;usb:1038:1392;usb:1038:1710;usb:1038:1712;usb:1038:171c;usb:1038:1394;usb:1038:171a;usb:1038:1716;usb:1038:1714;usb:1038:1718 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=1 diff --git a/data/devices/steelseries-sensei-310.device b/data/devices/steelseries-sensei-310.device index a0a745cb..f8c27fdd 100644 --- a/data/devices/steelseries-sensei-310.device +++ b/data/devices/steelseries-sensei-310.device @@ -2,6 +2,7 @@ Name=SteelSeries Sensei 310 DeviceMatch=usb:1038:1722 Driver=steelseries +DeviceType=mouse [Driver/steelseries] DeviceVersion=2 diff --git a/data/devices/steelseries-sensei-raw.device b/data/devices/steelseries-sensei-raw.device index b121b841..3319f546 100644 --- a/data/devices/steelseries-sensei-raw.device +++ b/data/devices/steelseries-sensei-raw.device @@ -3,6 +3,7 @@ Name=SteelSeries Sensei Raw DeviceMatch=usb:1038:1369 Driver=steelseries LedTypes=logo;dpi +DeviceType=mouse [Driver/steelseries] DeviceVersion=1 diff --git a/ratbagd/ratbagd-device.c b/ratbagd/ratbagd-device.c index 7a2f4d67..046a8bd3 100644 --- a/ratbagd/ratbagd-device.c +++ b/ratbagd/ratbagd-device.c @@ -137,6 +137,28 @@ static int ratbagd_device_get_device_name(sd_bus *bus, return 0; } +static int ratbagd_device_get_device_type(sd_bus *bus, + const char *path, + const char *interface, + const char *property, + sd_bus_message *reply, + void *userdata, + sd_bus_error *error) +{ + struct ratbagd_device *device = userdata; + enum ratbag_device_type devicetype; + + devicetype = ratbag_device_get_device_type(device->lib_device); + if (!devicetype) { + log_error("%s: device type unspecified\n", + ratbagd_device_get_sysname(device)); + } + + CHECK_CALL(sd_bus_message_append(reply, "u", devicetype)); + + return 0; +} + static int ratbagd_device_get_profiles(sd_bus *bus, const char *path, const char *interface, @@ -239,6 +261,7 @@ ratbagd_device_get_firmware_version(sd_bus *bus, const sd_bus_vtable ratbagd_device_vtable[] = { SD_BUS_VTABLE_START(0), SD_BUS_PROPERTY("Model", "s", ratbag_device_get_model, 0, SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("DeviceType", "u", ratbagd_device_get_device_type, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Name", "s", ratbagd_device_get_device_name, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("FirmwareVersion", "s", ratbagd_device_get_firmware_version, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Profiles", "ao", ratbagd_device_get_profiles, 0, SD_BUS_VTABLE_PROPERTY_CONST), diff --git a/src/libratbag-data.c b/src/libratbag-data.c index 9571a524..c33abecb 100644 --- a/src/libratbag-data.c +++ b/src/libratbag-data.c @@ -113,6 +113,7 @@ struct ratbag_device_data { char *driver; enum driver drivertype; + enum ratbag_device_type devicetype; union { struct data_hidpp20 hidpp20; @@ -449,6 +450,12 @@ ratbag_device_data_get_name(const struct ratbag_device_data *data) return data->name; } +enum ratbag_device_type +ratbag_device_data_get_device_type(const struct ratbag_device_data *data) +{ + return data->devicetype; +} + enum ratbag_led_type ratbag_device_data_get_led_type(const struct ratbag_device_data *data, unsigned int index) @@ -596,6 +603,7 @@ file_data_matches(struct ratbag *ratbag, _cleanup_(g_strfreevp) char **match_strv = NULL; _cleanup_(g_strfreevp) char **ledtypes_strv = NULL; _cleanup_(ratbag_device_data_unrefp) struct ratbag_device_data *data = NULL; + _cleanup_free_ char *devicetype = NULL; int rc; keyfile = g_key_file_new(); @@ -645,6 +653,24 @@ file_data_matches(struct ratbag *ratbag, } } + devicetype = g_key_file_get_string(keyfile, GROUP_DEVICE, "DeviceType", NULL); + if (devicetype == NULL) { + log_error(ratbag, "No DeviceType found in '%s'\n", basename(path)); + data->devicetype = TYPE_UNSPECIFIED; + return false; + } + if (streq(devicetype, "keyboard")) { + data->devicetype = TYPE_KEYBOARD; + } else if (streq(devicetype, "mouse")) { + data->devicetype = TYPE_MOUSE; + } else if (streq(devicetype, "other")) { + data->devicetype = TYPE_OTHER; + } else { + log_error(ratbag, "Invalid DeviceType '%s' in '%s'\n", devicetype, basename(path)); + data->devicetype = TYPE_UNSPECIFIED; + return false; + } + ledtypes_strv = g_key_file_get_string_list(keyfile, GROUP_DEVICE, "LedTypes", NULL, NULL); if (parse_ledtypes(ledtypes_strv, data->led_types, ARRAY_LENGTH(data->led_types)) < 0) { log_error(ratbag, "Invalid LedTypes string in '%s'\n", basename(path)); diff --git a/src/libratbag-data.h b/src/libratbag-data.h index bd9af51d..e4742238 100644 --- a/src/libratbag-data.h +++ b/src/libratbag-data.h @@ -42,6 +42,8 @@ const char * ratbag_device_data_get_driver(const struct ratbag_device_data *data); const char * ratbag_device_data_get_name(const struct ratbag_device_data *data); +enum ratbag_device_type +ratbag_device_data_get_device_type(const struct ratbag_device_data *data); enum ratbag_led_type ratbag_device_data_get_led_type(const struct ratbag_device_data *data, unsigned int index); diff --git a/src/libratbag-enums.h b/src/libratbag-enums.h index e6674ba6..2d492d38 100644 --- a/src/libratbag-enums.h +++ b/src/libratbag-enums.h @@ -341,3 +341,29 @@ enum ratbag_macro_event_type { RATBAG_MACRO_EVENT_KEY_RELEASED, RATBAG_MACRO_EVENT_WAIT, }; + +/** + * @ingroup enums + * + * Device Types + * Describes the types specified in the .device files + */ +enum ratbag_device_type { + /** + * Used when no DeviceType property could be found + */ + TYPE_UNSPECIFIED = 0, + /** + * Used for any other device type than a mouse or a keyboard + * for example headsets, mousepads etc. + */ + TYPE_OTHER, + /** + * Used for mice + */ + TYPE_MOUSE, + /** + * Used for keyboards + */ + TYPE_KEYBOARD, +}; diff --git a/src/libratbag-private.h b/src/libratbag-private.h index 3ec301ec..57684805 100644 --- a/src/libratbag-private.h +++ b/src/libratbag-private.h @@ -132,6 +132,7 @@ struct ratbag { struct ratbag_device { char *name; void *userdata; + enum ratbag_device_type devicetype; struct udev_device *udev_device; struct ratbag_hidraw hidraw[MAX_HIDRAW]; diff --git a/src/libratbag-test.c b/src/libratbag-test.c index 863734f2..26534891 100644 --- a/src/libratbag-test.c +++ b/src/libratbag-test.c @@ -71,6 +71,8 @@ ratbag_device_new_test_device(struct ratbag *ratbag, device = ratbag_device_new(ratbag, NULL, "Test device", &id); + device->devicetype = TYPE_MOUSE; + if (!ratbag_assign_driver(device, &device->ids, test_device)) { ratbag_device_destroy(device); return NULL; diff --git a/src/libratbag.c b/src/libratbag.c index ea94879f..dbc7d006 100644 --- a/src/libratbag.c +++ b/src/libratbag.c @@ -196,6 +196,10 @@ ratbag_device_new(struct ratbag *ratbag, struct udev_device *udev_device, device->udev_device = udev_device_ref(udev_device); device->ids = *id; device->data = ratbag_device_data_new_for_id(ratbag, id); + + if (device->data != NULL) + device->devicetype = ratbag_device_data_get_device_type(device->data); + list_init(&device->profiles); list_insert(&ratbag->devices, &device->link); @@ -521,6 +525,12 @@ ratbag_device_get_name(const struct ratbag_device* device) return device->name; } +LIBRATBAG_EXPORT enum ratbag_device_type +ratbag_device_get_device_type(const struct ratbag_device *device) +{ + return device->devicetype; +} + LIBRATBAG_EXPORT const char * ratbag_device_get_bustype(const struct ratbag_device *device) { diff --git a/src/libratbag.h b/src/libratbag.h index 2c44c39a..7ae5d2eb 100644 --- a/src/libratbag.h +++ b/src/libratbag.h @@ -450,6 +450,15 @@ ratbag_device_get_firmware_version(const struct ratbag_device *device); const char * ratbag_device_get_name(const struct ratbag_device* device); +/** + * @ingroup device + * + * @param device A previously initialized ratbag device + * @return the type of the device: unspecified, mouse, keyboard or other + */ +enum ratbag_device_type +ratbag_device_get_device_type(const struct ratbag_device* device); + /** * @ingroup device * diff --git a/test/data-parse-test.py b/test/data-parse-test.py index 24217596..3d9fe13d 100755 --- a/test/data-parse-test.py +++ b/test/data-parse-test.py @@ -64,6 +64,11 @@ def check_match_str(string: str): assert(pid == '{:04x}'.format(int(pid, 16))) +def check_devicetype_str(string): + permitted_types = ['mouse', 'keyboard', 'other'] + assertIn(string, permitted_types) + + def check_ledtypes_str(string: str): permitted_types = [ 'battery', @@ -83,7 +88,7 @@ def check_ledtypes_str(string: str): def check_section_device(section: configparser.SectionProxy): - required_keys = ['Name', 'Driver', 'DeviceMatch'] + required_keys = ['Name', 'Driver', 'DeviceMatch', 'DeviceType'] permitted_keys = required_keys + ['LedTypes'] for key in section.keys(): @@ -92,6 +97,8 @@ def check_section_device(section: configparser.SectionProxy): for r in required_keys: assertIn(r, section) + check_devicetype_str(section['DeviceType']) + try: check_ledtypes_str(section['LedTypes']) except KeyError: diff --git a/tools/ratbagc.py.in b/tools/ratbagc.py.in index eda24f57..1e4bd11f 100644 --- a/tools/ratbagc.py.in +++ b/tools/ratbagc.py.in @@ -83,6 +83,22 @@ class RatbagErrorCode(metaclass=MetaRatbag): IMPLEMENTATION = libratbag.RATBAG_ERROR_IMPLEMENTATION +class RatbagDeviceType(IntEnum): + """DeviceType property specified in the .device files""" + + """There was no DeviceType specified for this device""" + UNSPECIFIED = 0 + + """Device is specified as anything other than a mouse or a keyboard""" + OTHER = 1 + + """Device is specified as a mouse""" + MOUSE = 2 + + """Device is specified as a keyboard""" + KEYBOARD = 3 + + class RatbagdUnavailable(Exception): """Signals DBus is unavailable or the ratbagd daemon is not available.""" pass @@ -262,6 +278,11 @@ class RatbagdDevice(metaclass=MetaRatbag): """The device name, usually provided by the kernel.""" return libratbag.ratbag_device_get_name(self._device) + @property + def device_type(self): + """The device type, see RatbagDeviceType""" + return RatbagDeviceType(libratbag.ratbag_device_get_device_type(self._device)) + @property def firmware_version(self): """The firmware version of the device.""" diff --git a/tools/ratbagctl.in.in b/tools/ratbagctl.in.in index 1d5bfdc4..6b09d52e 100755 --- a/tools/ratbagctl.in.in +++ b/tools/ratbagctl.in.in @@ -26,7 +26,7 @@ import sys import argparse import re -from ratbagd import Ratbagd, RatbagdDevice, RatbagdProfile, RatbagdMacro, RatbagdResolution, RatbagdButton, RatbagdLed, RatbagdUnavailable, RatbagError, RatbagErrorCode, RatbagErrorCapability # NOQA +from ratbagd import Ratbagd, RatbagdDevice, RatbagdProfile, RatbagdMacro, RatbagdResolution, RatbagdButton, RatbagdLed, RatbagdUnavailable, RatbagError, RatbagErrorCode, RatbagErrorCapability, RatbagDeviceType # NOQA def humanize(string): @@ -229,6 +229,7 @@ def print_device(d, level): print(" " * level + "{} - {}".format(d.id, d.name)) print(" " * level + " Model: {}".format(d.model)) + print(" " * level + " Device Type: {}".format(d.device_type.name)) if d.firmware_version: print(" " * level + " Firmware version: {}".format(d.firmware_version)) print(" " * level + " Number of Buttons: {}".format(len(p.buttons))) diff --git a/tools/ratbagd.py b/tools/ratbagd.py index 308a8611..ce7e8224 100644 --- a/tools/ratbagd.py +++ b/tools/ratbagd.py @@ -60,6 +60,22 @@ class RatbagErrorCode(IntEnum): IMPLEMENTATION = -1004 +class RatbagDeviceType(IntEnum): + """DeviceType property specified in the .device files""" + + """There was no DeviceType specified for this device""" + UNSPECIFIED = 0 + + """Device is specified as anything other than a mouse or a keyboard""" + OTHER = 1 + + """Device is specified as a mouse""" + MOUSE = 2 + + """Device is specified as a keyboard""" + KEYBOARD = 3 + + class RatbagdIncompatible(Exception): """ratbagd is incompatible with this client""" def __init__(self, ratbagd_version, required_version): @@ -347,6 +363,11 @@ class RatbagdDevice(_RatbagdDBus): """The device name, usually provided by the kernel.""" return self._get_dbus_property("Name") + @GObject.Property + def device_type(self): + """The device type, see RatbagDeviceType""" + return RatbagDeviceType(self._get_dbus_property("DeviceType")) + @GObject.Property def firmware_version(self): """The firmware version of the device."""