[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