^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) // behold.h - Keytable for behold Remote Controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) // keymap imported from ir-keymaps.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) // Copyright (c) 2010 by Mauro Carvalho Chehab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <media/rc-map.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * Igor Kuznetsov <igk72@ya.ru>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * Andrey J. Melnikov <temnota@kmv.ru>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * Keytable is used by BeholdTV 60x series, M6 series at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * least, and probably other cards too.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * The "ascii-art picture" below (in comments, first row
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * is the keycode in hex, and subsequent row(s) shows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * the button labels (several variants when appropriate)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * helps to decide which keycodes to assign to the buttons.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) static struct rc_map_table behold[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) /* 0x1c 0x12 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * TV/FM POWER *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) { 0x866b1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) { 0x866b12, KEY_POWER },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /* 0x01 0x02 0x03 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * 1 2 3 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * 0x04 0x05 0x06 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * 4 5 6 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * 0x07 0x08 0x09 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * 7 8 9 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) { 0x866b01, KEY_NUMERIC_1 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) { 0x866b02, KEY_NUMERIC_2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) { 0x866b03, KEY_NUMERIC_3 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) { 0x866b04, KEY_NUMERIC_4 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) { 0x866b05, KEY_NUMERIC_5 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) { 0x866b06, KEY_NUMERIC_6 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) { 0x866b07, KEY_NUMERIC_7 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) { 0x866b08, KEY_NUMERIC_8 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) { 0x866b09, KEY_NUMERIC_9 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /* 0x0a 0x00 0x17 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) * RECALL 0 MODE *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) { 0x866b0a, KEY_AGAIN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) { 0x866b00, KEY_NUMERIC_0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) { 0x866b17, KEY_MODE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* 0x14 0x10 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) * ASPECT FULLSCREEN *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) { 0x866b14, KEY_SCREEN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) { 0x866b10, KEY_ZOOM },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) /* 0x0b *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) * Up *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) * *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) * 0x18 0x16 0x0c *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) * Left Ok Right *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) * *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) * 0x015 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) * Down *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) { 0x866b0b, KEY_CHANNELUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) { 0x866b18, KEY_VOLUMEDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) { 0x866b16, KEY_OK }, /* XXX KEY_ENTER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) { 0x866b0c, KEY_VOLUMEUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) { 0x866b15, KEY_CHANNELDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) /* 0x11 0x0d *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) * MUTE INFO *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) { 0x866b11, KEY_MUTE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) { 0x866b0d, KEY_INFO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) /* 0x0f 0x1b 0x1a *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) * RECORD PLAY/PAUSE STOP *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) * *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) * 0x0e 0x1f 0x1e *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) *TELETEXT AUDIO SOURCE *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) * RED YELLOW *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) { 0x866b0f, KEY_RECORD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) { 0x866b1b, KEY_PLAYPAUSE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) { 0x866b1a, KEY_STOP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) { 0x866b0e, KEY_TEXT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) { 0x866b1f, KEY_RED }, /*XXX KEY_AUDIO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) { 0x866b1e, KEY_VIDEO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) /* 0x1d 0x13 0x19 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) * SLEEP PREVIEW DVB *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) * GREEN BLUE *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) { 0x866b1d, KEY_SLEEP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) { 0x866b13, KEY_GREEN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) { 0x866b19, KEY_BLUE }, /* XXX KEY_SAT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) /* 0x58 0x5c *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) * FREEZE SNAPSHOT *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) * */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) { 0x866b58, KEY_SLOW },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) { 0x866b5c, KEY_CAMERA },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) static struct rc_map_list behold_map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) .map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) .scan = behold,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) .size = ARRAY_SIZE(behold),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) .rc_proto = RC_PROTO_NECX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) .name = RC_MAP_BEHOLD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) static int __init init_rc_map_behold(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) return rc_map_register(&behold_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) static void __exit exit_rc_map_behold(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) rc_map_unregister(&behold_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) module_init(init_rc_map_behold)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) module_exit(exit_rc_map_behold)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) MODULE_AUTHOR("Mauro Carvalho Chehab");