diff options
Diffstat (limited to 'v4l2-apps')
-rw-r--r-- | v4l2-apps/util/Makefile | 26 | ||||
-rwxr-xr-x | v4l2-apps/util/gen_keytables.pl | 7 | ||||
-rw-r--r-- | v4l2-apps/util/keytable.c | 8 |
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); } } |