Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 // rc-hauppauge.c - Keytable for Hauppauge Remote Controllers
0003 //
0004 // keymap imported from ir-keymaps.c
0005 //
0006 // This map currently contains the code for four different RCs:
0007 //  - New Hauppauge Gray;
0008 //  - Old Hauppauge Gray (with a golden screen for media keys);
0009 //  - Hauppauge Black;
0010 //  - DSR-0112 remote bundled with Haupauge MiniStick.
0011 //
0012 // Copyright (c) 2010-2011 by Mauro Carvalho Chehab
0013 
0014 #include <media/rc-map.h>
0015 #include <linux/module.h>
0016 
0017 /*
0018  * Hauppauge:the newer, gray remotes (seems there are multiple
0019  * slightly different versions), shipped with cx88+ivtv cards.
0020  *
0021  * This table contains the complete RC5 code, instead of just the data part
0022  */
0023 
0024 static struct rc_map_table rc5_hauppauge_new[] = {
0025     /*
0026      * Remote Controller Hauppauge Gray found on modern devices
0027      * Keycodes start with address = 0x1e
0028      */
0029 
0030     { 0x1e3b, KEY_SELECT },     /* GO / house symbol */
0031     { 0x1e3d, KEY_POWER2 },     /* system power (green button) */
0032 
0033     { 0x1e1c, KEY_TV },
0034     { 0x1e18, KEY_VIDEO },      /* Videos */
0035     { 0x1e19, KEY_AUDIO },      /* Music */
0036     { 0x1e1a, KEY_CAMERA },     /* Pictures */
0037 
0038     { 0x1e1b, KEY_EPG },        /* Guide */
0039     { 0x1e0c, KEY_RADIO },
0040 
0041     { 0x1e14, KEY_UP },
0042     { 0x1e15, KEY_DOWN },
0043     { 0x1e16, KEY_LEFT },
0044     { 0x1e17, KEY_RIGHT },
0045     { 0x1e25, KEY_OK },     /* OK */
0046 
0047     { 0x1e1f, KEY_EXIT },       /* back/exit */
0048     { 0x1e0d, KEY_MENU },
0049 
0050     { 0x1e10, KEY_VOLUMEUP },
0051     { 0x1e11, KEY_VOLUMEDOWN },
0052 
0053     { 0x1e12, KEY_PREVIOUS },   /* previous channel */
0054     { 0x1e0f, KEY_MUTE },
0055 
0056     { 0x1e20, KEY_CHANNELUP },  /* channel / program + */
0057     { 0x1e21, KEY_CHANNELDOWN },    /* channel / program - */
0058 
0059     { 0x1e37, KEY_RECORD },     /* recording */
0060     { 0x1e36, KEY_STOP },
0061 
0062     { 0x1e32, KEY_REWIND },     /* backward << */
0063     { 0x1e35, KEY_PLAY },
0064     { 0x1e34, KEY_FASTFORWARD },    /* forward >> */
0065 
0066     { 0x1e24, KEY_PREVIOUSSONG },   /* replay |< */
0067     { 0x1e30, KEY_PAUSE },      /* pause */
0068     { 0x1e1e, KEY_NEXTSONG },   /* skip >| */
0069 
0070     { 0x1e01, KEY_NUMERIC_1 },
0071     { 0x1e02, KEY_NUMERIC_2 },
0072     { 0x1e03, KEY_NUMERIC_3 },
0073 
0074     { 0x1e04, KEY_NUMERIC_4 },
0075     { 0x1e05, KEY_NUMERIC_5 },
0076     { 0x1e06, KEY_NUMERIC_6 },
0077 
0078     { 0x1e07, KEY_NUMERIC_7 },
0079     { 0x1e08, KEY_NUMERIC_8 },
0080     { 0x1e09, KEY_NUMERIC_9 },
0081 
0082     { 0x1e0a, KEY_TEXT },       /* keypad asterisk as well */
0083     { 0x1e00, KEY_NUMERIC_0 },
0084     { 0x1e0e, KEY_SUBTITLE },   /* also the Pound key (#) */
0085 
0086     { 0x1e0b, KEY_RED },        /* red button */
0087     { 0x1e2e, KEY_GREEN },      /* green button */
0088     { 0x1e38, KEY_YELLOW },     /* yellow key */
0089     { 0x1e29, KEY_BLUE },       /* blue key */
0090 
0091     /*
0092      * Old Remote Controller Hauppauge Gray with a golden screen
0093      * Keycodes start with address = 0x1f
0094      */
0095     { 0x1f3d, KEY_POWER2 },     /* system power (green button) */
0096     { 0x1f3b, KEY_SELECT },     /* GO */
0097 
0098     /* Keys 0 to 9 */
0099     { 0x1f00, KEY_NUMERIC_0 },
0100     { 0x1f01, KEY_NUMERIC_1 },
0101     { 0x1f02, KEY_NUMERIC_2 },
0102     { 0x1f03, KEY_NUMERIC_3 },
0103     { 0x1f04, KEY_NUMERIC_4 },
0104     { 0x1f05, KEY_NUMERIC_5 },
0105     { 0x1f06, KEY_NUMERIC_6 },
0106     { 0x1f07, KEY_NUMERIC_7 },
0107     { 0x1f08, KEY_NUMERIC_8 },
0108     { 0x1f09, KEY_NUMERIC_9 },
0109 
0110     { 0x1f1f, KEY_EXIT },       /* back/exit */
0111     { 0x1f0d, KEY_MENU },
0112 
0113     { 0x1f10, KEY_VOLUMEUP },
0114     { 0x1f11, KEY_VOLUMEDOWN },
0115     { 0x1f20, KEY_CHANNELUP },  /* channel / program + */
0116     { 0x1f21, KEY_CHANNELDOWN },    /* channel / program - */
0117     { 0x1f25, KEY_ENTER },      /* OK */
0118 
0119     { 0x1f0b, KEY_RED },        /* red button */
0120     { 0x1f2e, KEY_GREEN },      /* green button */
0121     { 0x1f38, KEY_YELLOW },     /* yellow key */
0122     { 0x1f29, KEY_BLUE },       /* blue key */
0123 
0124     { 0x1f0f, KEY_MUTE },
0125     { 0x1f0c, KEY_RADIO },      /* There's no indicator on this key */
0126     { 0x1f3c, KEY_ZOOM },       /* full */
0127 
0128     { 0x1f32, KEY_REWIND },     /* backward << */
0129     { 0x1f35, KEY_PLAY },
0130     { 0x1f34, KEY_FASTFORWARD },    /* forward >> */
0131 
0132     { 0x1f37, KEY_RECORD },     /* recording */
0133     { 0x1f36, KEY_STOP },
0134     { 0x1f30, KEY_PAUSE },      /* pause */
0135 
0136     { 0x1f24, KEY_PREVIOUSSONG },   /* replay |< */
0137     { 0x1f1e, KEY_NEXTSONG },   /* skip >| */
0138 
0139     /*
0140      * Keycodes for DSR-0112 remote bundled with Haupauge MiniStick
0141      * Keycodes start with address = 0x1d
0142      */
0143     { 0x1d00, KEY_NUMERIC_0 },
0144     { 0x1d01, KEY_NUMERIC_1 },
0145     { 0x1d02, KEY_NUMERIC_2 },
0146     { 0x1d03, KEY_NUMERIC_3 },
0147     { 0x1d04, KEY_NUMERIC_4 },
0148     { 0x1d05, KEY_NUMERIC_5 },
0149     { 0x1d06, KEY_NUMERIC_6 },
0150     { 0x1d07, KEY_NUMERIC_7 },
0151     { 0x1d08, KEY_NUMERIC_8 },
0152     { 0x1d09, KEY_NUMERIC_9 },
0153     { 0x1d0a, KEY_TEXT },
0154     { 0x1d0d, KEY_MENU },
0155     { 0x1d0f, KEY_MUTE },
0156     { 0x1d10, KEY_VOLUMEUP },
0157     { 0x1d11, KEY_VOLUMEDOWN },
0158     { 0x1d12, KEY_PREVIOUS },        /* Prev.Ch .. ??? */
0159     { 0x1d14, KEY_UP },
0160     { 0x1d15, KEY_DOWN },
0161     { 0x1d16, KEY_LEFT },
0162     { 0x1d17, KEY_RIGHT },
0163     { 0x1d1c, KEY_TV },
0164     { 0x1d1e, KEY_NEXT },           /* >|             */
0165     { 0x1d1f, KEY_EXIT },
0166     { 0x1d20, KEY_CHANNELUP },
0167     { 0x1d21, KEY_CHANNELDOWN },
0168     { 0x1d24, KEY_LAST },           /* <|             */
0169     { 0x1d25, KEY_OK },
0170     { 0x1d30, KEY_PAUSE },
0171     { 0x1d32, KEY_REWIND },
0172     { 0x1d34, KEY_FASTFORWARD },
0173     { 0x1d35, KEY_PLAY },
0174     { 0x1d36, KEY_STOP },
0175     { 0x1d37, KEY_RECORD },
0176     { 0x1d3b, KEY_GOTO },
0177     { 0x1d3d, KEY_POWER },
0178     { 0x1d3f, KEY_HOME },
0179 
0180     /*
0181      * Keycodes for PT# R-005 remote bundled with Haupauge HVR-930C
0182      * Keycodes start with address = 0x1c
0183      */
0184     { 0x1c3b, KEY_GOTO },
0185     { 0x1c3d, KEY_POWER },
0186 
0187     { 0x1c14, KEY_UP },
0188     { 0x1c15, KEY_DOWN },
0189     { 0x1c16, KEY_LEFT },
0190     { 0x1c17, KEY_RIGHT },
0191     { 0x1c25, KEY_OK },
0192 
0193     { 0x1c00, KEY_NUMERIC_0 },
0194     { 0x1c01, KEY_NUMERIC_1 },
0195     { 0x1c02, KEY_NUMERIC_2 },
0196     { 0x1c03, KEY_NUMERIC_3 },
0197     { 0x1c04, KEY_NUMERIC_4 },
0198     { 0x1c05, KEY_NUMERIC_5 },
0199     { 0x1c06, KEY_NUMERIC_6 },
0200     { 0x1c07, KEY_NUMERIC_7 },
0201     { 0x1c08, KEY_NUMERIC_8 },
0202     { 0x1c09, KEY_NUMERIC_9 },
0203 
0204     { 0x1c1f, KEY_EXIT },   /* BACK */
0205     { 0x1c0d, KEY_MENU },
0206     { 0x1c1c, KEY_TV },
0207 
0208     { 0x1c10, KEY_VOLUMEUP },
0209     { 0x1c11, KEY_VOLUMEDOWN },
0210 
0211     { 0x1c20, KEY_CHANNELUP },
0212     { 0x1c21, KEY_CHANNELDOWN },
0213 
0214     { 0x1c0f, KEY_MUTE },
0215     { 0x1c12, KEY_PREVIOUS }, /* Prev */
0216 
0217     { 0x1c36, KEY_STOP },
0218     { 0x1c37, KEY_RECORD },
0219 
0220     { 0x1c24, KEY_LAST },           /* <|             */
0221     { 0x1c1e, KEY_NEXT },           /* >|             */
0222 
0223     { 0x1c0a, KEY_TEXT },
0224     { 0x1c0e, KEY_SUBTITLE },   /* CC */
0225 
0226     { 0x1c32, KEY_REWIND },
0227     { 0x1c30, KEY_PAUSE },
0228     { 0x1c35, KEY_PLAY },
0229     { 0x1c34, KEY_FASTFORWARD },
0230 
0231     /*
0232      * Keycodes for the old Black Remote Controller
0233      * This one also uses RC-5 protocol
0234      * Keycodes start with address = 0x00
0235      */
0236     { 0x000f, KEY_TV },
0237     { 0x001f, KEY_TV },
0238     { 0x0020, KEY_CHANNELUP },
0239     { 0x000c, KEY_RADIO },
0240 
0241     { 0x0011, KEY_VOLUMEDOWN },
0242     { 0x002e, KEY_ZOOM },       /* full screen */
0243     { 0x0010, KEY_VOLUMEUP },
0244 
0245     { 0x000d, KEY_MUTE },
0246     { 0x0021, KEY_CHANNELDOWN },
0247     { 0x0022, KEY_VIDEO },      /* source */
0248 
0249     { 0x0001, KEY_NUMERIC_1 },
0250     { 0x0002, KEY_NUMERIC_2 },
0251     { 0x0003, KEY_NUMERIC_3 },
0252 
0253     { 0x0004, KEY_NUMERIC_4 },
0254     { 0x0005, KEY_NUMERIC_5 },
0255     { 0x0006, KEY_NUMERIC_6 },
0256 
0257     { 0x0007, KEY_NUMERIC_7 },
0258     { 0x0008, KEY_NUMERIC_8 },
0259     { 0x0009, KEY_NUMERIC_9 },
0260 
0261     { 0x001e, KEY_RED },    /* Reserved */
0262     { 0x0000, KEY_NUMERIC_0 },
0263     { 0x0026, KEY_SLEEP },  /* Minimize */
0264 };
0265 
0266 static struct rc_map_list rc5_hauppauge_new_map = {
0267     .map = {
0268         .scan     = rc5_hauppauge_new,
0269         .size     = ARRAY_SIZE(rc5_hauppauge_new),
0270         .rc_proto = RC_PROTO_RC5,
0271         .name     = RC_MAP_HAUPPAUGE,
0272     }
0273 };
0274 
0275 static int __init init_rc_map_rc5_hauppauge_new(void)
0276 {
0277     return rc_map_register(&rc5_hauppauge_new_map);
0278 }
0279 
0280 static void __exit exit_rc_map_rc5_hauppauge_new(void)
0281 {
0282     rc_map_unregister(&rc5_hauppauge_new_map);
0283 }
0284 
0285 module_init(init_rc_map_rc5_hauppauge_new)
0286 module_exit(exit_rc_map_rc5_hauppauge_new)
0287 
0288 MODULE_LICENSE("GPL");
0289 MODULE_AUTHOR("Mauro Carvalho Chehab");