summaryrefslogtreecommitdiff
path: root/v4l2-apps
diff options
context:
space:
mode:
Diffstat (limited to 'v4l2-apps')
-rw-r--r--v4l2-apps/util/Makefile26
-rwxr-xr-xv4l2-apps/util/gen_keytables.pl7
-rw-r--r--v4l2-apps/util/keytable.c8
3 files changed, 32 insertions, 9 deletions
diff --git a/v4l2-apps/util/Makefile b/v4l2-apps/util/Makefile
index 6f9d1071a..29f3f4852 100644
--- a/v4l2-apps/util/Makefile
+++ b/v4l2-apps/util/Makefile
@@ -1,5 +1,26 @@
# Makefile for linuxtv.org v4l2-apps/util
+IR_FILES = "linux/drivers/media/common/ir-keymaps.c \
+linux/drivers/media/dvb/dvb-usb/a800.c \
+linux/drivers/media/dvb/dvb-usb/af9005-remote.c \
+linux/drivers/media/dvb/dvb-usb/af9015.c \
+linux/drivers/media/dvb/dvb-usb/af9015.h \
+linux/drivers/media/dvb/dvb-usb/anysee.c \
+linux/drivers/media/dvb/dvb-usb/cinergyT2-core.c \
+linux/drivers/media/dvb/dvb-usb/cxusb.c \
+linux/drivers/media/dvb/dvb-usb/dib0700_devices.c \
+linux/drivers/media/dvb/dvb-usb/dibusb-common.c \
+linux/drivers/media/dvb/dvb-usb/digitv.c \
+linux/drivers/media/dvb/dvb-usb/dtt200u.c \
+linux/drivers/media/dvb/dvb-usb/dvb-usb-remote.c \
+linux/drivers/media/dvb/dvb-usb/dvb-usb.h \
+linux/drivers/media/dvb/dvb-usb/dw2102.c \
+linux/drivers/media/dvb/dvb-usb/m920x.c \
+linux/drivers/media/dvb/dvb-usb/nova-t-usb2.c \
+linux/drivers/media/dvb/dvb-usb/opera1.c \
+linux/drivers/media/dvb/dvb-usb/vp702x.c \
+linux/drivers/media/dvb/dvb-usb/vp7045.c "
+
ifeq ($(KERNEL_DIR),)
KERNEL_DIR = /usr
endif
@@ -62,8 +83,9 @@ parse.h: $(KERNEL_DIR)/include/linux/input.h
@printf "\t{ NULL, 0}\n};\n" >>parse.h
keytables:
- -mkdir -p keycodes
- ./gen_keytables.pl ../../linux/drivers/media/common/ir-keymaps.c
+ @-mkdir -p keycodes
+ @echo storing existing keycodes at keycodes/
+ @for i in `echo $(IR_FILES)`; do ./gen_keytables.pl ../../$$i; done
keytable: keytable.c parse.h keytables
diff --git a/v4l2-apps/util/gen_keytables.pl b/v4l2-apps/util/gen_keytables.pl
index 889516de4..fad4ccfeb 100755
--- a/v4l2-apps/util/gen_keytables.pl
+++ b/v4l2-apps/util/gen_keytables.pl
@@ -5,9 +5,8 @@ my $keyname="";
my $debug=0;
while (<>) {
-#IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE] = {
- if (m/IR_KEYTAB_TYPE\s+(\w[\w\d_]+)/) {
- $keyname = $1;
+ if (m/struct\s+(dvb_usb_rc_key|ir_scancode)\s+(\w[\w\d_]+)/) {
+ $keyname = $2;
$keyname =~ s/^ir_codes_//;
print "Generating keycodes/$keyname\n" if $debug;
@@ -15,7 +14,7 @@ while (<>) {
next;
}
if ($keyname ne "") {
- if (m/(0x[\d\w]+).*(KEY_[^\s\,]+)/) {
+ if (m/(0x[\dA-Fa-f]+).*(KEY_[^\s\,\}]+)/) {
printf OUT "%s %s\n",$1, $2;
next;
}
diff --git a/v4l2-apps/util/keytable.c b/v4l2-apps/util/keytable.c
index 4b39a43f0..4283782d0 100644
--- a/v4l2-apps/util/keytable.c
+++ b/v4l2-apps/util/keytable.c
@@ -107,7 +107,7 @@ int main (int argc, char *argv[])
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
- codes[1] = KEY_UNKNOWN;
+ codes[1] = KEY_RESERVED;
ioctl(fd, EVIOCSKEYCODE, codes);
}
}
@@ -146,8 +146,10 @@ int main (int argc, char *argv[])
codes [1] = (unsigned) value;
// printf("\t%04x=%04x\n",codes[0], codes[1]);
- if(ioctl(fd, EVIOCSKEYCODE, codes))
+ if(ioctl(fd, EVIOCSKEYCODE, codes)) {
+ fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
perror ("EVIOCSKEYCODE");
+ }
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
@@ -159,7 +161,7 @@ int main (int argc, char *argv[])
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
- if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
+ if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
prtcode(codes);
}
}