1 // SPDX-License-Identifier: GPL-2.0+ 2 // Keytable for Xbox 360 Universal Media remote 3 // Copyright (c) 2021 Bastien Nocera <hadess@hadess.net> 4 5 #include <media/rc-map.h> 6 #include <linux/module.h> 7 8 /* 9 * Manual for remote available at: 10 * http://download.microsoft.com/download/b/c/e/bce76f3f-db51-4c98-b79d-b3d21e90ccc1/universalmediaremote_na_0609.pdf 11 */ 12 static struct rc_map_table xbox_360[] = { 13 {KEY_EJECTCD, 0x800f7428}, 14 {KEY_HOMEPAGE, 0x800f7464}, 15 {KEY_POWER, 0x800f740c}, 16 {KEY_STOP, 0x800f7419}, 17 {KEY_PAUSE, 0x800f7418}, 18 {KEY_REWIND, 0x800f7415}, 19 {KEY_FASTFORWARD, 0x800f7414}, 20 {KEY_PREVIOUS, 0x800f741b}, 21 {KEY_NEXT, 0x800f741a}, 22 {KEY_PLAY, 0x800f7416}, 23 {KEY_PROPS, 0x800f744f}, /* "Display" */ 24 {KEY_BACK, 0x800f7423}, 25 {KEY_MEDIA_TOP_MENU, 0x800f7424}, /* "DVD Menu" */ 26 {KEY_ROOT_MENU, 0x800f7451}, /* "Title" */ 27 {KEY_INFO, 0x800f740f}, 28 {KEY_UP, 0x800f741e}, 29 {KEY_LEFT, 0x800f7420}, 30 {KEY_RIGHT, 0x800f7421}, 31 {KEY_DOWN, 0x800f741f}, 32 {KEY_OK, 0x800f7422}, 33 {KEY_YELLOW, 0x800f7426}, 34 {KEY_BLUE, 0x800f7468}, 35 {KEY_GREEN, 0x800f7466}, 36 {KEY_RED, 0x800f7425}, 37 {KEY_VOLUMEUP, 0x800f7410}, 38 {KEY_VOLUMEDOWN, 0x800f7411}, 39 /* TV key doesn't light the IR LED */ 40 {KEY_MUTE, 0x800f740e}, 41 {KEY_CHANNELUP, 0x800f746c}, 42 {KEY_CHANNELDOWN, 0x800f746d}, 43 {KEY_LEFTMETA, 0x800f740d}, 44 {KEY_ENTER, 0x800f740b}, 45 {KEY_RECORD, 0x800f7417}, 46 {KEY_CLEAR, 0x800f740a}, 47 {KEY_NUMERIC_1, 0x800f7401}, 48 {KEY_NUMERIC_2, 0x800f7402}, 49 {KEY_NUMERIC_3, 0x800f7403}, 50 {KEY_NUMERIC_4, 0x800f7404}, 51 {KEY_NUMERIC_5, 0x800f7405}, 52 {KEY_NUMERIC_6, 0x800f7406}, 53 {KEY_NUMERIC_7, 0x800f7407}, 54 {KEY_NUMERIC_8, 0x800f7408}, 55 {KEY_NUMERIC_9, 0x800f7409}, 56 {KEY_NUMERIC_0, 0x800f7400}, 57 {KEY_102ND, 0x800f741d}, /* "100" */ 58 {KEY_CANCEL, 0x800f741c}, 59 }; 60 61 static struct rc_map_list xbox_360_map = { 62 .map = { 63 .scan = xbox_360, 64 .size = ARRAY_SIZE(xbox_360), 65 .rc_proto = RC_PROTO_RC6_MCE, 66 .name = RC_MAP_XBOX_360, 67 } 68 }; 69 70 static int __init init_rc_map(void) 71 { 72 return rc_map_register(&xbox_360_map); 73 } 74 75 static void __exit exit_rc_map(void) 76 { 77 rc_map_unregister(&xbox_360_map); 78 } 79 80 module_init(init_rc_map) 81 module_exit(exit_rc_map) 82 83 MODULE_LICENSE("GPL"); 84