[mythtv-users] usb-xboxir.h
Kirby Vandivort
kvandivo at ks.uiuc.edu
Sun Aug 3 17:03:16 EDT 2003
I've attached the one I use. I'm not saying it's the best or
anything...
I'd still love to get that patch that fixes the double keypresses on
the remote. I had mailed the guy a while back for it but haven't heard
anything yet that I recall.
On Sun, Aug 03, 2003 at 03:35:44PM -0500, James S. White wrote:
> Does anyone on the list have a usb-xboxir.h that works with mythtv?
>
> --------------------------------------------------------------
> James S. White GAPS Incorporated
> james at jameswhite.org Electrical Engineer - Etc.
> http://www.jameswhite.org Caffeine is my anti-drug.
> --------------------------------------------------------------
> I can picture in my mind a world without war, a world without hate.
> And I can picture us attacking that world, because they'd never expect it.
> -Jack Handy
>
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
--
Kirby Vandivort Theoretical and Computational Biophysics
Email: kvandivo at ks.uiuc.edu 3051 Beckman Institute
http://www.ks.uiuc.edu/~kvandivo/ University of Illinois
Phone: (217) 244-5711 405 N. Mathews Ave
Fax : (217) 244-6078 Urbana, IL 61801, USA
-------------- next part --------------
/*
* $Id: usb-xboxir.h,v 1.3 2002/12/02 23:04:58 oliverschwartz Exp $
*
* Copyright (c) 2002 Steven Toth
*
*/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Should you need to contact me, the author, you can do so either by
* e-mail - mail your message to <steve at toth.demon.co.uk>.
*/
#ifndef USB_XBOX_IR_H
#define USB_XBOX_IR_H
/* These are all the XBOX remote control keys (and their unique codes).
* These are stored in a lookup table and translated into HID keyboard events
*/
#define RC_KEY_SELECT 0x0b
#define RC_KEY_UP 0xa6
#define RC_KEY_DOWN 0xa7
#define RC_KEY_RIGHT 0xa8
#define RC_KEY_LEFT 0xa9
#define RC_KEY_INFO 0xc3
#define RC_KEY_9 0xc6
#define RC_KEY_8 0xc7
#define RC_KEY_7 0xc8
#define RC_KEY_6 0xc9
#define RC_KEY_5 0xca
#define RC_KEY_4 0xcb
#define RC_KEY_3 0xcc
#define RC_KEY_2 0xcd
#define RC_KEY_1 0xce
#define RC_KEY_0 0xcf
#define RC_KEY_DISPLAY 0xd5
#define RC_KEY_BACK 0xd8
#define RC_KEY_SKIPF 0xdd
#define RC_KEY_SKIPB 0xdf
#define RC_KEY_STOP 0xe0
#define RC_KEY_REW 0xe2
#define RC_KEY_FWD 0xe3
#define RC_KEY_TITLE 0xe5
#define RC_KEY_PAUSE 0xe6
#define RC_KEY_PLAY 0xea
#define RC_KEY_MENU 0xf7
struct t_rc_kbd_matrix {
unsigned char rc_code;
unsigned int kbd_code;
};
#ifdef MODULE
/* An ORDERED table (rc_code) to enabling XBOX codes to be translated into HID keyboard codes */
static struct {
unsigned char rc_code;
unsigned int kbd_code;
} rc_kbd_matrix[] = {
{ RC_KEY_SELECT, KEY_ENTER },
{ RC_KEY_UP, KEY_UP },
{ RC_KEY_DOWN, KEY_DOWN },
{ RC_KEY_RIGHT, KEY_RIGHT },
{ RC_KEY_LEFT, KEY_LEFT },
{ RC_KEY_INFO, KEY_I },
{ RC_KEY_9, KEY_9 },
{ RC_KEY_8, KEY_8 },
{ RC_KEY_7, KEY_7 },
{ RC_KEY_6, KEY_6 },
{ RC_KEY_5, KEY_5 },
{ RC_KEY_4, KEY_4 },
{ RC_KEY_3, KEY_3 },
{ RC_KEY_2, KEY_2 },
{ RC_KEY_1, KEY_1 },
{ RC_KEY_0, KEY_0 },
{ RC_KEY_DISPLAY, KEY_F1 },
{ RC_KEY_BACK, KEY_ESC },
{ RC_KEY_SKIPF, KEY_Q },
{ RC_KEY_SKIPB, KEY_Z },
{ RC_KEY_STOP, KEY_ESC },
{ RC_KEY_REW, KEY_PAGEUP },
{ RC_KEY_FWD, KEY_PAGEDOWN },
{ RC_KEY_TITLE, KEY_TAB },
{ RC_KEY_PAUSE, KEY_P },
{ RC_KEY_PLAY, KEY_P },
{ RC_KEY_MENU, KEY_M },
{ 0,0 }
};
/*
static struct {
unsigned char rc_code;
unsigned int kbd_code;
} rc_kbd_matrix[] = {
{ RC_KEY_SELECT, KEY_ENTER },
{ RC_KEY_UP, KEY_UP },
{ RC_KEY_DOWN, KEY_DOWN },
{ RC_KEY_RIGHT, KEY_RIGHT },
{ RC_KEY_LEFT, KEY_LEFT },
{ RC_KEY_INFO, KEY_HELP },
{ RC_KEY_9, KEY_9 },
{ RC_KEY_8, KEY_8 },
{ RC_KEY_7, KEY_7 },
{ RC_KEY_6, KEY_6 },
{ RC_KEY_5, KEY_5 },
{ RC_KEY_4, KEY_4 },
{ RC_KEY_3, KEY_3 },
{ RC_KEY_2, KEY_2 },
{ RC_KEY_1, KEY_1 },
{ RC_KEY_0, KEY_0 },
{ RC_KEY_DISPLAY, KEY_HELP },
{ RC_KEY_BACK, KEY_BACK },
{ RC_KEY_SKIPF, KEY_PREVIOUSSONG },
{ RC_KEY_SKIPB, KEY_NEXTSONG },
{ RC_KEY_STOP, KEY_STOPCD },
{ RC_KEY_REW, KEY_REWIND },
{ RC_KEY_FWD, KEY_FORWARD },
{ RC_KEY_TITLE, KEY_MENU },
{ RC_KEY_PAUSE, KEY_PAUSECD },
{ RC_KEY_PLAY, KEY_PLAYCD },
{ RC_KEY_MENU, KEY_MENU },
{ 0,0 }
};
*/
struct usb_xboxir {
struct input_dev dev;
struct usb_device *usbdev;
unsigned char irpkt[8];
unsigned int previous_kbd_code;
struct urb irq;
struct usb_ctrlrequest dr;
char name[128];
int open;
};
#endif
/* Configure the ioctl stuff */
#define XBOXIR_IOC_MAGIC 's'
#define XBOXIR_IOCRESET _IO(XBOXIR_IOC_MAGIC, 0)
#define XBOXIR_IOCSQSET _IOW(XBOXIR_IOC_MAGIC, 1, int) // userland writes to device
#define XBOXIR_IOCSQGET _IOR(XBOXIR_IOC_MAGIC, 2, int) // userland reads from device
#define XBOXIR_IOC_MAXNR 2
struct {
char *name;
unsigned char code;
} rckeys[] = {
{"RC_KEY_SELECT", RC_KEY_SELECT},
{"RC_KEY_UP", RC_KEY_UP},
{"RC_KEY_DOWN", RC_KEY_DOWN},
{"RC_KEY_RIGHT", RC_KEY_RIGHT},
{"RC_KEY_LEFT", RC_KEY_LEFT},
{"RC_KEY_INFO", RC_KEY_INFO},
{"RC_KEY_9", RC_KEY_9},
{"RC_KEY_8", RC_KEY_8},
{"RC_KEY_7", RC_KEY_7},
{"RC_KEY_6", RC_KEY_6},
{"RC_KEY_5", RC_KEY_5},
{"RC_KEY_4", RC_KEY_4},
{"RC_KEY_3", RC_KEY_3},
{"RC_KEY_2", RC_KEY_2},
{"RC_KEY_1", RC_KEY_1},
{"RC_KEY_0", RC_KEY_0},
{"RC_KEY_DISPLAY", RC_KEY_DISPLAY},
{"RC_KEY_BACK", RC_KEY_BACK},
{"RC_KEY_SKIPF", RC_KEY_SKIPF},
{"RC_KEY_SKIPB", RC_KEY_SKIPB},
{"RC_KEY_STOP", RC_KEY_STOP},
{"RC_KEY_REW", RC_KEY_REW},
{"RC_KEY_FWD", RC_KEY_FWD},
{"RC_KEY_TITLE", RC_KEY_TITLE},
{"RC_KEY_PAUSE", RC_KEY_PAUSE},
{"RC_KEY_PLAY", RC_KEY_PLAY},
{"RC_KEY_MENU", RC_KEY_MENU},
{NULL, 0},
};
struct t_ult_hidkeys {
char *name;
unsigned int code;
} hidkeys[] = {
{"KEY_RESERVED", KEY_RESERVED},
{"KEY_ESC", KEY_ESC},
{"KEY_1", KEY_1},
{"KEY_2", KEY_2},
{"KEY_3", KEY_3},
{"KEY_4", KEY_4},
{"KEY_5", KEY_5},
{"KEY_6", KEY_6},
{"KEY_7", KEY_7},
{"KEY_8", KEY_8},
{"KEY_9", KEY_9},
{"KEY_0", KEY_0},
{"KEY_MINUS", KEY_MINUS},
{"KEY_EQUAL", KEY_EQUAL},
{"KEY_BACKSPACE", KEY_BACKSPACE},
{"KEY_TAB", KEY_TAB},
{"KEY_Q", KEY_Q},
{"KEY_W", KEY_W},
{"KEY_E", KEY_E},
{"KEY_R", KEY_R},
{"KEY_T", KEY_T},
{"KEY_Y", KEY_Y},
{"KEY_U", KEY_U},
{"KEY_I", KEY_I},
{"KEY_O", KEY_O},
{"KEY_P", KEY_P},
{"KEY_LEFTBRACE", KEY_LEFTBRACE},
{"KEY_RIGHTBRACE", KEY_RIGHTBRACE},
{"KEY_ENTER", KEY_ENTER},
{"KEY_LEFTCTRL", KEY_LEFTCTRL},
{"KEY_A", KEY_A},
{"KEY_S", KEY_S},
{"KEY_D", KEY_D},
{"KEY_F", KEY_F},
{"KEY_G", KEY_G},
{"KEY_H", KEY_H},
{"KEY_J", KEY_J},
{"KEY_K", KEY_K},
{"KEY_L", KEY_L},
{"KEY_SEMICOLON", KEY_SEMICOLON},
{"KEY_APOSTROPHE", KEY_APOSTROPHE},
{"KEY_GRAVE", KEY_GRAVE},
{"KEY_LEFTSHIFT", KEY_LEFTSHIFT},
{"KEY_BACKSLASH", KEY_BACKSLASH},
{"KEY_Z", KEY_Z},
{"KEY_X", KEY_X},
{"KEY_C", KEY_C},
{"KEY_V", KEY_V},
{"KEY_B", KEY_B},
{"KEY_N", KEY_N},
{"KEY_M", KEY_M},
{"KEY_COMMA", KEY_COMMA},
{"KEY_DOT", KEY_DOT},
{"KEY_SLASH", KEY_SLASH},
{"KEY_RIGHTSHIFT", KEY_RIGHTSHIFT},
{"KEY_KPASTERISK", KEY_KPASTERISK},
{"KEY_LEFTALT", KEY_LEFTALT},
{"KEY_SPACE", KEY_SPACE},
{"KEY_CAPSLOCK", KEY_CAPSLOCK},
{"KEY_F1", KEY_F1},
{"KEY_F2", KEY_F2},
{"KEY_F3", KEY_F3},
{"KEY_F4", KEY_F4},
{"KEY_F5", KEY_F5},
{"KEY_F6", KEY_F6},
{"KEY_F7", KEY_F7},
{"KEY_F8", KEY_F8},
{"KEY_F9", KEY_F9},
{"KEY_F10", KEY_F10},
{"KEY_NUMLOCK", KEY_NUMLOCK},
{"KEY_SCROLLLOCK", KEY_SCROLLLOCK},
{"KEY_KP7", KEY_KP7},
{"KEY_KP8", KEY_KP8},
{"KEY_KP9", KEY_KP9},
{"KEY_KPMINUS", KEY_KPMINUS},
{"KEY_KP4", KEY_KP4},
{"KEY_KP5", KEY_KP5},
{"KEY_KP6", KEY_KP6},
{"KEY_KPPLUS", KEY_KPPLUS},
{"KEY_KP1", KEY_KP1},
{"KEY_KP2", KEY_KP2},
{"KEY_KP3", KEY_KP3},
{"KEY_KP0", KEY_KP0},
{"KEY_KPDOT", KEY_KPDOT},
{"KEY_103RD", KEY_103RD},
{"KEY_F13", KEY_F13},
{"KEY_102ND", KEY_102ND},
{"KEY_F11", KEY_F11},
{"KEY_F12", KEY_F12},
{"KEY_F14", KEY_F14},
{"KEY_F15", KEY_F15},
{"KEY_F16", KEY_F16},
{"KEY_F17", KEY_F17},
{"KEY_F18", KEY_F18},
{"KEY_F19", KEY_F19},
{"KEY_F20", KEY_F20},
{"KEY_KPENTER", KEY_KPENTER},
{"KEY_RIGHTCTRL", KEY_RIGHTCTRL},
{"KEY_KPSLASH", KEY_KPSLASH},
{"KEY_SYSRQ", KEY_SYSRQ},
{"KEY_RIGHTALT", KEY_RIGHTALT},
{"KEY_LINEFEED", KEY_LINEFEED},
{"KEY_HOME", KEY_HOME},
{"KEY_UP", KEY_UP},
{"KEY_PAGEUP", KEY_PAGEUP},
{"KEY_LEFT", KEY_LEFT},
{"KEY_RIGHT", KEY_RIGHT},
{"KEY_END", KEY_END},
{"KEY_DOWN", KEY_DOWN},
{"KEY_PAGEDOWN", KEY_PAGEDOWN},
{"KEY_INSERT", KEY_INSERT},
{"KEY_DELETE", KEY_DELETE},
{"KEY_MACRO", KEY_MACRO},
{"KEY_MUTE", KEY_MUTE},
{"KEY_VOLUMEDOWN", KEY_VOLUMEDOWN},
{"KEY_VOLUMEUP", KEY_VOLUMEUP},
{"KEY_POWER", KEY_POWER},
{"KEY_KPEQUAL", KEY_KPEQUAL},
{"KEY_KPPLUSMINUS", KEY_KPPLUSMINUS},
{"KEY_PAUSE", KEY_PAUSE},
{"KEY_F21", KEY_F21},
{"KEY_F22", KEY_F22},
{"KEY_F23", KEY_F23},
{"KEY_F24", KEY_F24},
{"KEY_KPCOMMA", KEY_KPCOMMA},
{"KEY_LEFTMETA", KEY_LEFTMETA},
{"KEY_RIGHTMETA", KEY_RIGHTMETA},
{"KEY_COMPOSE", KEY_COMPOSE},
{"KEY_STOP", KEY_STOP},
{"KEY_AGAIN", KEY_AGAIN},
{"KEY_PROPS", KEY_PROPS},
{"KEY_UNDO", KEY_UNDO},
{"KEY_FRONT", KEY_FRONT},
{"KEY_COPY", KEY_COPY},
{"KEY_OPEN", KEY_OPEN},
{"KEY_PASTE", KEY_PASTE},
{"KEY_FIND", KEY_FIND},
{"KEY_CUT", KEY_CUT},
{"KEY_HELP", KEY_HELP},
{"KEY_MENU", KEY_MENU},
{"KEY_CALC", KEY_CALC},
{"KEY_SETUP", KEY_SETUP},
{"KEY_SLEEP", KEY_SLEEP},
{"KEY_WAKEUP", KEY_WAKEUP},
{"KEY_FILE", KEY_FILE},
{"KEY_SENDFILE", KEY_SENDFILE},
{"KEY_DELETEFILE", KEY_DELETEFILE},
{"KEY_XFER", KEY_XFER},
{"KEY_PROG1", KEY_PROG1},
{"KEY_PROG2", KEY_PROG2},
{"KEY_WWW", KEY_WWW},
{"KEY_MSDOS", KEY_MSDOS},
{"KEY_COFFEE", KEY_COFFEE},
{"KEY_DIRECTION", KEY_DIRECTION},
{"KEY_CYCLEWINDOWS", KEY_CYCLEWINDOWS},
{"KEY_MAIL", KEY_MAIL},
{"KEY_BOOKMARKS", KEY_BOOKMARKS},
{"KEY_COMPUTER", KEY_COMPUTER},
{"KEY_BACK", KEY_BACK},
{"KEY_FORWARD", KEY_FORWARD},
{"KEY_CLOSECD", KEY_CLOSECD},
{"KEY_EJECTCD", KEY_EJECTCD},
{"KEY_EJECTCLOSECD", KEY_EJECTCLOSECD},
{"KEY_NEXTSONG", KEY_NEXTSONG},
{"KEY_PLAYPAUSE", KEY_PLAYPAUSE},
{"KEY_PREVIOUSSONG", KEY_PREVIOUSSONG},
{"KEY_STOPCD", KEY_STOPCD},
{"KEY_RECORD", KEY_RECORD},
{"KEY_REWIND", KEY_REWIND},
{"KEY_PHONE", KEY_PHONE},
{"KEY_ISO", KEY_ISO},
{"KEY_CONFIG", KEY_CONFIG},
{"KEY_HOMEPAGE", KEY_HOMEPAGE},
{"KEY_REFRESH", KEY_REFRESH},
{"KEY_EXIT", KEY_EXIT},
{"KEY_MOVE", KEY_MOVE},
{"KEY_EDIT", KEY_EDIT},
{"KEY_SCROLLUP", KEY_SCROLLUP},
{"KEY_SCROLLDOWN", KEY_SCROLLDOWN},
{"KEY_KPLEFTPAREN", KEY_KPLEFTPAREN},
{"KEY_KPRIGHTPAREN", KEY_KPRIGHTPAREN},
{"KEY_INTL1", KEY_INTL1},
{"KEY_INTL2", KEY_INTL2},
{"KEY_INTL3", KEY_INTL3},
{"KEY_INTL4", KEY_INTL4},
{"KEY_INTL5", KEY_INTL5},
{"KEY_INTL6", KEY_INTL6},
{"KEY_INTL7", KEY_INTL7},
{"KEY_INTL8", KEY_INTL8},
{"KEY_INTL9", KEY_INTL9},
{"KEY_LANG1", KEY_LANG1},
{"KEY_LANG2", KEY_LANG2},
{"KEY_LANG3", KEY_LANG3},
{"KEY_LANG4", KEY_LANG4},
{"KEY_LANG5", KEY_LANG5},
{"KEY_LANG6", KEY_LANG6},
{"KEY_LANG7", KEY_LANG7},
{"KEY_LANG8", KEY_LANG8},
{"KEY_LANG9", KEY_LANG9},
{"KEY_PLAYCD", KEY_PLAYCD},
{"KEY_PAUSECD", KEY_PAUSECD},
{"KEY_PROG3", KEY_PROG3},
{"KEY_PROG4", KEY_PROG4},
{"KEY_SUSPEND", KEY_SUSPEND},
{"KEY_CLOSE", KEY_CLOSE},
{"KEY_UNKNOWN", KEY_UNKNOWN},
{"KEY_BRIGHTNESSDOWN", KEY_BRIGHTNESSDOWN},
{"KEY_BRIGHTNESSUP", KEY_BRIGHTNESSUP},
{"KEY_MAX", KEY_MAX},
{NULL, 0},
};
#endif
More information about the mythtv-users
mailing list