was hat es mit den verscheidenen Paketen hier auf sich? Sind die speziell Kompiliert oder nur irgendwelche voreinstellungen unterschiedlich?
Umfrage zu Eventlircd - Einstellung des Repeat-Filters
Könnte das unser Problem beheben?
was hat es mit den verscheidenen Paketen hier auf sich? Sind die speziell Kompiliert oder nur irgendwelche voreinstellungen unterschiedlich?
Umfrage zu Eventlircd - Einstellung des Repeat-Filters
Könnte das unser Problem beheben?
Sind die speziell Kompiliert oder nur irgendwelche voreinstellungen unterschiedlich?
Die sind mit unterschiedlichen Werten für den Repeatfilter kompiliert (lässt sich dummerweise nur im Sourcecode ändern)
In yaVDR 0.5alpha ist der Repeat-Filter von eventlircd eigentlich deaktiviert, weshalb der Repeatfilter keinen Effekt haben sollte...
naja.. bei
eventlircd --help
Usage: eventlircd [options]
-h --help print this help message and exit
-V --version print the program version and exit
-v --verbose increase the output message verbosity (-v, -vv or -vvv)
-f --foreground run in the foreground
-e --evmap=<dir> directory containing input device event map files (default is '/etc/eventlircd.d')
-s --socket=<socket> lircd socket (default is '/var/run/lirc/lircd')
-m --mode=<mode> lircd socket mode (default is '0666')
-R --repeat-filter enable repeat filtering (default is 'true')
-d --min-repeat-delay minimum repeat delay (default is '100000')
-D --max-repeat-delay maximum repeat delay (default is '900000')
-a --repeat-acceleration repeat acceleration (default is '0.450000')
-r --release=<suffix> generate key release events suffixed with <suffix>
Alles anzeigen
Da steht, dass wenn -R oder --repeat-filter nicht angegeben ist, dass es aktiviert ist.
ah ok, dann ist da aktuell die von gda gepatchte Version im Repo, die gab es noch nicht, als der Thread und die ganzen anderen Pakete entstanden...
soll heissen...? Ist jetzt nicht mehr fest einkompiliert?
Es muss doch für das Problem eine Lösung geben?!
Eine Frage, wie bekommt man es hin, dass die FB schneller wird? Also den repeat höher wird?
Wenn die FB schneller werden soll, muss die repeat period kürzer werden. Der repeat delay ist AFAIK die Zeitspanne, nach der bei gedrückt gehaltener Taste ein wiederholter Tastendruck erkannt werden soll.
Also würde ich zunächst mal das so versuchen (siehe auch man ir-keytable):
soll heissen...? Ist jetzt nicht mehr fest einkompiliert?
Genau, gda hatte es so abgeändert, dass man die Werte für den Repeat-Filter, die im Originalquellcode (https://code.google.com/p/even…/browse/trunk/src/input.c Zeile 1102 ff stehen) über Startargumente anpassen konnte - die Quellen des aktuell von uns genutzen Paketes findest du hier: https://launchpad.net/~yavdr/+…94/+listing-archive-extra
Also original:
if (device->repeat_filter == true)
{
if (evkey_type[device->current.event_out.code] == EVENTLIRCD_EVKEY_TYPE_KEY) {
time_delta = 1000000 * (device->current.event_out.time.tv_sec - previous->event_out.time.tv_sec ) +
(device->current.event_out.time.tv_usec - previous->event_out.time.tv_usec);
if (((previous->repeat_count == 0) && (time_delta < 900000)) ||
((previous->repeat_count == 1) && (time_delta < 500000)) ||
((previous->repeat_count == 2) && (time_delta < 300000)) ||
((previous->repeat_count == 3) && (time_delta < 200000)) ||
((previous->repeat_count == 4) && (time_delta < 150000)) ||
((previous->repeat_count >= 5) && (time_delta < 100000))) {
memset(&(device->current.event_out), 0, sizeof(struct input_event));
device->current.event_out.type = EVENTLIRCD_EV_NULL;
device->current.repeat_count = 0;
return 0;
}
}
}
Alles anzeigen
In unserem Paket:
if (device->repeat_filter == true)
{
unsigned int i;
int time_gap = device->max_repeat_delay;
if (evkey_type[device->current.event_out.code] == EVENTLIRCD_EVKEY_TYPE_KEY) {
time_delta = 1000000 * (device->current.event_out.time.tv_sec - previous->event_out.time.tv_sec ) +
(device->current.event_out.time.tv_usec - previous->event_out.time.tv_usec);
for (i = 0; i < previous->repeat_count; i++)
time_gap -= time_gap * device->repeat_acceleration;
time_gap = (time_gap < device->min_repeat_delay) ? device->min_repeat_delay : time_gap;
if (time_delta < time_gap) {
memset(&(device->current.event_out), 0, sizeof(struct input_event));
device->current.event_out.type = EVENTLIRCD_EV_NULL;
device->current.repeat_count = 0;
return 0;
}
}
}
Alles anzeigen
Es muss doch für das Problem eine Lösung geben?!
Vermutlich, wenn man etwas ausholt - man könnte z.B. schauen, wie schnell da Tastendrücke auf dem Event-Gerät unter /dev/input/event<X> der X10 generiert werden und ob die alle so entsprechend (in dem zeitlichen Abstand) auf dem Lirc-Socket ankommen, wenn eventlircd läuft.
Eventlircd verhält sich anders als von HID-Geräte, die ohne diesen Umweg Programme beeinflussen kommunizieren gewohnt - das Programm reagiert nur auf gesendete Eingabeevents (erster Tastendruck = 1, wiederholter Tastendruck = 2, losgelassene Taste = 0), die auf dem Eventgerät ankommen und ist selbst nicht in der Lage gedrückt gehaltene Tasten mit einer bestimmten Frequenz feuern zu lassen.
Wie man das Problem angehen kann, sieht man an der PS3 remote, die nur Taste gedrückt und Taste losgelassen senden kann:
https://github.com/yavdr/yavdr…/master/usr/bin/ps3remote
https://github.com/yavdr/yavdr…r/udev/99-ps3remote.rules
https://github.com/yavdr/yavdr…r/etc/init/ps3remote.conf
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!