Timo Aaltonen pushed to branch upstream-unstable at X Strike Force / lib / libinput
Commits:
-
834a6d1d
by haarp at 2020-08-11T19:47:23+02:00
-
88b62031
by Peter Hutterer at 2020-08-13T11:02:25+10:00
-
585dab0a
by Peter Hutterer at 2020-08-13T11:02:33+10:00
-
84591b80
by Peter Hutterer at 2020-08-13T11:02:33+10:00
-
6d1f2f88
by Peter Hutterer at 2020-08-13T11:02:33+10:00
-
9dbfc700
by Peter Hutterer at 2020-08-13T12:05:58+10:00
9 changed files:
- include/linux/freebsd/input-event-codes.h
- include/linux/linux/input-event-codes.h
- meson.build
- quirks/30-vendor-logitech.quirks
- src/evdev.c
- + test/litest-device-logitech-media-keyboard-elite.c
- + test/litest-device-sony-vaio-keys.c
- test/litest.h
- test/test-device.c
Changes:
| 1 |
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
| 1 |
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
|
| 2 | 2 |
/*
|
| 3 | 3 |
* Input event codes
|
| 4 | 4 |
*
|
| ... | ... | @@ -439,10 +439,12 @@ |
| 439 | 439 |
#define KEY_TITLE 0x171
|
| 440 | 440 |
#define KEY_SUBTITLE 0x172
|
| 441 | 441 |
#define KEY_ANGLE 0x173
|
| 442 |
-#define KEY_ZOOM 0x174
|
|
| 442 |
+#define KEY_FULL_SCREEN 0x174 /* AC View Toggle */
|
|
| 443 |
+#define KEY_ZOOM KEY_FULL_SCREEN
|
|
| 443 | 444 |
#define KEY_MODE 0x175
|
| 444 | 445 |
#define KEY_KEYBOARD 0x176
|
| 445 |
-#define KEY_SCREEN 0x177
|
|
| 446 |
+#define KEY_ASPECT_RATIO 0x177 /* HUTRR37: Aspect */
|
|
| 447 |
+#define KEY_SCREEN KEY_ASPECT_RATIO
|
|
| 446 | 448 |
#define KEY_PC 0x178 /* Media Select Computer */
|
| 447 | 449 |
#define KEY_TV 0x179 /* Media Select TV */
|
| 448 | 450 |
#define KEY_TV2 0x17a /* Media Select Cable */
|
| ... | ... | @@ -604,6 +606,7 @@ |
| 604 | 606 |
#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
|
| 605 | 607 |
#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
|
| 606 | 608 |
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
| 609 |
+#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
|
| 607 | 610 |
|
| 608 | 611 |
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
| 609 | 612 |
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
| ... | ... | @@ -646,6 +649,86 @@ |
| 646 | 649 |
*/
|
| 647 | 650 |
#define KEY_DATA 0x277
|
| 648 | 651 |
#define KEY_ONSCREEN_KEYBOARD 0x278
|
| 652 |
+/* Electronic privacy screen control */
|
|
| 653 |
+#define KEY_PRIVACY_SCREEN_TOGGLE 0x279
|
|
| 654 |
+ |
|
| 655 |
+/* Select an area of screen to be copied */
|
|
| 656 |
+#define KEY_SELECTIVE_SCREENSHOT 0x27a
|
|
| 657 |
+ |
|
| 658 |
+/*
|
|
| 659 |
+ * Some keyboards have keys which do not have a defined meaning, these keys
|
|
| 660 |
+ * are intended to be programmed / bound to macros by the user. For most
|
|
| 661 |
+ * keyboards with these macro-keys the key-sequence to inject, or action to
|
|
| 662 |
+ * take, is all handled by software on the host side. So from the kernel's
|
|
| 663 |
+ * point of view these are just normal keys.
|
|
| 664 |
+ *
|
|
| 665 |
+ * The KEY_MACRO# codes below are intended for such keys, which may be labeled
|
|
| 666 |
+ * e.g. G1-G18, or S1 - S30. The KEY_MACRO# codes MUST NOT be used for keys
|
|
| 667 |
+ * where the marking on the key does indicate a defined meaning / purpose.
|
|
| 668 |
+ *
|
|
| 669 |
+ * The KEY_MACRO# codes MUST also NOT be used as fallback for when no existing
|
|
| 670 |
+ * KEY_FOO define matches the marking / purpose. In this case a new KEY_FOO
|
|
| 671 |
+ * define MUST be added.
|
|
| 672 |
+ */
|
|
| 673 |
+#define KEY_MACRO1 0x290
|
|
| 674 |
+#define KEY_MACRO2 0x291
|
|
| 675 |
+#define KEY_MACRO3 0x292
|
|
| 676 |
+#define KEY_MACRO4 0x293
|
|
| 677 |
+#define KEY_MACRO5 0x294
|
|
| 678 |
+#define KEY_MACRO6 0x295
|
|
| 679 |
+#define KEY_MACRO7 0x296
|
|
| 680 |
+#define KEY_MACRO8 0x297
|
|
| 681 |
+#define KEY_MACRO9 0x298
|
|
| 682 |
+#define KEY_MACRO10 0x299
|
|
| 683 |
+#define KEY_MACRO11 0x29a
|
|
| 684 |
+#define KEY_MACRO12 0x29b
|
|
| 685 |
+#define KEY_MACRO13 0x29c
|
|
| 686 |
+#define KEY_MACRO14 0x29d
|
|
| 687 |
+#define KEY_MACRO15 0x29e
|
|
| 688 |
+#define KEY_MACRO16 0x29f
|
|
| 689 |
+#define KEY_MACRO17 0x2a0
|
|
| 690 |
+#define KEY_MACRO18 0x2a1
|
|
| 691 |
+#define KEY_MACRO19 0x2a2
|
|
| 692 |
+#define KEY_MACRO20 0x2a3
|
|
| 693 |
+#define KEY_MACRO21 0x2a4
|
|
| 694 |
+#define KEY_MACRO22 0x2a5
|
|
| 695 |
+#define KEY_MACRO23 0x2a6
|
|
| 696 |
+#define KEY_MACRO24 0x2a7
|
|
| 697 |
+#define KEY_MACRO25 0x2a8
|
|
| 698 |
+#define KEY_MACRO26 0x2a9
|
|
| 699 |
+#define KEY_MACRO27 0x2aa
|
|
| 700 |
+#define KEY_MACRO28 0x2ab
|
|
| 701 |
+#define KEY_MACRO29 0x2ac
|
|
| 702 |
+#define KEY_MACRO30 0x2ad
|
|
| 703 |
+ |
|
| 704 |
+/*
|
|
| 705 |
+ * Some keyboards with the macro-keys described above have some extra keys
|
|
| 706 |
+ * for controlling the host-side software responsible for the macro handling:
|
|
| 707 |
+ * -A macro recording start/stop key. Note that not all keyboards which emit
|
|
| 708 |
+ * KEY_MACRO_RECORD_START will also emit KEY_MACRO_RECORD_STOP if
|
|
| 709 |
+ * KEY_MACRO_RECORD_STOP is not advertised, then KEY_MACRO_RECORD_START
|
|
| 710 |
+ * should be interpreted as a recording start/stop toggle;
|
|
| 711 |
+ * -Keys for switching between different macro (pre)sets, either a key for
|
|
| 712 |
+ * cycling through the configured presets or keys to directly select a preset.
|
|
| 713 |
+ */
|
|
| 714 |
+#define KEY_MACRO_RECORD_START 0x2b0
|
|
| 715 |
+#define KEY_MACRO_RECORD_STOP 0x2b1
|
|
| 716 |
+#define KEY_MACRO_PRESET_CYCLE 0x2b2
|
|
| 717 |
+#define KEY_MACRO_PRESET1 0x2b3
|
|
| 718 |
+#define KEY_MACRO_PRESET2 0x2b4
|
|
| 719 |
+#define KEY_MACRO_PRESET3 0x2b5
|
|
| 720 |
+ |
|
| 721 |
+/*
|
|
| 722 |
+ * Some keyboards have a buildin LCD panel where the contents are controlled
|
|
| 723 |
+ * by the host. Often these have a number of keys directly below the LCD
|
|
| 724 |
+ * intended for controlling a menu shown on the LCD. These keys often don't
|
|
| 725 |
+ * have any labeling so we just name them KEY_KBD_LCD_MENU#
|
|
| 726 |
+ */
|
|
| 727 |
+#define KEY_KBD_LCD_MENU1 0x2b8
|
|
| 728 |
+#define KEY_KBD_LCD_MENU2 0x2b9
|
|
| 729 |
+#define KEY_KBD_LCD_MENU3 0x2ba
|
|
| 730 |
+#define KEY_KBD_LCD_MENU4 0x2bb
|
|
| 731 |
+#define KEY_KBD_LCD_MENU5 0x2bc
|
|
| 649 | 732 |
|
| 650 | 733 |
#define BTN_TRIGGER_HAPPY 0x2c0
|
| 651 | 734 |
#define BTN_TRIGGER_HAPPY1 0x2c0
|
| ... | ... | @@ -805,7 +888,8 @@ |
| 805 | 888 |
#define SW_LINEIN_INSERT 0x0d /* set = inserted */
|
| 806 | 889 |
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
| 807 | 890 |
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
| 808 |
-#define SW_MAX 0x0f
|
|
| 891 |
+#define SW_MACHINE_COVER 0x10 /* set = cover closed */
|
|
| 892 |
+#define SW_MAX 0x10
|
|
| 809 | 893 |
#define SW_CNT (SW_MAX+1)
|
| 810 | 894 |
|
| 811 | 895 |
/*
|
| 1 |
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
| 1 |
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
|
| 2 | 2 |
/*
|
| 3 | 3 |
* Input event codes
|
| 4 | 4 |
*
|
| ... | ... | @@ -439,10 +439,12 @@ |
| 439 | 439 |
#define KEY_TITLE 0x171
|
| 440 | 440 |
#define KEY_SUBTITLE 0x172
|
| 441 | 441 |
#define KEY_ANGLE 0x173
|
| 442 |
-#define KEY_ZOOM 0x174
|
|
| 442 |
+#define KEY_FULL_SCREEN 0x174 /* AC View Toggle */
|
|
| 443 |
+#define KEY_ZOOM KEY_FULL_SCREEN
|
|
| 443 | 444 |
#define KEY_MODE 0x175
|
| 444 | 445 |
#define KEY_KEYBOARD 0x176
|
| 445 |
-#define KEY_SCREEN 0x177
|
|
| 446 |
+#define KEY_ASPECT_RATIO 0x177 /* HUTRR37: Aspect */
|
|
| 447 |
+#define KEY_SCREEN KEY_ASPECT_RATIO
|
|
| 446 | 448 |
#define KEY_PC 0x178 /* Media Select Computer */
|
| 447 | 449 |
#define KEY_TV 0x179 /* Media Select TV */
|
| 448 | 450 |
#define KEY_TV2 0x17a /* Media Select Cable */
|
| ... | ... | @@ -604,6 +606,7 @@ |
| 604 | 606 |
#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
|
| 605 | 607 |
#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
|
| 606 | 608 |
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
| 609 |
+#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
|
| 607 | 610 |
|
| 608 | 611 |
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
| 609 | 612 |
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
| ... | ... | @@ -646,6 +649,86 @@ |
| 646 | 649 |
*/
|
| 647 | 650 |
#define KEY_DATA 0x277
|
| 648 | 651 |
#define KEY_ONSCREEN_KEYBOARD 0x278
|
| 652 |
+/* Electronic privacy screen control */
|
|
| 653 |
+#define KEY_PRIVACY_SCREEN_TOGGLE 0x279
|
|
| 654 |
+ |
|
| 655 |
+/* Select an area of screen to be copied */
|
|
| 656 |
+#define KEY_SELECTIVE_SCREENSHOT 0x27a
|
|
| 657 |
+ |
|
| 658 |
+/*
|
|
| 659 |
+ * Some keyboards have keys which do not have a defined meaning, these keys
|
|
| 660 |
+ * are intended to be programmed / bound to macros by the user. For most
|
|
| 661 |
+ * keyboards with these macro-keys the key-sequence to inject, or action to
|
|
| 662 |
+ * take, is all handled by software on the host side. So from the kernel's
|
|
| 663 |
+ * point of view these are just normal keys.
|
|
| 664 |
+ *
|
|
| 665 |
+ * The KEY_MACRO# codes below are intended for such keys, which may be labeled
|
|
| 666 |
+ * e.g. G1-G18, or S1 - S30. The KEY_MACRO# codes MUST NOT be used for keys
|
|
| 667 |
+ * where the marking on the key does indicate a defined meaning / purpose.
|
|
| 668 |
+ *
|
|
| 669 |
+ * The KEY_MACRO# codes MUST also NOT be used as fallback for when no existing
|
|
| 670 |
+ * KEY_FOO define matches the marking / purpose. In this case a new KEY_FOO
|
|
| 671 |
+ * define MUST be added.
|
|
| 672 |
+ */
|
|
| 673 |
+#define KEY_MACRO1 0x290
|
|
| 674 |
+#define KEY_MACRO2 0x291
|
|
| 675 |
+#define KEY_MACRO3 0x292
|
|
| 676 |
+#define KEY_MACRO4 0x293
|
|
| 677 |
+#define KEY_MACRO5 0x294
|
|
| 678 |
+#define KEY_MACRO6 0x295
|
|
| 679 |
+#define KEY_MACRO7 0x296
|
|
| 680 |
+#define KEY_MACRO8 0x297
|
|
| 681 |
+#define KEY_MACRO9 0x298
|
|
| 682 |
+#define KEY_MACRO10 0x299
|
|
| 683 |
+#define KEY_MACRO11 0x29a
|
|
| 684 |
+#define KEY_MACRO12 0x29b
|
|
| 685 |
+#define KEY_MACRO13 0x29c
|
|
| 686 |
+#define KEY_MACRO14 0x29d
|
|
| 687 |
+#define KEY_MACRO15 0x29e
|
|
| 688 |
+#define KEY_MACRO16 0x29f
|
|
| 689 |
+#define KEY_MACRO17 0x2a0
|
|
| 690 |
+#define KEY_MACRO18 0x2a1
|
|
| 691 |
+#define KEY_MACRO19 0x2a2
|
|
| 692 |
+#define KEY_MACRO20 0x2a3
|
|
| 693 |
+#define KEY_MACRO21 0x2a4
|
|
| 694 |
+#define KEY_MACRO22 0x2a5
|
|
| 695 |
+#define KEY_MACRO23 0x2a6
|
|
| 696 |
+#define KEY_MACRO24 0x2a7
|
|
| 697 |
+#define KEY_MACRO25 0x2a8
|
|
| 698 |
+#define KEY_MACRO26 0x2a9
|
|
| 699 |
+#define KEY_MACRO27 0x2aa
|
|
| 700 |
+#define KEY_MACRO28 0x2ab
|
|
| 701 |
+#define KEY_MACRO29 0x2ac
|
|
| 702 |
+#define KEY_MACRO30 0x2ad
|
|
| 703 |
+ |
|
| 704 |
+/*
|
|
| 705 |
+ * Some keyboards with the macro-keys described above have some extra keys
|
|
| 706 |
+ * for controlling the host-side software responsible for the macro handling:
|
|
| 707 |
+ * -A macro recording start/stop key. Note that not all keyboards which emit
|
|
| 708 |
+ * KEY_MACRO_RECORD_START will also emit KEY_MACRO_RECORD_STOP if
|
|
| 709 |
+ * KEY_MACRO_RECORD_STOP is not advertised, then KEY_MACRO_RECORD_START
|
|
| 710 |
+ * should be interpreted as a recording start/stop toggle;
|
|
| 711 |
+ * -Keys for switching between different macro (pre)sets, either a key for
|
|
| 712 |
+ * cycling through the configured presets or keys to directly select a preset.
|
|
| 713 |
+ */
|
|
| 714 |
+#define KEY_MACRO_RECORD_START 0x2b0
|
|
| 715 |
+#define KEY_MACRO_RECORD_STOP 0x2b1
|
|
| 716 |
+#define KEY_MACRO_PRESET_CYCLE 0x2b2
|
|
| 717 |
+#define KEY_MACRO_PRESET1 0x2b3
|
|
| 718 |
+#define KEY_MACRO_PRESET2 0x2b4
|
|
| 719 |
+#define KEY_MACRO_PRESET3 0x2b5
|
|
| 720 |
+ |
|
| 721 |
+/*
|
|
| 722 |
+ * Some keyboards have a buildin LCD panel where the contents are controlled
|
|
| 723 |
+ * by the host. Often these have a number of keys directly below the LCD
|
|
| 724 |
+ * intended for controlling a menu shown on the LCD. These keys often don't
|
|
| 725 |
+ * have any labeling so we just name them KEY_KBD_LCD_MENU#
|
|
| 726 |
+ */
|
|
| 727 |
+#define KEY_KBD_LCD_MENU1 0x2b8
|
|
| 728 |
+#define KEY_KBD_LCD_MENU2 0x2b9
|
|
| 729 |
+#define KEY_KBD_LCD_MENU3 0x2ba
|
|
| 730 |
+#define KEY_KBD_LCD_MENU4 0x2bb
|
|
| 731 |
+#define KEY_KBD_LCD_MENU5 0x2bc
|
|
| 649 | 732 |
|
| 650 | 733 |
#define BTN_TRIGGER_HAPPY 0x2c0
|
| 651 | 734 |
#define BTN_TRIGGER_HAPPY1 0x2c0
|
| ... | ... | @@ -805,7 +888,8 @@ |
| 805 | 888 |
#define SW_LINEIN_INSERT 0x0d /* set = inserted */
|
| 806 | 889 |
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
| 807 | 890 |
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
| 808 |
-#define SW_MAX 0x0f
|
|
| 891 |
+#define SW_MACHINE_COVER 0x10 /* set = cover closed */
|
|
| 892 |
+#define SW_MAX 0x10
|
|
| 809 | 893 |
#define SW_CNT (SW_MAX+1)
|
| 810 | 894 |
|
| 811 | 895 |
/*
|
| 1 | 1 |
project('libinput', 'c',
|
| 2 |
- version : '1.16.0',
|
|
| 2 |
+ version : '1.16.1',
|
|
| 3 | 3 |
license : 'MIT/Expat',
|
| 4 | 4 |
default_options : [ 'c_std=gnu99', 'warning_level=2' ],
|
| 5 | 5 |
meson_version : '>= 0.45.0')
|
| ... | ... | @@ -785,6 +785,7 @@ if get_option('tests') |
| 785 | 785 |
'test/litest-device-keyboard-razer-blade-stealth-videoswitch.c',
|
| 786 | 786 |
'test/litest-device-lid-switch.c',
|
| 787 | 787 |
'test/litest-device-lid-switch-surface3.c',
|
| 788 |
+ 'test/litest-device-logitech-media-keyboard-elite.c',
|
|
| 788 | 789 |
'test/litest-device-logitech-trackball.c',
|
| 789 | 790 |
'test/litest-device-nexus4-touch-screen.c',
|
| 790 | 791 |
'test/litest-device-magic-trackpad.c',
|
| ... | ... | @@ -798,6 +799,7 @@ if get_option('tests') |
| 798 | 799 |
'test/litest-device-ms-surface-cover.c',
|
| 799 | 800 |
'test/litest-device-protocol-a-touch-screen.c',
|
| 800 | 801 |
'test/litest-device-qemu-usb-tablet.c',
|
| 802 |
+ 'test/litest-device-sony-vaio-keys.c',
|
|
| 801 | 803 |
'test/litest-device-synaptics-x220.c',
|
| 802 | 804 |
'test/litest-device-synaptics-hover.c',
|
| 803 | 805 |
'test/litest-device-synaptics-i2c.c',
|
| ... | ... | @@ -46,6 +46,33 @@ MatchVendor=0x046D |
| 46 | 46 |
MatchProduct=0x4011
|
| 47 | 47 |
AttrPalmPressureThreshold=400
|
| 48 | 48 |
|
| 49 |
+[Logitech MX Master]
|
|
| 50 |
+MatchVendor=0x46D
|
|
| 51 |
+MatchProduct=0x4041
|
|
| 52 |
+ModelInvertHorizontalScrolling=1
|
|
| 53 |
+[Logitech MX Master]
|
|
| 54 |
+MatchVendor=0x46D
|
|
| 55 |
+MatchProduct=0x4060
|
|
| 56 |
+ModelInvertHorizontalScrolling=1
|
|
| 57 |
+[Logitech MX Master]
|
|
| 58 |
+MatchVendor=0x46D
|
|
| 59 |
+MatchProduct=0x4071
|
|
| 60 |
+ModelInvertHorizontalScrolling=1
|
|
| 61 |
+ |
|
| 62 |
+# MX Master has a different PID on bluetooth
|
|
| 63 |
+[Logitech MX Master]
|
|
| 64 |
+MatchVendor=0x46D
|
|
| 65 |
+MatchProduct=0xB012
|
|
| 66 |
+ModelInvertHorizontalScrolling=1
|
|
| 67 |
+[Logitech MX Master]
|
|
| 68 |
+MatchVendor=0x46D
|
|
| 69 |
+MatchProduct=0xB017
|
|
| 70 |
+ModelInvertHorizontalScrolling=1
|
|
| 71 |
+[Logitech MX Master]
|
|
| 72 |
+MatchVendor=0x46D
|
|
| 73 |
+MatchProduct=0xB01E
|
|
| 74 |
+ModelInvertHorizontalScrolling=1
|
|
| 75 |
+ |
|
| 49 | 76 |
[Logitech MX Master 2S]
|
| 50 | 77 |
MatchVendor=0x46D
|
| 51 | 78 |
MatchProduct=0x4069
|
| ... | ... | @@ -1810,8 +1810,9 @@ evdev_configure_device(struct evdev_device *device) |
| 1810 | 1810 |
evdev_disable_accelerometer_axes(device);
|
| 1811 | 1811 |
}
|
| 1812 | 1812 |
|
| 1813 |
- if (udev_tags & EVDEV_UDEV_TAG_JOYSTICK) {
|
|
| 1814 |
- evdev_log_info(device, "device is a joystick, ignoring\n");
|
|
| 1813 |
+ if (udev_tags == (EVDEV_UDEV_TAG_INPUT|EVDEV_UDEV_TAG_JOYSTICK)) {
|
|
| 1814 |
+ evdev_log_info(device,
|
|
| 1815 |
+ "device is a joystick, ignoring\n");
|
|
| 1815 | 1816 |
return NULL;
|
| 1816 | 1817 |
}
|
| 1817 | 1818 |
|
| 1 |
+/*
|
|
| 2 |
+ * Copyright © 2020 Red Hat, Inc.
|
|
| 3 |
+ *
|
|
| 4 |
+ * Permission is hereby granted, free of charge, to any person obtaining a
|
|
| 5 |
+ * copy of this software and associated documentation files (the "Software"),
|
|
| 6 |
+ * to deal in the Software without restriction, including without limitation
|
|
| 7 |
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
| 8 |
+ * and/or sell copies of the Software, and to permit persons to whom the
|
|
| 9 |
+ * Software is furnished to do so, subject to the following conditions:
|
|
| 10 |
+ *
|
|
| 11 |
+ * The above copyright notice and this permission notice (including the next
|
|
| 12 |
+ * paragraph) shall be included in all copies or substantial portions of the
|
|
| 13 |
+ * Software.
|
|
| 14 |
+ *
|
|
| 15 |
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
| 16 |
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
| 17 |
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
| 18 |
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
| 19 |
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
| 20 |
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
| 21 |
+ * DEALINGS IN THE SOFTWARE.
|
|
| 22 |
+ */
|
|
| 23 |
+ |
|
| 24 |
+#include "config.h"
|
|
| 25 |
+ |
|
| 26 |
+#include <assert.h>
|
|
| 27 |
+ |
|
| 28 |
+#include "libinput-util.h"
|
|
| 29 |
+ |
|
| 30 |
+#include "litest.h"
|
|
| 31 |
+#include "litest-int.h"
|
|
| 32 |
+ |
|
| 33 |
+/* Description taken from
|
|
| 34 |
+ * https://gitlab.freedesktop.org/libinput/libinput/-/issues/514
|
|
| 35 |
+ */
|
|
| 36 |
+ |
|
| 37 |
+static struct input_id input_id = {
|
|
| 38 |
+ .bustype = 0x3,
|
|
| 39 |
+ .vendor = 0x46d,
|
|
| 40 |
+ .product = 0x30f,
|
|
| 41 |
+};
|
|
| 42 |
+ |
|
| 43 |
+static int events[] = {
|
|
| 44 |
+ EV_KEY, KEY_MUTE,
|
|
| 45 |
+ EV_KEY, KEY_VOLUMEDOWN,
|
|
| 46 |
+ EV_KEY, KEY_VOLUMEUP,
|
|
| 47 |
+ EV_KEY, KEY_UNDO,
|
|
| 48 |
+ EV_KEY, KEY_HELP,
|
|
| 49 |
+ EV_KEY, KEY_CALC,
|
|
| 50 |
+ EV_KEY, KEY_MAIL,
|
|
| 51 |
+ EV_KEY, KEY_BOOKMARKS,
|
|
| 52 |
+ EV_KEY, KEY_BACK,
|
|
| 53 |
+ EV_KEY, KEY_FORWARD,
|
|
| 54 |
+ EV_KEY, KEY_NEXTSONG,
|
|
| 55 |
+ EV_KEY, KEY_PLAYPAUSE,
|
|
| 56 |
+ EV_KEY, KEY_PREVIOUSSONG,
|
|
| 57 |
+ EV_KEY, KEY_STOPCD,
|
|
| 58 |
+ EV_KEY, KEY_REWIND,
|
|
| 59 |
+ EV_KEY, KEY_CONFIG,
|
|
| 60 |
+ EV_KEY, KEY_HOMEPAGE,
|
|
| 61 |
+ EV_KEY, KEY_REDO,
|
|
| 62 |
+ EV_KEY, KEY_FASTFORWARD,
|
|
| 63 |
+ EV_KEY, KEY_PRINT,
|
|
| 64 |
+ EV_KEY, KEY_SEARCH,
|
|
| 65 |
+ EV_KEY, KEY_SAVE,
|
|
| 66 |
+ EV_KEY, 319,
|
|
| 67 |
+ EV_KEY, BTN_TOOL_QUINTTAP,
|
|
| 68 |
+ EV_KEY, BTN_STYLUS3,
|
|
| 69 |
+ EV_KEY, BTN_TOUCH,
|
|
| 70 |
+ EV_KEY, BTN_STYLUS,
|
|
| 71 |
+ EV_KEY, KEY_ZOOMIN,
|
|
| 72 |
+ EV_KEY, KEY_ZOOMOUT,
|
|
| 73 |
+ EV_KEY, KEY_ZOOMRESET,
|
|
| 74 |
+ EV_KEY, KEY_WORDPROCESSOR,
|
|
| 75 |
+ EV_KEY, KEY_SPREADSHEET,
|
|
| 76 |
+ EV_KEY, KEY_PRESENTATION,
|
|
| 77 |
+ EV_KEY, KEY_MESSENGER,
|
|
| 78 |
+ |
|
| 79 |
+ EV_MSC, MSC_SCAN,
|
|
| 80 |
+ -1, -1,
|
|
| 81 |
+};
|
|
| 82 |
+ |
|
| 83 |
+TEST_DEVICE("logitech-media-keyboard-elite",
|
|
| 84 |
+ .type = LITEST_KEYBOARD_LOGITECH_MEDIA_KEYBOARD_ELITE,
|
|
| 85 |
+ .features = LITEST_KEYS,
|
|
| 86 |
+ .interface = NULL,
|
|
| 87 |
+ |
|
| 88 |
+ .name = "Logitech Logitech USB Keyboard Consumer Control",
|
|
| 89 |
+ .id = &input_id,
|
|
| 90 |
+ .events = events,
|
|
| 91 |
+ .absinfo = NULL,
|
|
| 92 |
+)
|
| 1 |
+/*
|
|
| 2 |
+ * Copyright © 2020 Red Hat, Inc.
|
|
| 3 |
+ *
|
|
| 4 |
+ * Permission is hereby granted, free of charge, to any person obtaining a
|
|
| 5 |
+ * copy of this software and associated documentation files (the "Software"),
|
|
| 6 |
+ * to deal in the Software without restriction, including without limitation
|
|
| 7 |
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
| 8 |
+ * and/or sell copies of the Software, and to permit persons to whom the
|
|
| 9 |
+ * Software is furnished to do so, subject to the following conditions:
|
|
| 10 |
+ *
|
|
| 11 |
+ * The above copyright notice and this permission notice (including the next
|
|
| 12 |
+ * paragraph) shall be included in all copies or substantial portions of the
|
|
| 13 |
+ * Software.
|
|
| 14 |
+ *
|
|
| 15 |
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
| 16 |
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
| 17 |
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
| 18 |
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
| 19 |
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
| 20 |
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
| 21 |
+ * DEALINGS IN THE SOFTWARE.
|
|
| 22 |
+ */
|
|
| 23 |
+ |
|
| 24 |
+#include "config.h"
|
|
| 25 |
+ |
|
| 26 |
+#include <assert.h>
|
|
| 27 |
+ |
|
| 28 |
+#include "libinput-util.h"
|
|
| 29 |
+ |
|
| 30 |
+#include "litest.h"
|
|
| 31 |
+#include "litest-int.h"
|
|
| 32 |
+ |
|
| 33 |
+/* Description taken from
|
|
| 34 |
+ * https://gitlab.freedesktop.org/libinput/libinput/-/issues/515
|
|
| 35 |
+ */
|
|
| 36 |
+ |
|
| 37 |
+static struct input_id input_id = {
|
|
| 38 |
+ .bustype = 0x10,
|
|
| 39 |
+ .vendor = 0x104d,
|
|
| 40 |
+ .product = 0x00,
|
|
| 41 |
+};
|
|
| 42 |
+ |
|
| 43 |
+static int events[] = {
|
|
| 44 |
+ EV_KEY, KEY_UP,
|
|
| 45 |
+ EV_KEY, KEY_DOWN,
|
|
| 46 |
+ EV_KEY, KEY_MUTE,
|
|
| 47 |
+ EV_KEY, KEY_VOLUMEDOWN,
|
|
| 48 |
+ EV_KEY, KEY_VOLUMEUP,
|
|
| 49 |
+ EV_KEY, KEY_HELP,
|
|
| 50 |
+ EV_KEY, KEY_PROG1,
|
|
| 51 |
+ EV_KEY, KEY_PROG2,
|
|
| 52 |
+ EV_KEY, KEY_BACK,
|
|
| 53 |
+ EV_KEY, KEY_EJECTCD,
|
|
| 54 |
+ EV_KEY, KEY_F13,
|
|
| 55 |
+ EV_KEY, KEY_F14,
|
|
| 56 |
+ EV_KEY, KEY_F15,
|
|
| 57 |
+ EV_KEY, KEY_F21,
|
|
| 58 |
+ EV_KEY, KEY_PROG3,
|
|
| 59 |
+ EV_KEY, KEY_PROG4,
|
|
| 60 |
+ EV_KEY, KEY_SUSPEND,
|
|
| 61 |
+ EV_KEY, KEY_CAMERA,
|
|
| 62 |
+ EV_KEY, KEY_BRIGHTNESSDOWN,
|
|
| 63 |
+ EV_KEY, KEY_BRIGHTNESSUP,
|
|
| 64 |
+ EV_KEY, KEY_MEDIA,
|
|
| 65 |
+ EV_KEY, KEY_SWITCHVIDEOMODE,
|
|
| 66 |
+ EV_KEY, KEY_BLUETOOTH,
|
|
| 67 |
+ EV_KEY, KEY_WLAN,
|
|
| 68 |
+ EV_KEY, BTN_THUMB,
|
|
| 69 |
+ EV_KEY, KEY_VENDOR,
|
|
| 70 |
+ EV_KEY, KEY_FULL_SCREEN,
|
|
| 71 |
+ EV_KEY, KEY_ZOOMIN,
|
|
| 72 |
+ EV_KEY, KEY_ZOOMOUT,
|
|
| 73 |
+ EV_KEY, KEY_FN,
|
|
| 74 |
+ EV_KEY, KEY_FN_ESC,
|
|
| 75 |
+ EV_KEY, KEY_FN_F8,
|
|
| 76 |
+ EV_KEY, KEY_FN_F11,
|
|
| 77 |
+ EV_KEY, KEY_FN_1,
|
|
| 78 |
+ EV_KEY, KEY_FN_2,
|
|
| 79 |
+ EV_KEY, KEY_FN_D,
|
|
| 80 |
+ EV_KEY, KEY_FN_E,
|
|
| 81 |
+ EV_KEY, KEY_FN_F,
|
|
| 82 |
+ EV_KEY, KEY_FN_S,
|
|
| 83 |
+ EV_KEY, KEY_FN_B,
|
|
| 84 |
+ |
|
| 85 |
+ EV_MSC, MSC_SCAN,
|
|
| 86 |
+ -1, -1,
|
|
| 87 |
+};
|
|
| 88 |
+ |
|
| 89 |
+TEST_DEVICE("sony-vaio-keys",
|
|
| 90 |
+ .type = LITEST_SONY_VAIO_KEYS,
|
|
| 91 |
+ .features = LITEST_KEYS,
|
|
| 92 |
+ .interface = NULL,
|
|
| 93 |
+ |
|
| 94 |
+ .name = "Sony Vaio Keys",
|
|
| 95 |
+ .id = &input_id,
|
|
| 96 |
+ .events = events,
|
|
| 97 |
+ .absinfo = NULL,
|
|
| 98 |
+)
|
| ... | ... | @@ -304,6 +304,8 @@ enum litest_device_type { |
| 304 | 304 |
LITEST_ELAN_TABLET,
|
| 305 | 305 |
LITEST_ABSINFO_OVERRIDE,
|
| 306 | 306 |
LITEST_TABLET_MODE_UNRELIABLE,
|
| 307 |
+ LITEST_KEYBOARD_LOGITECH_MEDIA_KEYBOARD_ELITE,
|
|
| 308 |
+ LITEST_SONY_VAIO_KEYS,
|
|
| 307 | 309 |
};
|
| 308 | 310 |
|
| 309 | 311 |
#define LITEST_DEVICELESS -2
|
| ... | ... | @@ -1462,10 +1462,11 @@ START_TEST(device_capability_nocaps_ignored) |
| 1462 | 1462 |
struct libinput *li;
|
| 1463 | 1463 |
struct libinput_device *device;
|
| 1464 | 1464 |
|
| 1465 |
- /* SW_MAX isn't handled in libinput so the device is processed but
|
|
| 1466 |
- * ends up without seat capabilities and is ignored. */
|
|
| 1465 |
+ /* SW_PEN_INSERTED isn't handled in libinput so the device is
|
|
| 1466 |
+ * processed but ends up without seat capabilities and is ignored.
|
|
| 1467 |
+ */
|
|
| 1467 | 1468 |
uinput = litest_create_uinput_device("test device", NULL,
|
| 1468 |
- EV_SW, SW_MAX,
|
|
| 1469 |
+ EV_SW, SW_PEN_INSERTED,
|
|
| 1469 | 1470 |
-1);
|
| 1470 | 1471 |
li = litest_create_context();
|
| 1471 | 1472 |
device = libinput_path_add_device(li,
|