1 /* 2 * Copyright © 2017 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 "litest.h" 27 #include "litest-int.h" 28 29 static struct input_id input_id = { 30 .bustype = 0x19, 31 .vendor = 0x17aa, 32 .product = 0x5054, 33 }; 34 35 static int events[] = { 36 EV_KEY, KEY_MUTE, 37 EV_KEY, KEY_VOLUMEUP, 38 EV_KEY, KEY_VOLUMEDOWN, 39 EV_KEY, KEY_SCALE, 40 EV_KEY, KEY_SLEEP, 41 EV_KEY, KEY_FILE, 42 EV_KEY, KEY_PROG1, 43 EV_KEY, KEY_COFFEE, 44 EV_KEY, KEY_BACK, 45 EV_KEY, KEY_CONFIG, 46 EV_KEY, KEY_REFRESH, 47 EV_KEY, KEY_F20, 48 EV_KEY, KEY_F21, 49 EV_KEY, KEY_F24, 50 EV_KEY, KEY_SUSPEND, 51 EV_KEY, KEY_CAMERA, 52 EV_KEY, KEY_SEARCH, 53 EV_KEY, KEY_BRIGHTNESSDOWN, 54 EV_KEY, KEY_BRIGHTNESSUP, 55 EV_KEY, KEY_SWITCHVIDEOMODE, 56 EV_KEY, KEY_KBDILLUMTOGGLE, 57 EV_KEY, KEY_BATTERY, 58 EV_KEY, KEY_WLAN, 59 EV_KEY, KEY_UNKNOWN, 60 EV_KEY, KEY_ZOOM, 61 EV_KEY, KEY_FN_F1, 62 EV_KEY, KEY_FN_F10, 63 EV_KEY, KEY_FN_F11, 64 EV_KEY, KEY_VOICECOMMAND, 65 EV_KEY, KEY_BRIGHTNESS_MIN, 66 67 EV_SW, SW_RFKILL_ALL, 68 EV_SW, SW_TABLET_MODE, 69 70 -1, -1, 71 }; 72 73 static const char udev_rule[] = 74 "ACTION==\"remove\", GOTO=\"switch_end\"\n" 75 "KERNEL!=\"event*\", GOTO=\"switch_end\"\n" 76 "\n" 77 "ATTRS{name}==\"litest ThinkPad Extra Buttons*\",\\\n" 78 " ENV{ID_INPUT_SWITCH}=\"1\"\n" 79 "\n" 80 "LABEL=\"switch_end\""; 81 82 TEST_DEVICE("thinkpad-extrabuttons", 83 .type = LITEST_THINKPAD_EXTRABUTTONS, 84 .features = LITEST_KEYS | LITEST_SWITCH, 85 .interface = NULL, 86 87 .name = "ThinkPad Extra Buttons", 88 .id = &input_id, 89 .events = events, 90 .absinfo = NULL, 91 .udev_rule = udev_rule, 92 ) 93