| Tuxbox-Forum http://www.dbox2-tuning.net/forum/ |
|
| [PATCH] RCinput rework, mit besserem Repeat-Handling. http://www.dbox2-tuning.net/forum/viewtopic.php?f=2&t=48328 |
Seite 1 von 5 |
| Autor: | seife [ 22.11.2008, 23:47 ] |
| Betreff des Beitrags: | [PATCH] RCinput rework, mit besserem Repeat-Handling. |
neutrino-rework-rcinput-with-repeat.diff Bisher wurde, wenn eine Taste länger gedrückt wurde, sie immer wieder in die Inputqueue eingespeist, je nach den repeat-Einstellungen. Allerdings war es nicht möglich festzustellen, ob ein Tastenevent schon wiederholt war oder nicht. Ausserdem waren - hartkodiert - nur Hoch-, Runter-, Lauter-, Leiser- und Standby-Taste, sowie, auf Anforderung der einzelnen Routine auch die Links/Rechts-Tasten wiederholbar. Mit diesem Patch, wird beim ersten tastendruck der RC_xxx code gesendet, bei längerem Druck wird RC_xxx|RC_Repeat gesendet. Ausserdem können nun alle Tasten wiederholen, z.B. die Zifferntasten für die Texteingabe. Die einzelnen Routinen können nun festlegen, ob sie auch auf repeated key-Events reagieren wollen (in dem sie RC_Repeat ausmaskieren) oder nicht. Man könnte sogar bei einem kurzen Tastendruck eine ganz andere Aktion auslösen als bei einem langen - so wie es bei Enigma auch geht, oder wie es bisher schon beim Powerbutton gehandhabt wurde. Als Beispiel habe ich die LCD-Helligkeitseinstellung so gemacht, dass bei kurzem Druck in 1er-Schritten eingestellt wird, sonst in 5er-Schritten. Ebenso die Lautstärkeregelung: kurz drücken => 1er Schritt, lang drücken => Eingestellte Schrittweite. Ich habe es im grossen und ganzen so gemacht, dass die Tasten, die vorher wiederholt haben, das immer noch tun und andersherum. Tests sind willkommen, auch ob Plugins etc. noch so funktionieren, wie sie sollen (tuxcom und tuxtxt funktionieren bei mir noch). Wenn die Tasten irgendwo nicht wiederholen, wo sie sollten, dann das auch melden. |
|
| Autor: | dietmarw [ 23.11.2008, 12:52 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
ergebnisse unter http://dietmarw.trale.de unter div_tests |
|
| Autor: | GetAway [ 23.11.2008, 21:18 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
seife hat geschrieben: Als Beispiel habe ich die LCD-Helligkeitseinstellung so gemacht, dass bei kurzem Druck in 1er-Schritten eingestellt wird, sonst in 5er-Schritten. Ebenso die Lautstärkeregelung: kurz drücken => 1er Schritt, lang drücken => Eingestellte Schrittweite. Ich habe mal die Lautstärke und LCD-Funktion getestet. Es wird trotz des langen Tastendrucks, zu beginn, ein einzelner 1er-Schritt ausgeführt. Das solltest du noch ändern. Ansonsten gehts schon mal. |
|
| Autor: | seife [ 23.11.2008, 22:28 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Das ist, prinzipbedingt, nur schwer zu lösen. Ich sehe darin aber auch erstmal kein Problem. Wobei - wenn man Tasten wirklich doppelt belegen will, braucht man das natürlich. Man müsste für den kurzen Tastendruck also nicht auf das Drücken, sondern auf das Loslassen der Taste triggern. Mal sehen, was sich da machen lässt... |
|
| Autor: | Barf [ 24.11.2008, 20:17 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Ich finde den Patch sehr Intressant, und werde in der nähe Zukunft untersuchen, falls ich mein "kabr-patch" anzupassen, um lange Tastendrücke zu binden. Man könnte auch untersuchen, falls/wie rcsim und rcem lange Tasten emulieren könnte. Frage ist dann welche Syntax man benutzt um lange Tasten zu bezeichen; spontan fällt mir irgendwelche "modifier"-Syntax ein. Weiter so! |
|
| Autor: | mrvica [ 24.11.2008, 21:22 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
nur mal als Beispiel, Enigma benutzt dafür flags in rcdbox_inputdev.xml (dbox2), es gibt 4 verschiede Tastendrücke in Enigma: 1. einfacher Tastendruck z.B. um Menü aufzurufen: <action name="showMainMenu" key="d-box" flags="m" /> 2. Tastendruck mit repeat (Wiederholung), Taste drücken und festhalten, sinvoll bei Volume und Navigationstasten, sonst müsste man bei Lautstärke ändern zig mal auf Volume -, + drücken: <action name="volumeUp" key="+" flags="mr" /> 3. kurzer Tastendruck, z.B. um Videotext auf der blauen Taste aufzurufen, flag "b", ich nehme an, b steht für "a little bit" <action name="pluginVTXT" key="blue" flags="b" /> 4. langer Tastendruck, z.B. um Plugins auf der blauen Taste aufzurufen, Taste drücken und festhalten, flag "r", ich nehme an, r steht für release, loslassen <action name="pluginExt" key="blue" flags="r" /> vielleicht noch einer, ist aber nicht dokumentiert, von mir zufällig entdeckt, ohne flag, z.B. <actionmap name="numbers"> <action name="1" key="1" /> normallerweise <action name="1" key="1" flags="m" /> es wird zu Kanal 1 umgeschaltet erst wenn man die Taste 1 loslässt, dabei kann man zick Minuten die Taste 1 gedrückt halten, bis dato tut sich nichts, in meiner rcdbox_inputdev.xml ich benutze das für Nummerntasten, weil Sagems und Philips zickig drauf reagieren mrvica |
|
| Autor: | seife [ 24.11.2008, 22:19 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Barf hat geschrieben: Man könnte auch untersuchen, falls/wie rcsim und rcem lange Tasten emulieren könnte. Frage ist dann welche Syntax man benutzt um lange Tasten zu bezeichen; spontan fällt mir irgendwelche "modifier"-Syntax ein. Ich persönlich würde ja eher einen direkten socket anbieten, über den simulierte Tastendrücke ins neutrino geschleust werden können, anstelle die wir rcsim ins input-Device "hineinzukippen" (was auf der dream, die kein standard-inputdevice benutzt, zumindest nicht in neutrino, schon mal nicht funktioniert). Das aber später mrvica hat geschrieben: nur mal als Beispiel, Enigma benutzt dafür flags in rcdbox_inputdev.xml (dbox2), es gibt 4 verschiede Tastendrücke in Enigma: 1. einfacher Tastendruck z.B. um Menü aufzurufen: <action name="showMainMenu" key="d-box" flags="m" /> 2. Tastendruck mit repeat (Wiederholung), Taste drücken und festhalten, sinvoll bei Volume und Navigationstasten, sonst müsste man bei Lautstärke ändern zig mal auf Volume -, + drücken: <action name="volumeUp" key="+" flags="mr" /> 3. kurzer Tastendruck, z.B. um Videotext auf der blauen Taste aufzurufen, flag "b", ich nehme an, b steht für "a little bit" <action name="pluginVTXT" key="blue" flags="b" /> 4. langer Tastendruck, z.B. um Plugins auf der blauen Taste aufzurufen, Taste drücken und festhalten, flag "r", ich nehme an, r steht für release, loslassen <action name="pluginExt" key="blue" flags="r" /> Ja, ich kenne das von enigma. Ich denke aber die Buchstaben sind anders: m - make, Taste wird gedrückt b - break, Taste wird losgelassen r - repeat b macht einen kurzen Tastendruck, weil man ja erst beim loslassen der Taste entscheiden kann, ob er lang oder kurz war Wenn die Taste losgelassen wird, bevor es für "Lang" reicht, dann war es kurz. Alles klar? Zitat: vielleicht noch einer, ist aber nicht dokumentiert, von mir zufällig entdeckt, ohne flag, z.B. <actionmap name="numbers"> <action name="1" key="1" /> normallerweise <action name="1" key="1" flags="m" /> es wird zu Kanal 1 umgeschaltet erst wenn man die Taste 1 loslässt, dabei kann man zick Minuten die Taste 1 gedrückt halten, bis dato tut sich nichts, in meiner rcdbox_inputdev.xml ich benutze das für Nummerntasten, weil Sagems und Philips zickig drauf reagieren Dann schau ich halt doch mal in den Code..... ..... kein flag ist dasselbe wie "flag=b": Code: const char *flags=xaction->GetAttributeValue("flags");
if (!flags || !*flags) flags="b"; if (strchr(flags, 'm')) action->insertKey( style, eRCKey(device, icode, 0, picture) ); if (strchr(flags, 'b')) action->insertKey( style, eRCKey(device, icode, eRCKey::flagBreak, picture) ); if (strchr(flags, 'r')) action->insertKey( style, eRCKey(device, icode, eRCKey::flagRepeat, picture) ); |
|
| Autor: | GetAway [ 25.11.2008, 14:53 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Eventuell könnte man bei diversen Reglern das Fortschreiten des Balkens dynamisch machen, sprich: abhängig davon wie lange die Taste gedrückt wird, die Schrittweite erhöhen auf 10...15 . Obwohl, man kann es auch übertreiben ^^ |
|
| Autor: | seife [ 30.11.2008, 14:43 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
So. Nächster, meiner Meinung nach finaler Versuch. Dieses mal mit Key Release event, wird bisher noch nicht verwendet, könnte aber. (Eigentlich wollte ich auch das repeat-Handling rauswerfen und dem Kernel den delay und repeat sagen, dann habe ich gemerkt, dass der dbox RC-Treiber das nicht kann). Im rcinput.cpp sind die #ifdefs für OLD_RC nun etwas weniger verwirrend, wenn ich das irgendwann mal auf der dreambox ausprobiert habe, kann vermutlich der OLD_RC-Code komplett weg, sonst verwendet den ja keiner mehr. Probiert's aus, es kommt bald ins CVS neutrino-rework-rcinput-with-repeat-v2.diff GetAway: Das hat mit diesem Patch nicht direkt zu tun, aber dieser Patch sorgt dafür, dass du die Infrastruktur hast, um sowas zu machen. P.S.: das "Lautstärke in einser-Schritten bei kurzem Tastendruck" habe ich wieder rausgenommen, meine Betatesterin fand das nicht gut. |
|
| Autor: | seife [ 30.11.2008, 21:41 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Na gut, v2 war nicht so toll (Volumebar "seltsam"). neutrino-rework-rcinput-with-repeat-v3.diff Testen, zackzack! |
|
| Autor: | dbt [ 30.11.2008, 23:33 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
seife hat geschrieben: Testen, zackzack! So getestet, schädliche Nebenwirkungen habe ich bisher keine bemerkt. Auch bei den Plugins. Um's ausführlich zu testen isses aber etwas spät... da muss die Box im Wohnzimmer herhalten , das ist seit kurzem eine Sagem, da könnte das etwas interessanter sein. |
|
| Autor: | seife [ 01.12.2008, 00:00 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Ich lasse es auch diese Woche mal durch meine Frau testen. Wenn die sich nicht beschwert, kommt's ins CVS |
|
| Autor: | rhabarber1848 [ 01.12.2008, 20:46 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
seife hat geschrieben: Habe kurz angetestet, Lautstärke und LCD-Helligkeit geprüft. Fühlt sich gut an, die LCD-Helligkeit kann in 1- und 5-Schritten intuitiv geändert werden. Für die Lautstärkeregelung würde ich eine Schrittweite von 3 als neuen Standard vorschlagen, da ansonsten der Vorteil der genaueren Einstellung beim Tasten-Repeat, den dieser Patch bringt, nicht richtig zum Tragen kommt. Zum Thema multizap: MIt dem aktuellen CVS habe ich auf meiner Sagem-Box hin und wieder das Problem, dass das Weiterschalten eines Senders durch einmaligen Druck auf KEY_UP oder KEY_DOWN nicht einen, sondern ungewollt zwei Sender weiterschaltet. Ich habe gesehen, dass Du ein clearRCMsg() dagegen eingebaut hast, leider sorgt es in dem von mir beschriebenen Fall nicht für Abhilfe. Wer entscheidet eigentlich, ob eine Taste wiederholt oder nur einmal gedrückt wurde, der Frontprozessor? |
|
| Autor: | GetAway [ 01.12.2008, 22:06 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
werds morgen Früh mal testen ^^ |
|
| Autor: | seife [ 01.12.2008, 22:19 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
rhabarber1848 hat geschrieben: Habe kurz angetestet, Lautstärke und LCD-Helligkeit geprüft. Fühlt sich gut an, die LCD-Helligkeit kann in 1- und 5-Schritten intuitiv geändert werden. Für die Lautstärkeregelung würde ich eine Schrittweite von 3 als neuen Standard vorschlagen, da ansonsten der Vorteil der genaueren Einstellung beim Tasten-Repeat, den dieser Patch bringt, nicht richtig zum Tragen kommt. Für die Lautstärke würde ich es wieder rausnehmen (ich dachte, das hätte ich schon gemacht...) Meine Testpersonen (Frau und Kinder) fanden das nicht so toll, die alte default-Schrittweite von 2 fanden sie besser - und tatsächlich hat man schnell genug laut und leise gemacht damit. Zitat: Zum Thema multizap: MIt dem aktuellen CVS habe ich auf meiner Sagem-Box hin und wieder das Problem, dass das Weiterschalten eines Senders durch einmaligen Druck auf KEY_UP oder KEY_DOWN nicht einen, sondern ungewollt zwei Sender weiterschaltet. Ich habe gesehen, dass Du ein clearRCMsg() dagegen eingebaut hast, leider sorgt es in dem von mir beschriebenen Fall nicht für Abhilfe. Ja, das gehört auch eigentlich nicht hier rein, das ist eher aus Versehen mit reingerutscht. Wo das hilft ist, wenn du in der Kanalliste "unten raus" scrollst, oder in der EPG-Übersicht von einer Seite zur nächsten. Oder wenn du die Tasten lange gedrückt hast, so dass sie wiederholen, aber, weil das zappen relativ langsam geht, noch events in der input-Queue sind. Das könnte man allerdings später dadurch vermeiden, dass man fürs zappen nur nicht-repeated Tasten akzeptiert. (Bei den Multizaps (das hatte ich auch manchmal) ist es meiner Meinung nach eher so, dass vom zapit irgendwann ein "verirrtes" "Zap complete"-Event kommt. Bei mir ist es manchmal so, dass ich, wenn ich der Reihe nach 1-2-3-4-5 durchzappe (mit KEY_UP), dass die box dann plötzlich nach 10 oder 11 wieder auf 5 springt (oder so ähnlich), was auch keine RC-Fehlerkennung ist (sonst wäre erst die Ziffer eingeblendet, vom NumZap). Das muss ich mal getrennt debuggen, ist aber extrem selten und hat mit diesem Patch nichts zu tun.) Dieser Patch fixt erst mal gar nichts, (ausser die LCD-Einstellungen), aber er schafft Infrastruktur Zitat: Wer entscheidet eigentlich, ob eine Taste wiederholt oder nur einmal gedrückt wurde, der Frontprozessor? Nein, der kernel in dbox2_fp_rc.c Code: if ((fupsnew.toggle_bits!=0xff)&&(fupsnew.toggle_bits == ((rc_code >> 6) & 0x03)))
input_event(rc_input_dev, EV_KEY, key->code, KEY_AUTOREPEAT); else input_event(rc_input_dev, EV_KEY, key->code, KEY_PRESSED); |
|
| Autor: | GetAway [ 02.12.2008, 12:43 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
GetAway hat geschrieben: Es wird trotz des langen Tastendrucks, zu beginn, ein einzelner 1er-Schritt ausgeführt. Bis auf den Makel... |
|
| Autor: | seife [ 06.12.2008, 07:31 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Ist committed. Evtl. fallout (ich kann mir nicht vorstellen, dass ich damit garnichts kaputt gemacht habe) einfach melden. Das mit den 1er-Schritten für die Lautstärke habe ich dann doch weggelassen, das fanden meine Betatester nicht nützlich, aber die LCD-Einstellungen sollten jetzt schön mit Grob- und Feineinstellung funktionieren (Das ist das einzige, was ein User an Unterschied bemerken sollte). Inzwischen habe ich auch gelernt, wie man Kernel-Input-Treibern autorepeat inklusive Einstellung der Wiederholrate beibringt, das könnte das Ganze in naher Zukunft nochmals etwas vereinfachen (und dabei auch gleich die dreambox, so sie denn jetzt nicht mehr tut, wieder fixen). |
|
| Autor: | rhabarber1848 [ 06.12.2008, 11:40 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
seife hat geschrieben: Das mit den 1er-Schritten für die Lautstärke habe ich dann doch weggelassen, das fanden meine Betatester nicht nützlich Volle Zustimmung! Danke für den Patch! |
|
| Autor: | PauleFoul [ 06.12.2008, 12:25 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
@ Seife Irgendwie kann ich die dbox am Powerschalter unter der Frontklappe jetzt nicht mehr durch langes drücken ausschalten. Die geht nur noch in den StandBy-Modus... Kann das an Deinem Patch liegen?? Gruß ____Paule |
|
| Autor: | rhabarber1848 [ 06.12.2008, 13:10 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
PauleFoul hat geschrieben: Die geht nur noch in den StandBy-Modus... Das kann ich mit meiner Sagem-Box reproduzieren, mit der Fernbedienung und langem Drückem des Ausschaltknopfes funktioniert der deep-standby. |
|
| Autor: | seife [ 06.12.2008, 15:46 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
PauleFoul hat geschrieben: @ Seife Irgendwie kann ich die dbox am Powerschalter unter der Frontklappe jetzt nicht mehr durch langes drücken ausschalten. Die geht nur noch in den StandBy-Modus... Kann das an Deinem Patch liegen?? Ja., definitiv Moment. |
|
| Autor: | seife [ 06.12.2008, 16:24 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
fixed. http://cvs.tuxbox.org/cgi-bin/viewcvs.c ... 8&r2=1.909 |
|
| Autor: | Barf [ 07.12.2008, 12:30 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Es scheint so, dass das unlocken des FSs kaputt gegangen ist. Möglicher Fix: Code: --- rc_lock.cpp 28 Mar 2005 16:53:06 -0000 1.8
+++ rc_lock.cpp 7 Dec 2008 12:25:25 -0000 @@ -85,7 +85,9 @@ if (msg == CRCInput::RC_red) { timeoutEnd = CRCInput::calcTimeoutEnd(5); - g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd); + do { + g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd); + } while (msg >= KEY_MAX); if (msg == CRCInput::RC_setup) break; } |
|
| Autor: | seife [ 07.12.2008, 13:37 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Korrekt. Ist (etwas anders, hoffentlich noch korrekter) gefixt. |
|
| Autor: | Boardgeist [ 09.12.2008, 05:34 ] |
| Betreff des Beitrags: | Re: [PATCH] RCinput rework, mit besserem Repeat-Handling. |
Ich habe gestern abend mal neu ausgeckeckt und Neutrino gebaut: Bei mir läßt sich die Box per Fernbedienung nicht mehr ausschalten. Nur noch Standby geht. gruß boardgeist |
|
| Seite 1 von 5 | Alle Zeiten sind UTC |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|