aboutsummaryrefslogtreecommitdiffstats
path: root/util/av7110_loadkeys
diff options
context:
space:
mode:
authorMark Purcell <msp@debian.org>2008-06-22 11:00:40 +1000
committeretobi <git@e-tobi.net>2013-09-03 09:48:42 +0200
commit891c51ff368ed700dec6025eeb47ce4d96f76418 (patch)
tree3729664829e4faa691d403274f38eb10890b533c /util/av7110_loadkeys
parent1c6e1f28f54ec2606c23936c1d8689f2be55a86c (diff)
parentab959d7b4194715870128e616b8e29d4a101e488 (diff)
downloadlinux-dvb-apps-debian/1.1.1+rev1207-1.tar.gz
Imported Debian patch 1.1.1+rev1207-1debian/1.1.1+rev1207-1
Diffstat (limited to '')
-rw-r--r--util/av7110_loadkeys/Makefile69
-rw-r--r--util/av7110_loadkeys/README15
-rw-r--r--util/av7110_loadkeys/activy.rcmm1
-rw-r--r--util/av7110_loadkeys/av7110_loadkeys.c48
-rw-r--r--util/av7110_loadkeys/evtest.c177
-rw-r--r--util/av7110_loadkeys/galaxis.rcmm3
-rw-r--r--util/av7110_loadkeys/generate-keynames.sh37
-rw-r--r--util/av7110_loadkeys/hauppauge.rc51
-rw-r--r--util/av7110_loadkeys/hauppauge2.rc540
-rw-r--r--util/av7110_loadkeys/hauppauge_grey.rc51
-rw-r--r--util/av7110_loadkeys/input_fake.h15
-rw-r--r--util/av7110_loadkeys/philips1358.rc56
12 files changed, 145 insertions, 268 deletions
diff --git a/util/av7110_loadkeys/Makefile b/util/av7110_loadkeys/Makefile
index e83e069..f83b529 100644
--- a/util/av7110_loadkeys/Makefile
+++ b/util/av7110_loadkeys/Makefile
@@ -1,48 +1,23 @@
-CC = gcc
-CFLAGS = -g -Wall -O2
-
-all: av7110_loadkeys evtest
-
-av7110_loadkeys: av7110_loadkeys.o
-
-evtest: evtest.o
-
-av7110_loadkeys.o: av7110_loadkeys.c input_keynames.h
-
-evtest.o: evtest.c input_keynames.h
-
-
-input_keynames.h: /usr/include/linux/input.h input_fake.h
- @echo 'generate $@...'
- @echo '#ifndef __INPUT_KEYNAMES_H__' > $@
- @echo '#define __INPUT_KEYNAMES_H__' >> $@
- @echo '' >> $@
- @echo '#include <linux/input.h>' >> $@
- @echo '' >> $@
- @echo '#if !defined(KEY_OK)' >> $@
- @echo '#include "input_fake.h"' >> $@
- @echo '#endif' >> $@
- @echo '' >> $@
- @echo '' >> $@
- @echo 'struct input_key_name {' >> $@
- @echo ' const char *name;' >> $@
- @echo ' int key;' >> $@
- @echo '};' >> $@
- @echo '' >> $@
- @echo '' >> $@
- @echo 'static struct input_key_name key_name [] = {' >> $@
- @for x in `cat /usr/include/linux/input.h input_fake.h | \
- grep KEY_ | grep "#define" | grep -v KEY_MAX | \
- cut -f 1 | cut -f 2 -d ' ' | sort | uniq` ; do \
- echo " { \"`echo $$x | cut -b 5-`\", $$x }," >> $@ \
- ; \
- done
- @echo '};' >> $@
- @echo '' >> $@
- @echo '#endif /* __INPUT_KEYNAMES_H */' >> $@
- @echo '' >> $@
-
-
-clean:
- $(RM) core* *.o input_keynames.h av7110_loadkeys evtest
+# Makefile for linuxtv.org dvb-apps/util/av7110_loadkeys
+binaries = av7110_loadkeys
+
+inst_bin = $(binaries)
+
+removing = input_keynames.h
+
+.PHONY: all
+
+all: $(binaries)
+
+$(binaries): input_keynames.h
+
+input_keynames.h:
+ $(SHELL) generate-keynames.sh $@
+
+include ../../Make.rules
+
+install::
+ @echo installing av7110 keymaps
+ @mkdir -p $(DESTDIR)$(sharedir)/dvb/av7110_loadkeys
+ @install -m 644 *.rc5 *.rcmm $(DESTDIR)$(sharedir)/dvb/av7110_loadkeys/
diff --git a/util/av7110_loadkeys/README b/util/av7110_loadkeys/README
index b778e9a..e0505dc 100644
--- a/util/av7110_loadkeys/README
+++ b/util/av7110_loadkeys/README
@@ -1,13 +1,13 @@
Hi,
-this is a utility to setup IR control keymaps using the /proc/av7110_ir
+this is a utility to setup IR control keymaps using the /proc/av7110_ir
interface.
-just call
+just call
# ./av7110_loadkeys [-i|--invert] [-a|--address <num>] keymapname.(rc5|rcmm) > /proc/av7110_ir
-If your IR receiver hardware inverts the signal, you should use the -i
+If your IR receiver hardware inverts the signal, you should use the -i
or --invert command line option.
If you have two or more devices which use the same IR protocol, you should
@@ -42,7 +42,7 @@ Keymaps are in format:
------------------------------------------------------------------------
-In order to write a new keymap you might want to see the raw key
+In order to write a new keymap you might want to see the raw key
values in the kernel log. Use
# insmod dvb-ttpci.o av7110_ir_debug=1
@@ -52,13 +52,12 @@ the kernel log while pressing your remote control keys. When you don't see
any messages in your kernel log you should check all electrical connections,
the selected protocol (RC5 or RCMM?) and the inversion setting.
-You find a list of all linux input key identifiers in </usr/include/input.h>
+You find a list of all linux input key identifiers in </usr/include/input.h>
and "./input_fake.h".
-Please post new keymaps on the linux-dvb mailing list or send them to
+Please post new keymaps on the linux-dvb mailing list or send them to
me <holger@convergence.de>.
-have fun!
+have fun!
Holger
-
diff --git a/util/av7110_loadkeys/activy.rcmm b/util/av7110_loadkeys/activy.rcmm
index 372df8e..c7d7280 100644
--- a/util/av7110_loadkeys/activy.rcmm
+++ b/util/av7110_loadkeys/activy.rcmm
@@ -51,4 +51,3 @@
0x31 KEY_STOP
0x20 KEY_NEXT
0x42 KEY_EJECTCD
-
diff --git a/util/av7110_loadkeys/av7110_loadkeys.c b/util/av7110_loadkeys/av7110_loadkeys.c
index e9eeea0..793862f 100644
--- a/util/av7110_loadkeys/av7110_loadkeys.c
+++ b/util/av7110_loadkeys/av7110_loadkeys.c
@@ -33,9 +33,10 @@ void print_error (const char *action, const char *file)
static
int parse_keyname (char *pos, char **nend, int limit)
{
- int cmp, index;
+ int cmp, _index;
int l = 1;
- int r = sizeof (key_name) / sizeof (key_name[0]);
+ const struct input_key_name *kn;
+ int r;
if (limit < 5)
return -1;
@@ -46,7 +47,18 @@ int parse_keyname (char *pos, char **nend, int limit)
limit--;
}
- if (pos [0] != 'K' || pos[1] != 'E' || pos[2] != 'Y' || pos[3] != '_')
+ if (pos[3] != '_')
+ return -2;
+
+ if (pos[0] == 'K' && pos[1] == 'E' && pos[2] == 'Y') {
+ kn = key_name;
+ r = sizeof (key_name) / sizeof (key_name[0]);
+ }
+ else if (pos[0] == 'B' && pos[1] == 'T' && pos[2] == 'N') {
+ kn = btn_name;
+ r = sizeof (btn_name) / sizeof (btn_name[0]);
+ }
+ else
return -2;
(*nend) += 4;
@@ -56,21 +68,21 @@ int parse_keyname (char *pos, char **nend, int limit)
while (r >= l) {
int len0, len1 = 0;
- index = (l + r) / 2;
-
- len0 = strlen(key_name[index-1].name);
+ _index = (l + r) / 2;
+
+ len0 = strlen(kn[_index-1].name);
while (len1 < limit && isgraph(pos[len1]))
len1++;
- cmp = strncmp (key_name[index-1].name, pos,
- strlen(key_name[index-1].name));
-
+ cmp = strncmp (kn[_index-1].name, pos,
+ strlen(kn[_index-1].name));
+
if (len0 < len1 && cmp == 0)
cmp = -1;
if (cmp == 0) {
- *nend = pos + strlen (key_name[index-1].name);
+ *nend = pos + strlen (kn[_index-1].name);
if (**nend != '\n' &&
**nend != '\t' &&
@@ -78,13 +90,13 @@ int parse_keyname (char *pos, char **nend, int limit)
*nend != pos)
return -3;
- return key_name[index-1].key;
+ return kn[_index-1].key;
}
if (cmp < 0)
- l = index + 1;
+ l = _index + 1;
else
- r = index - 1;
+ r = _index - 1;
if (r < l) {
static const char msg [] = "\nunknown key '";
@@ -151,18 +163,18 @@ int main (int argc, char **argv)
while (pos < buf + len) {
int key, keycode;
-
+
while (!isxdigit(*pos) && pos < buf + len)
pos++;
if (pos == buf + len)
break;
-
+
key = strtol (pos, &pos, 0);
keycode = parse_keyname (pos, &pos, buf + len - pos);
if (key < 0 || key > 0xff) {
- const char msg [] =
+ const char msg [] =
"\nERROR: key must be in range 0 ... 0xff!\n\n";
write (0, msg, strlen(msg));
@@ -174,7 +186,7 @@ int main (int argc, char **argv)
setup.keytab[key] = keycode;
}
-
+
munmap (buf, len);
close (fd);
@@ -182,5 +194,3 @@ int main (int argc, char **argv)
return 0;
}
-
-
diff --git a/util/av7110_loadkeys/evtest.c b/util/av7110_loadkeys/evtest.c
deleted file mode 100644
index 6714128..0000000
--- a/util/av7110_loadkeys/evtest.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * $Id: evtest.c,v 1.1 2004/01/17 16:59:46 js Exp $
- *
- * Copyright (c) 1999-2000 Vojtech Pavlik
- *
- * Event device test program
- */
-
-/*
- * 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 <vojtech@ucw.cz>, or by paper mail:
- * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
- */
-
-#include <linux/input.h>
-
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-char *events[EV_MAX + 1] = { "Reset", "Key", "Relative", "Absolute", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-NULL, NULL, NULL, "LED", "Sound", NULL, "Repeat", "ForceFeedback", NULL, "ForceFeedbackStatus"};
-char *keys[KEY_MAX + 1] = { "Reserved", "Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "Minus", "Equal", "Backspace",
-"Tab", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "LeftBrace", "RightBrace", "Enter", "LeftControl", "A", "S", "D", "F", "G",
-"H", "J", "K", "L", "Semicolon", "Apostrophe", "Grave", "LeftShift", "BackSlash", "Z", "X", "C", "V", "B", "N", "M", "Comma", "Dot",
-"Slash", "RightShift", "KPAsterisk", "LeftAlt", "Space", "CapsLock", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10",
-"NumLock", "ScrollLock", "KP7", "KP8", "KP9", "KPMinus", "KP4", "KP5", "KP6", "KPPlus", "KP1", "KP2", "KP3", "KP0", "KPDot", "103rd",
-"F13", "102nd", "F11", "F12", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "KPEnter", "RightCtrl", "KPSlash", "SysRq",
-"RightAlt", "LineFeed", "Home", "Up", "PageUp", "Left", "Right", "End", "Down", "PageDown", "Insert", "Delete", "Macro", "Mute",
-"VolumeDown", "VolumeUp", "Power", "KPEqual", "KPPlusMinus", "Pause", "F21", "F22", "F23", "F24", "KPComma", "LeftMeta", "RightMeta",
-"Compose", "Stop", "Again", "Props", "Undo", "Front", "Copy", "Open", "Paste", "Find", "Cut", "Help", "Menu", "Calc", "Setup",
-"Sleep", "WakeUp", "File", "SendFile", "DeleteFile", "X-fer", "Prog1", "Prog2", "WWW", "MSDOS", "Coffee", "Direction",
-"CycleWindows", "Mail", "Bookmarks", "Computer", "Back", "Forward", "CloseCD", "EjectCD", "EjectCloseCD", "NextSong", "PlayPause",
-"PreviousSong", "StopCD", "Record", "Rewind", "Phone", "ISOKey", "Config", "HomePage", "Refresh", "Exit", "Move", "Edit", "ScrollUp",
-"ScrollDown", "KPLeftParenthesis", "KPRightParenthesis",
-"International1", "International2", "International3", "International4", "International5",
-"International6", "International7", "International8", "International9",
-"Language1", "Language2", "Language3", "Language4", "Language5", "Language6", "Language7", "Language8", "Language9",
-NULL,
-"PlayCD", "PauseCD", "Prog3", "Prog4", "Suspend", "Close",
-NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-"Btn0", "Btn1", "Btn2", "Btn3", "Btn4", "Btn5", "Btn6", "Btn7", "Btn8", "Btn9",
-NULL, NULL, NULL, NULL, NULL, NULL,
-"LeftBtn", "RightBtn", "MiddleBtn", "SideBtn", "ExtraBtn", "ForwardBtn", "BackBtn",
-NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-"Trigger", "ThumbBtn", "ThumbBtn2", "TopBtn", "TopBtn2", "PinkieBtn",
-"BaseBtn", "BaseBtn2", "BaseBtn3", "BaseBtn4", "BaseBtn5", "BaseBtn6",
-NULL, NULL, NULL, "BtnDead",
-"BtnA", "BtnB", "BtnC", "BtnX", "BtnY", "BtnZ", "BtnTL", "BtnTR", "BtnTL2", "BtnTR2", "BtnSelect", "BtnStart", "BtnMode",
-"BtnThumbL", "BtnThumbR", NULL,
-"ToolPen", "ToolRubber", "ToolBrush", "ToolPencil", "ToolAirbrush", "ToolFinger", "ToolMouse", "ToolLens", NULL, NULL,
-"Touch", "Stylus", "Stylus2", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-"Ok", "Select", "Goto", "Clear", "Power2", "Option", "Info", "Time", "Vendor",
-"Archive", "Program", "Channel", "Favorites", "EPG", "PVR", "MHP", "Language",
-"Title", "Subtitle", "Angle", "Zoom", "Mode", "Keyboard", "Screen", "PC", "TV",
-"TV2", "VCR", "VCR2", "Sat", "Sat2", "CD", "Tape", "Radio", "Tuner", "Player",
-"Text", "DVD", "Aux", "MP3", "Audio", "Video", "Directory", "List", "Memo",
-"Calendar", "Red", "Green", "Yellow", "Blue", "ChannelUp", "ChannelDown",
-"First", "Last", "AB", "Play", "Restart", "Slow", "Shuffle", "FastForward",
-"Previous", "Next", "Digits", "Teen", "Twen", "Break" };
-
-char *absval[5] = { "Value", "Min ", "Max ", "Fuzz ", "Flat " };
-char *relatives[REL_MAX + 1] = { "X", "Y", "Z", NULL, NULL, NULL, "HWheel", "Dial", "Wheel" };
-char *absolutes[ABS_MAX + 1] = { "X", "Y", "Z", "Rx", "Ry", "Rz", "Throttle", "Rudder", "Wheel", "Gas", "Brake",
-NULL, NULL, NULL, NULL, NULL,
-"Hat0X", "Hat0Y", "Hat1X", "Hat1Y", "Hat2X", "Hat2Y", "Hat3X", "Hat 3Y", "Pressure", "Distance", "XTilt", "YTilt"};
-char *leds[LED_MAX + 1] = { "NumLock", "CapsLock", "ScrollLock", "Compose", "Kana", "Sleep", "Suspend", "Mute" };
-char *repeats[REP_MAX + 1] = { "Delay", "Period" };
-char *sounds[SND_MAX + 1] = { "Bell", "Click" };
-
-char **names[EV_MAX + 1] = { events, keys, relatives, absolutes, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-NULL, NULL, leds, sounds, NULL, repeats, NULL, NULL, NULL };
-
-#define BITS_PER_LONG (sizeof(long) * 8)
-#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
-#define OFF(x) ((x)%BITS_PER_LONG)
-#define BIT(x) (1UL<<OFF(x))
-#define LONG(x) ((x)/BITS_PER_LONG)
-#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1)
-
-int main (int argc, char **argv)
-{
- int fd, rd, i, j, k;
- struct input_event ev[64];
- int version;
- unsigned short id[4];
- unsigned long bit[EV_MAX][NBITS(KEY_MAX)];
- char name[256] = "Unknown";
- int abs[5];
-
- if (argc < 2) {
- printf("Usage: evtest /dev/input/eventX\n");
- printf("Where X = input device number\n");
- exit(1);
- }
-
- if ((fd = open(argv[argc - 1], O_RDONLY)) < 0) {
- perror("evtest");
- exit(1);
- }
-
- if (ioctl(fd, EVIOCGVERSION, &version)) {
- perror("evtest: can't get version");
- exit(1);
- }
-
- printf("Input driver version is %d.%d.%d\n",
- version >> 16, (version >> 8) & 0xff, version & 0xff);
-
- ioctl(fd, EVIOCGID, id);
- printf("Input device ID: bus 0x%x vendor 0x%x product 0x%x version 0x%x\n",
- id[ID_BUS], id[ID_VENDOR], id[ID_PRODUCT], id[ID_VERSION]);
-
- ioctl(fd, EVIOCGNAME(sizeof(name)), name);
- printf("Input device name: \"%s\"\n", name);
-
- memset(bit, 0, sizeof(bit));
- ioctl(fd, EVIOCGBIT(0, EV_MAX), bit[0]);
- printf("Supported events:\n");
-
- for (i = 0; i < EV_MAX; i++)
- if (test_bit(i, bit[0])) {
- printf(" Event type %d (%s)\n", i, events[i] ? events[i] : "?");
- ioctl(fd, EVIOCGBIT(i, KEY_MAX), bit[i]);
- for (j = 0; j < KEY_MAX; j++)
- if (test_bit(j, bit[i])) {
- printf(" Event code %d (%s)\n", j, names[i] ? (names[i][j] ? names[i][j] : "?") : "?");
- if (i == EV_ABS) {
- ioctl(fd, EVIOCGABS(j), abs);
- for (k = 0; k < 5; k++)
- if ((k < 3) || abs[k])
- printf(" %s %6d\n", absval[k], abs[k]);
- }
- }
- }
-
-
- printf("Testing ... (interrupt to exit)\n");
-
- while (1) {
- rd = read(fd, ev, sizeof(struct input_event) * 64);
-
- if (rd < (int) sizeof(struct input_event)) {
- printf("yyy\n");
- perror("\nevtest: error reading");
- exit (1);
- }
-
- for (i = 0; i < rd / sizeof(struct input_event); i++)
- printf("Event: time %ld.%06ld, type %d (%s), code %d (%s), value %d\n",
- ev[i].time.tv_sec, ev[i].time.tv_usec, ev[i].type,
- events[ev[i].type] ? events[ev[i].type] : "?",
- ev[i].code,
- names[ev[i].type] ? (names[ev[i].type][ev[i].code] ? names[ev[i].type][ev[i].code] : "?") : "?",
- ev[i].value);
-
- }
-}
-
diff --git a/util/av7110_loadkeys/galaxis.rcmm b/util/av7110_loadkeys/galaxis.rcmm
index 86268e9..38eb389 100644
--- a/util/av7110_loadkeys/galaxis.rcmm
+++ b/util/av7110_loadkeys/galaxis.rcmm
@@ -37,7 +37,7 @@
0x6e KEY_GREEN
0x6f KEY_YELLOW
0x70 KEY_BLUE
-
+
0x78 KEY_MENU
0x79 KEY_LIST
0xcc KEY_EPG
@@ -48,4 +48,3 @@
0xc7 KEY_DOWN
0xff KEY_VCR
-
diff --git a/util/av7110_loadkeys/generate-keynames.sh b/util/av7110_loadkeys/generate-keynames.sh
new file mode 100644
index 0000000..49d2b71
--- /dev/null
+++ b/util/av7110_loadkeys/generate-keynames.sh
@@ -0,0 +1,37 @@
+# Makefile helper for linuxtv.org dvb-apps/util/av7110_loadkeys
+
+echo "generate $1..."
+echo "#ifndef INPUT_KEYNAMES_H" > $1
+echo "#define INPUT_KEYNAMES_H" >> $1
+echo >> $1
+echo "#include <linux/input.h>" >> $1
+echo >> $1
+echo "#if !defined(KEY_OK)" >> $1
+echo "#include \"input_fake.h\"" >> $1
+echo "#endif" >> $1
+echo >> $1
+echo >> $1
+echo "struct input_key_name {" >> $1
+echo " const char *name;" >> $1
+echo " int key;" >> $1
+echo "};" >> $1
+echo >> $1
+echo >> $1
+echo "static struct input_key_name key_name [] = {" >> $1
+for x in $(cat /usr/include/linux/input.h input_fake.h | \
+ egrep "#define[ \t]+KEY_" | grep -v KEY_MAX | \
+ cut -f 1 | cut -f 2 -d " " | sort -u) ; do
+ echo " { \"$(echo $x | cut -b 5-)\", $x }," >> $1
+done
+echo "};" >> $1
+echo >> $1
+echo "static struct input_key_name btn_name [] = {" >> $1
+for x in $(cat /usr/include/linux/input.h input_fake.h | \
+ egrep "#define[ \t]+BTN_" | \
+ cut -f 1 | cut -f 2 -d " " | sort -u) ; do
+ echo " { \"$(echo $x | cut -b 5-)\", $x }," >> $1
+done
+echo "};" >> $1
+echo >> $1
+echo "#endif /* INPUT_KEYNAMES_H */" >> $1
+echo >> $1
diff --git a/util/av7110_loadkeys/hauppauge.rc5 b/util/av7110_loadkeys/hauppauge.rc5
index c9a65b3..f52eb85 100644
--- a/util/av7110_loadkeys/hauppauge.rc5
+++ b/util/av7110_loadkeys/hauppauge.rc5
@@ -22,4 +22,3 @@
0x22 KEY_SELECT
0x26 KEY_CYCLEWINDOWS
0x2e KEY_SCREEN
-
diff --git a/util/av7110_loadkeys/hauppauge2.rc5 b/util/av7110_loadkeys/hauppauge2.rc5
new file mode 100644
index 0000000..663fea8
--- /dev/null
+++ b/util/av7110_loadkeys/hauppauge2.rc5
@@ -0,0 +1,40 @@
+0x00 KEY_0
+0x01 KEY_1
+0x02 KEY_2
+0x03 KEY_3
+0x04 KEY_4
+0x05 KEY_5
+0x06 KEY_6
+0x07 KEY_7
+0x08 KEY_8
+0x09 KEY_9
+
+0x10 KEY_VOLUMEUP
+0x11 KEY_VOLUMEDOWN
+0x1e KEY_VENDOR
+
+0x20 KEY_CHANNELUP
+0x21 KEY_CHANNELDOWN
+0x22 KEY_SELECT
+0x26 KEY_CYCLEWINDOWS
+
+0x3d KEY_POWER
+0x3b KEY_GOTO
+0x1f KEY_BACK
+0x0d KEY_MENU
+0x0b KEY_RED
+0x2e KEY_GREEN
+0x38 KEY_YELLOW
+0x25 KEY_OK
+0x29 KEY_BLUE
+0x0f KEY_MUTE
+0x0c KEY_AUX
+0x3c KEY_SCREEN
+0x32 KEY_REWIND
+0x35 KEY_PLAY
+0x34 KEY_FORWARD
+0x37 KEY_RECORD
+0x36 KEY_STOP
+0x30 KEY_PAUSE
+0x24 KEY_LEFT
+0x1e KEY_RIGHT
diff --git a/util/av7110_loadkeys/hauppauge_grey.rc5 b/util/av7110_loadkeys/hauppauge_grey.rc5
index ac186dc..2bca524 100644
--- a/util/av7110_loadkeys/hauppauge_grey.rc5
+++ b/util/av7110_loadkeys/hauppauge_grey.rc5
@@ -1,4 +1,3 @@
-
0x3d KEY_POWER
0x3b KEY_GOTO
diff --git a/util/av7110_loadkeys/input_fake.h b/util/av7110_loadkeys/input_fake.h
index 7aecc9f..0ec96df 100644
--- a/util/av7110_loadkeys/input_fake.h
+++ b/util/av7110_loadkeys/input_fake.h
@@ -7,7 +7,7 @@
#if !defined(KEY_OK)
/**
- * define some additional remote control keys in case they
+ * define some additional remote control keys in case they
* were not already defined above in <linux/input.h>
*/
@@ -66,19 +66,16 @@
#define KEY_FIRST 0x194
#define KEY_LAST 0x195
#define KEY_AB 0x196
-#define KEY_PLAY 0x197
+#define KEY_NEXT 0x197
#define KEY_RESTART 0x198
#define KEY_SLOW 0x199
#define KEY_SHUFFLE 0x19a
-#define KEY_FASTFORWARD 0x19b
+#define KEY_BREAK 0x19b
#define KEY_PREVIOUS 0x19c
-#define KEY_NEXT 0x19d
-#define KEY_DIGITS 0x19e
-#define KEY_TEEN 0x19f
-#define KEY_TWEN 0x1a0
-#define KEY_BREAK 0x1a1
+#define KEY_DIGITS 0x19d
+#define KEY_TEEN 0x19e
+#define KEY_TWEN 0x19f
#endif /* !defined(KEY_OK) */
#endif /* _INPUT_FAKE_H */
-
diff --git a/util/av7110_loadkeys/philips1358.rc5 b/util/av7110_loadkeys/philips1358.rc5
index e30efba..805755e 100644
--- a/util/av7110_loadkeys/philips1358.rc5
+++ b/util/av7110_loadkeys/philips1358.rc5
@@ -26,12 +26,12 @@
0x2B KEY_PAUSE
0x2C KEY_REWIND
0x2D KEY_F4
-0x2E KEY_F3
+0x2E KEY_F3
0x32 KEY_YELLOW
0x34 KEY_BLUE
0x36 KEY_GREEN
0x37 KEY_RED
0x38 KEY_AUX
-0x3C KEY_F2
+0x3C KEY_F2
0x3D KEY_SCREEN
-0x3F KEY_F1 \ No newline at end of file
+0x3F KEY_F1