Hallo,
Die drei Keytables und die Unterscheidung hatte ich direkt im Treiberpatch includiert.
https://github.com/yavdr/yavdr…-support-for-mantis.patch
+++ b/linux/drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c
+++ b/linux/drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c
+++ b/linux/drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c
+++ b/linux/include/media/rc-map.h
[...]
+#define RC_MAP_TERRATEC_CINERGY_C_PCI "rc-terratec-cinergy-c-pci"
+#define RC_MAP_TERRATEC_CINERGY_S2_HD "rc-terratec-cinergy-s2-hd"
+#define RC_MAP_TWINHAN_DTV_CAB_CI "rc-twinhan-dtv-cab-ci"
+++ b/linux/drivers/media/dvb/mantis/mantis_vp1041.c
[...]
+static void vp1041_config_init(struct mantis_pci *mantis)
+{
+ struct mantis_hwconfig *config = mantis->hwconfig;
+
+ switch (mantis->pdev->subsystem_vendor) {
+ case TWINHAN_TECHNOLOGIES:
+ if (mantis->pdev->subsystem_device == MANTIS_VP_1041_DVB_S2)
+ config->ir_codes = RC_MAP_TWINHAN_DTV_CAB_CI;
+ break;
+ default:
+ config->ir_codes = RC_MAP_TERRATEC_CINERGY_S2_HD;
+ }
+}
Alles anzeigen
Hier sieht man, dass vp1041 für das Device MANTIS_VP_1041_DVB_S2 die Keytable RC_MAP_TWINHAN_DTV_CAB_CI ansonsten RC_MAP_TERRATEC_CINERGY_S2_HD geladen wird. Man müsste also eine weiter Keytable hinzufügen diese in /linux/include/media/rc-map.h definieren und anschließend die switch clausel erweitern. Bei Tables für andere Karten kann auch direkt in der Struktur mantis_hwconfig eine Table mittels .ir_codes hinzugefügt werden.
lg
Christoph
edit:
Möglicherweiße wäre hier auch eine eigene Udev-Rule möglich:
ACTION=="add", SUBSYSTEM=="rc", \
ATTRS{subsystem_vendor}=="0x1ae4", ATTRS{subsystem_device}=="0x0001", \
RUN+="/usr/bin/ir-keytable -c -w /lib/udev/rc_keymaps/skystarhd2 -s mantis_core"
ACTION=="add", SUBSYSTEM=="rc", \
ATTRS{subsystem_vendor}=="0x1ae4", ATTRS{subsystem_device}=="0x0003", \
RUN+="/usr/bin/ir-keytable -c -w /lib/udev/rc_keymaps/skystarhd2 -s $name"
Hier beide Rules da es anscheinend zwei verschiedene versionen der Skystar hd gibt
/drivers/media/dvb/mantis/mantis_vp1041.h
[...]#define SKYSTAR_HD2_10 0x0001
#define SKYSTAR_HD2_20 0x0003[...]
Habe mir die Udev-Rules aus Beispielen zusammengebaut da ich mich damit noch nicht beschäftigt habe sie enthalten jedoch bereits die richtigen vendor und device id's (nicht getestet). Es wäre wenn ich mir die Man-Page von ir-keytables so ansehe auch möglich direkt für ein konkretes device "-d /dev/input/event*" die Table zu setzen leider weiß ich nicht ob ich diese Information in Udev-Rules erhalte.