162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci// manli.h - Keytable for manli Remote Controller 362306a36Sopenharmony_ci// 462306a36Sopenharmony_ci// keymap imported from ir-keymaps.c 562306a36Sopenharmony_ci// 662306a36Sopenharmony_ci// Copyright (c) 2010 by Mauro Carvalho Chehab 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <media/rc-map.h> 962306a36Sopenharmony_ci#include <linux/module.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/* Michael Tokarev <mjt@tls.msk.ru> 1262306a36Sopenharmony_ci keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at 1362306a36Sopenharmony_ci least, and probably other cards too. 1462306a36Sopenharmony_ci The "ascii-art picture" below (in comments, first row 1562306a36Sopenharmony_ci is the keycode in hex, and subsequent row(s) shows 1662306a36Sopenharmony_ci the button labels (several variants when appropriate) 1762306a36Sopenharmony_ci helps to decide which keycodes to assign to the buttons. 1862306a36Sopenharmony_ci */ 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistatic struct rc_map_table manli[] = { 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci /* 0x1c 0x12 * 2362306a36Sopenharmony_ci * FUNCTION POWER * 2462306a36Sopenharmony_ci * FM (|) * 2562306a36Sopenharmony_ci * */ 2662306a36Sopenharmony_ci { 0x1c, KEY_RADIO }, /*XXX*/ 2762306a36Sopenharmony_ci { 0x12, KEY_POWER }, 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci /* 0x01 0x02 0x03 * 3062306a36Sopenharmony_ci * 1 2 3 * 3162306a36Sopenharmony_ci * * 3262306a36Sopenharmony_ci * 0x04 0x05 0x06 * 3362306a36Sopenharmony_ci * 4 5 6 * 3462306a36Sopenharmony_ci * * 3562306a36Sopenharmony_ci * 0x07 0x08 0x09 * 3662306a36Sopenharmony_ci * 7 8 9 * 3762306a36Sopenharmony_ci * */ 3862306a36Sopenharmony_ci { 0x01, KEY_NUMERIC_1 }, 3962306a36Sopenharmony_ci { 0x02, KEY_NUMERIC_2 }, 4062306a36Sopenharmony_ci { 0x03, KEY_NUMERIC_3 }, 4162306a36Sopenharmony_ci { 0x04, KEY_NUMERIC_4 }, 4262306a36Sopenharmony_ci { 0x05, KEY_NUMERIC_5 }, 4362306a36Sopenharmony_ci { 0x06, KEY_NUMERIC_6 }, 4462306a36Sopenharmony_ci { 0x07, KEY_NUMERIC_7 }, 4562306a36Sopenharmony_ci { 0x08, KEY_NUMERIC_8 }, 4662306a36Sopenharmony_ci { 0x09, KEY_NUMERIC_9 }, 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci /* 0x0a 0x00 0x17 * 4962306a36Sopenharmony_ci * RECALL 0 +100 * 5062306a36Sopenharmony_ci * PLUS * 5162306a36Sopenharmony_ci * */ 5262306a36Sopenharmony_ci { 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */ 5362306a36Sopenharmony_ci { 0x00, KEY_NUMERIC_0 }, 5462306a36Sopenharmony_ci { 0x17, KEY_DIGITS }, /*XXX*/ 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci /* 0x14 0x10 * 5762306a36Sopenharmony_ci * MENU INFO * 5862306a36Sopenharmony_ci * OSD */ 5962306a36Sopenharmony_ci { 0x14, KEY_MENU }, 6062306a36Sopenharmony_ci { 0x10, KEY_INFO }, 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci /* 0x0b * 6362306a36Sopenharmony_ci * Up * 6462306a36Sopenharmony_ci * * 6562306a36Sopenharmony_ci * 0x18 0x16 0x0c * 6662306a36Sopenharmony_ci * Left Ok Right * 6762306a36Sopenharmony_ci * * 6862306a36Sopenharmony_ci * 0x015 * 6962306a36Sopenharmony_ci * Down * 7062306a36Sopenharmony_ci * */ 7162306a36Sopenharmony_ci { 0x0b, KEY_UP }, 7262306a36Sopenharmony_ci { 0x18, KEY_LEFT }, 7362306a36Sopenharmony_ci { 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */ 7462306a36Sopenharmony_ci { 0x0c, KEY_RIGHT }, 7562306a36Sopenharmony_ci { 0x15, KEY_DOWN }, 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci /* 0x11 0x0d * 7862306a36Sopenharmony_ci * TV/AV MODE * 7962306a36Sopenharmony_ci * SOURCE STEREO * 8062306a36Sopenharmony_ci * */ 8162306a36Sopenharmony_ci { 0x11, KEY_TV }, /*XXX*/ 8262306a36Sopenharmony_ci { 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */ 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci /* 0x0f 0x1b 0x1a * 8562306a36Sopenharmony_ci * AUDIO Vol+ Chan+ * 8662306a36Sopenharmony_ci * TIMESHIFT??? * 8762306a36Sopenharmony_ci * * 8862306a36Sopenharmony_ci * 0x0e 0x1f 0x1e * 8962306a36Sopenharmony_ci * SLEEP Vol- Chan- * 9062306a36Sopenharmony_ci * */ 9162306a36Sopenharmony_ci { 0x0f, KEY_AUDIO }, 9262306a36Sopenharmony_ci { 0x1b, KEY_VOLUMEUP }, 9362306a36Sopenharmony_ci { 0x1a, KEY_CHANNELUP }, 9462306a36Sopenharmony_ci { 0x0e, KEY_TIME }, 9562306a36Sopenharmony_ci { 0x1f, KEY_VOLUMEDOWN }, 9662306a36Sopenharmony_ci { 0x1e, KEY_CHANNELDOWN }, 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci /* 0x13 0x19 * 9962306a36Sopenharmony_ci * MUTE SNAPSHOT* 10062306a36Sopenharmony_ci * */ 10162306a36Sopenharmony_ci { 0x13, KEY_MUTE }, 10262306a36Sopenharmony_ci { 0x19, KEY_CAMERA }, 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci /* 0x1d unused ? */ 10562306a36Sopenharmony_ci}; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cistatic struct rc_map_list manli_map = { 10862306a36Sopenharmony_ci .map = { 10962306a36Sopenharmony_ci .scan = manli, 11062306a36Sopenharmony_ci .size = ARRAY_SIZE(manli), 11162306a36Sopenharmony_ci .rc_proto = RC_PROTO_UNKNOWN, /* Legacy IR type */ 11262306a36Sopenharmony_ci .name = RC_MAP_MANLI, 11362306a36Sopenharmony_ci } 11462306a36Sopenharmony_ci}; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_cistatic int __init init_rc_map_manli(void) 11762306a36Sopenharmony_ci{ 11862306a36Sopenharmony_ci return rc_map_register(&manli_map); 11962306a36Sopenharmony_ci} 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_cistatic void __exit exit_rc_map_manli(void) 12262306a36Sopenharmony_ci{ 12362306a36Sopenharmony_ci rc_map_unregister(&manli_map); 12462306a36Sopenharmony_ci} 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_cimodule_init(init_rc_map_manli) 12762306a36Sopenharmony_cimodule_exit(exit_rc_map_manli) 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 13062306a36Sopenharmony_ciMODULE_AUTHOR("Mauro Carvalho Chehab"); 131