Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
LIRC Fernbedienungstasten Zahlen zuweisen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
seyanora
n00b
n00b


Joined: 29 Oct 2004
Posts: 23
Location: Karlsruhe, Germany

PostPosted: Wed Mar 16, 2011 4:56 pm    Post subject: LIRC Fernbedienungstasten Zahlen zuweisen Reply with quote

Hi,

habe folgenden Wunsch:

Ich möchte mit meiner Fernbedienung (iMon PAD) möglichst viele Funktionen von KDE steuern. Insbesondere soll eine selbst programmierte Qt-Anwendung mittels Zahlentasten gesteuert werden, die über die Tastatur oder eben die Fernbedienung empfangen werden.

Nun mag ich eben den Zahlenblock der Fernbedienung quasi als zweite Tastatur nutzen, also drück ich 1 auf der Fernbedienung sollte auch z.B. auf der Konsole oder in einem Programm eine 1 geschrieben werden.

Hab mich jetz schon den ganzen Mittag durch zig HowTos mit xte usw durchgelesen, ohne Erfolg. Grundsätzlich funktioniert der LIRC Dämon, im Testprogramm der Konsole wird jeder Tastendruck quittiert und mit der Ringtaste der Fernbedienung kann ich den Mauszeiger steuern, obwohl ich das nie wissentlich wo eingestellt hab 8) KDEKick will jedoch nicht so recht, Amarok etc lässt sich nicht bedienen (is auch nicht wichtig, hauptsache die Ziffern werden wie o.g. geschrieben).

Irgendwo hängt der Wurm drin, kann mir jemand bitte ne kurze Roadmap geben wie ich da nun ansetzen soll?

lg
Back to top
View user's profile Send private message
Schnulli
Guru
Guru


Joined: 25 Jun 2010
Posts: 320
Location: Bremen DE

PostPosted: Wed Mar 16, 2011 11:13 pm    Post subject: Reply with quote

Moin
ich kenne deine FB zwar nicht.. ist es eine sogen. X10 ?? aber eig sollte viel möglich sien, allerdings nicht alles.....
Als erstes solltest du sichergehen welche Tasten von deiner FB erkannt werden....
in der Konsole " #xev " ( emerge xev ) und fleißig Tasten drücken... Beispeil....

Code:

KeyPress event, serial 34, synthetic NO, window 0x4e00001,
    root 0x15a, subw 0x0, time 125104991, (-911,42), root:(307,295),
    state 0x10, keycode 10 (keysym 0x31, 1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XmbLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x4e00001,
    root 0x15a, subw 0x0, time 125105154, (-911,42), root:(307,295),
    state 0x10, keycode 10 (keysym 0x31, 1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x4e00001,
    root 0x15a, subw 0x0, time 125106044, (-911,42), root:(307,295),
    state 0x10, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XmbLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x4e00001,
    root 0x15a, subw 0x0, time 125106239, (-911,42), root:(307,295),
    state 0x10, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False


Das ist das Ergebnis durch Tippen der Zahlentasten 1 und 2 ;)

Und fein mitpinseln was die Ausgabe der einzelnen Tasten ist...... ( #xev > fb_tasten_test ?? )
Dann geht es dran der lircd conf beizubringen welche Tasten es sind, das wird spaßig werden und sicher nicht langweilig ^^
Irgenwo in der VDR WIki war ein nicht schlechter Artikel dazu.....

http://lirc.sourceforge.net/remotes/imon/
Back to top
View user's profile Send private message
seyanora
n00b
n00b


Joined: 29 Oct 2004
Posts: 23
Location: Karlsruhe, Germany

PostPosted: Thu Mar 17, 2011 9:37 pm    Post subject: Reply with quote

Danke erstmal,

also leider ist mein Problem doch noch bisschen anders.. xev reagiert nur auf die "Maustasten" .. und das ist jetz auch grad mein Problem, dass die Fernbedieung quasi als USB-Maus erkannt wird... ich kann lirc zwar mit irrecord anlernen aber es tut sich danach auch nichts .. ich klemm mich Samstag nochmal dahinter .. irgendwie muss das doch gehen...
Back to top
View user's profile Send private message
Schnulli
Guru
Guru


Joined: 25 Jun 2010
Posts: 320
Location: Bremen DE

PostPosted: Thu Mar 17, 2011 10:59 pm    Post subject: Reply with quote

seyanora wrote:
Danke erstmal,

also leider ist mein Problem doch noch bisschen anders.. xev reagiert nur auf die "Maustasten" .. und das ist jetz auch grad mein Problem, dass die Fernbedieung quasi als USB-Maus erkannt wird... ich kann lirc zwar mit irrecord anlernen aber es tut sich danach auch nichts .. ich klemm mich Samstag nochmal dahinter .. irgendwie muss das doch gehen...


hmmmm... evtl. solltest Du mal etwas genauer erklären was genau den per FB gesteuert werden soll und vorallem welche(s) Programm(e) ... Du kannst längst nicht alles mit FB steuern, grundsätzlich muß die app mit "Funktions Tasten" zur Steuerung umgehen können ...... Wenn das app es nicht kann (die meisten).. dann wirds lustig.

Ich sagte ja schon wenn du mit lirc(d) etwas außer der Reihe willst, wirds spaßig und nicht langweilig.
Du solltest Dir auch im klaren darüber sein das Du einiges im System und mit deinen inputdevices (Tasta & Maus) durcheinander bringen kannst wenn du zwangsweise die FB zum steuern setzt..... Ich kann Dir nur dazu raten das der PC an dem du das testest einen laufen sshd hat damit Du notfalls Remote drauf zugreifen kannst ;)
Wenn Dein app mit Funktions Tasten als Steuerung umgehen kann, gut, dann nutze es und lerne Dein lirc und app an... Wenn du aber z.B. Lircd an VDR bindest, dann wirds nichts mehr mit anderen app.... da würde dann nur ein Neustart von vdr ohne lircd Support helfen oder eine andere FB zusätzlich nutzen.....
Eine FB ist kein "Universal Werkzeug" sondern auf spezielle Anwendungen und Bereiche zugeschnitten....

Genau aus diesen Grund nutzen wir schnurlos "Mini Keyboards" die Maustasten und ein Touchpad oder Trackball haben.. Damit geht dann fast alles.... wenn Du willst.....
Ich habe vor einiger Zeit, auf Kundenwunsch, viel Zeit investiert um eine solche Tasta, die 3 Funktionstasten Layouts hat, anzulernen.... Alleine alle Tasten zu definieren war schon .. tja... wie soll ich sagen.. ein Krampf??.. so in etwa ^^
Wie gesagt... 3 Funktionstasten Layouts..... .. damit können dann (min.) 4 Programme gesteuert werden

Hand auf´s Herz, wenn das mit einer einfachen FB so einfach sein würde ein ultimatives Werkzeug für den (Linux) PC zu haben.. würden schon viele auf dem Markt sein........
Back to top
View user's profile Send private message
seyanora
n00b
n00b


Joined: 29 Oct 2004
Posts: 23
Location: Karlsruhe, Germany

PostPosted: Sat Mar 19, 2011 2:01 pm    Post subject: Reply with quote

Also, um das mal etwas zu präzisieren was ich denn vorhab, das ganze ist teil einer Technikerarbeit und damit etwas kompliziert:

Erstmal sieht die (momentane, soll später auch durch eine "eigene" ersetzt werden) Fernbedienung so aus:

http://wiki.linuxmce.org/images/2/22/IMON_PAD_remote.jpg

In dem Projekt soll eine in Qt programmierte GUI-Anwendung programmiert werden, die 8 Relaisausgänge am LPT Port schalten kann. Dies soll sowohl über ein Touchscreen, via Ethernet und eben über die IR-Fernbedienung funktionieren. Die Oberfläche hat dazu 2x8 Schaltflächen, die man einfach mit der Maus bzw. dem Touchscreen drückt um das gewünschte Relais zu schalten. Oder man drückt auf der Tastatur 1 um Relais 1 anzuschalten und wieder 1 um es wieder auszuschalten usw.

Mit der Fernbedienung kann ich leider nur den Mauszeiger mit einer "Pad-Taste" über die Schaltflächen bewegen und mit einer weiteren Taste, die ein Mausklick simuliert, die Schaltfläche anklicken, also verhält sich im Moment die FB quasi wie eine Maus. Ist prinzipiell schon mal gut, aber ich hätte es eben gern, dass die Taste 1 auf der Fernbedienung eben auch eine 1 unter KDE erzeugt und somit das Programm ähnlich wie mit der normalen Tastatur damit bedienbar wird. Ich dachte eigentlich, dass das mit KDEKick ne Sache von 2 Minuten ist, mit der mitgelieferten Windows-Software kann ich auch jeder Fernbedienungstaste ein beliebiges Zeichen problemlos zuordnen und z.B. den Editor damit zutexten.
Aber wenn das unter Linux so ein Act ist, hab ich mich das doch etwas unterschätzt bzw. dafür wohl den komplett falschen Ansatz gewählt. Oder ist das ganze nun doch viel einfacher, wenn ich das nun hier etwas klarer beschrieben hab?
Back to top
View user's profile Send private message
Schnulli
Guru
Guru


Joined: 25 Jun 2010
Posts: 320
Location: Bremen DE

PostPosted: Sat Mar 19, 2011 2:55 pm    Post subject: Reply with quote

seyanora wrote:
Also, um das mal etwas zu präzisieren was ich denn vorhab, das ganze ist teil einer Technikerarbeit und damit etwas kompliziert:

Erstmal sieht die (momentane, soll später auch durch eine "eigene" ersetzt werden) Fernbedienung so aus:

http://wiki.linuxmce.org/images/2/22/IMON_PAD_remote.jpg

In dem Projekt soll eine in Qt programmierte GUI-Anwendung programmiert werden, die 8 Relaisausgänge am LPT Port schalten kann. Dies soll sowohl über ein Touchscreen, via Ethernet und eben über die IR-Fernbedienung funktionieren. Die Oberfläche hat dazu 2x8 Schaltflächen, die man einfach mit der Maus bzw. dem Touchscreen drückt um das gewünschte Relais zu schalten. Oder man drückt auf der Tastatur 1 um Relais 1 anzuschalten und wieder 1 um es wieder auszuschalten usw.

Mit der Fernbedienung kann ich leider nur den Mauszeiger mit einer "Pad-Taste" über die Schaltflächen bewegen und mit einer weiteren Taste, die ein Mausklick simuliert, die Schaltfläche anklicken, also verhält sich im Moment die FB quasi wie eine Maus. Ist prinzipiell schon mal gut, aber ich hätte es eben gern, dass die Taste 1 auf der Fernbedienung eben auch eine 1 unter KDE erzeugt und somit das Programm ähnlich wie mit der normalen Tastatur damit bedienbar wird. Ich dachte eigentlich, dass das mit KDEKick ne Sache von 2 Minuten ist, mit der mitgelieferten Windows-Software kann ich auch jeder Fernbedienungstaste ein beliebiges Zeichen problemlos zuordnen und z.B. den Editor damit zutexten.
Aber wenn das unter Linux so ein Act ist, hab ich mich das doch etwas unterschätzt bzw. dafür wohl den komplett falschen Ansatz gewählt. Oder ist das ganze nun doch viel einfacher, wenn ich das nun hier etwas klarer beschrieben hab?


Moin seyonara,
ah ! jetzt kann ich dir folgen. Das sollte grundsätzlich gehen... ein wenig programmier (scripting Aufwand) würde es sein aber grundsätzlich sollte das umsetzbar sein.

Da sagtest da etwas von Wi**** aus Re** *schüttel* (nehm dann lieber MAC ^^)
Lass mich kurz erklären (Bildersprache) wie so etwas unter Wi** funktionieren würde.....
Wi** nutzt für so etwas dll , Treiber und weiteres um überhaupt erkennen zu können das gerade etwas passiert.... Nachdem das bemerkt wurde wird es wiedrum auf dll´s umgeleitet die möglicherweise gerade einen Treiber finden der sich dafür zuständig fühlt.... einer weiteren dll sagt das er etwas "übergeben" möchte.. und mit Glück nach vielen vielen ms Sekunden erhälts du ein Ergebnis, das aber nicht undebingt das sein muss was du ihm gesagt hast ^^ Wenn du Pech hast verschwindet aber irgendwo in dieser Kette das Signal einfach so.... Das ist halt WIndows ^^
(ok-ok.. ein wenig sehr makaber dargestellt, kommt der Realität aber SEHR nah :) )

Linux kommuniziert DIREKT mit der Hardware.....
Wenn auf Bus xx von der HW ID xx ein Signal xx gesendet wird, erkennt Linux das... Jetzt geht es nur noch darum das DU Linux sagen musst was es mit diesem Signal anfangen soll.... Lic(d) ist da sicherlich ein guter Helfer.... Wenn Dein app dann damit umgehen kann.... perfekt. Ob die Eingabe dann vom Touchscreen, Tastatur, Browser oder FB kommt ist völlig egal .... das ist dann eine "& Verkettung" der möglichen (InputEvent)Eingaben. Hier mußt Du aber aufpassen das es keine Überlappungen (sich beißen) gibt.
Was mir noch ein wenig schleierhaft ist.... soll die "1" wirklich dargestellt werden auf "einem Display" oder einfach übergeben werden und dann der Zustand als "1" =gesetz , angezeigt werden? Ich bin für Variante 2... übergeben udn dann in "einer Anzeige" darstellen das "1" gesetzt (gedrückt) wurde... Die Zahl "2" würde bei -gesetzt- übrigens auch den Status "1"=gesetzt haben ^^

Erinnert mich gerade irgendwie an SPS Steuerungen ;) ... ich hoffe das Du den Wink mit dem Zaunpfahl verstanden hast ;)

ähm.... fällt mir gerade noch dazu ein... In der Gebäudetechnik, z.B. eine einfach Rolladen Steuerung usw..... in der Sicheheitstechnik... wird das schon lange genau so gemacht... Sourceforge und das Inet sind Dein Freund, man muß das Rad nicht zweimal erfinden ;)
Back to top
View user's profile Send private message
seyanora
n00b
n00b


Joined: 29 Oct 2004
Posts: 23
Location: Karlsruhe, Germany

PostPosted: Sat Mar 19, 2011 4:39 pm    Post subject: Reply with quote

Danke erstmal für die Antwort,

Also ich hatte nicht vor in meinem Programm direkt das Signal abzugreifen, das wär mir ne Nummer zu groß. Entweder ein Keypress-Event oder das Anklicken der jeweiligen Schaltfläche oder ein über den Socketport empfangenes Signal führt dazu, dass das gewünschte Relais geschaltet wird. Ich drück 1, Relais 1 schaltet. Ich drück 2, Relais 2 schaltet. Ich klick auf Button 1, Relais 1 schaltet wieder aus. Das funktioniert problemlos.

Dabei hoffte ich eben zusätzlich auf ein Tool, dass im Hintergrund läuft und die Tastendrücke der Fernbedienung in so ein Keypress-Event umleitet. Meine Anwendung muss das ja gar nicht wissen ob die 1 von Tastatur oder von der Fernbedienung empfangen wurde. Da hab ich mich wohl gründlich vertan, ich dachte ich kann in der lircd.conf Keybindings zuweisen so wie ich lustig bin: Auf Taste 3 wird 3 geschrieben, die "App Exit" Taste bekommt Alt+F4 zugewiesen usw.

Und genau da ist mein Problem, die Fernbedienung hängt rein als /dev/input/mouse1 bzw. ir-event drin, die P+ / P- Taste dient als Scrollrad, das Pad zum Bewegen des Mauzeigers und 2 weitere Tasten der FB als Rechts- und Linksklick. Dies wurde seit der Installation des imon Kernel-Modules automatisch so konfiguriert. Was ich in lircd.conf etc reinschreib hat überhaupt keine Auswirkung, lediglich bei irrecord kann ich die Tasten einlernen und finde entsprechende Konfiguration dann in der lircd.conf, aber ohne tatsächliche Funktion.

Der Touchscreen zeigt nur 2x8 Buttons an und dient lediglich zur Bedienung. Der Benutzer drückt auf den Bildschirm wo die Oberfläche des Programms zu sehen ist, das erkennt das als Mausklick und schickt den entsprechenden hex Wert an den LPT Port um das gewünschte Relais zu schalten. Wenn das aber mit der Fernbedienung solche Schwierigkeiten macht kauf ich mir ne Funktastatur mit abnehmbaren Numpad und nehm das zur Steuerung, schade wärs halt trotzdem weil das eigentlich im Projekt so vorgegeben ist.
Back to top
View user's profile Send private message
Schnulli
Guru
Guru


Joined: 25 Jun 2010
Posts: 320
Location: Bremen DE

PostPosted: Sat Mar 19, 2011 7:36 pm    Post subject: Reply with quote

seyanora wrote:
Danke erstmal für die Antwort,

Also ich hatte nicht vor in meinem Programm direkt das Signal abzugreifen, das wär mir ne Nummer zu groß. Entweder ein Keypress-Event oder das Anklicken der jeweiligen Schaltfläche oder ein über den Socketport empfangenes Signal führt dazu, dass das gewünschte Relais geschaltet wird. Ich drück 1, Relais 1 schaltet. Ich drück 2, Relais 2 schaltet. Ich klick auf Button 1, Relais 1 schaltet wieder aus. Das funktioniert problemlos.

Dabei hoffte ich eben zusätzlich auf ein Tool, dass im Hintergrund läuft und die Tastendrücke der Fernbedienung in so ein Keypress-Event umleitet. Meine Anwendung muss das ja gar nicht wissen ob die 1 von Tastatur oder von der Fernbedienung empfangen wurde. Da hab ich mich wohl gründlich vertan, ich dachte ich kann in der lircd.conf Keybindings zuweisen so wie ich lustig bin: Auf Taste 3 wird 3 geschrieben, die "App Exit" Taste bekommt Alt+F4 zugewiesen usw.

Und genau da ist mein Problem, die Fernbedienung hängt rein als /dev/input/mouse1 bzw. ir-event drin, die P+ / P- Taste dient als Scrollrad, das Pad zum Bewegen des Mauzeigers und 2 weitere Tasten der FB als Rechts- und Linksklick. Dies wurde seit der Installation des imon Kernel-Modules automatisch so konfiguriert. Was ich in lircd.conf etc reinschreib hat überhaupt keine Auswirkung, lediglich bei irrecord kann ich die Tasten einlernen und finde entsprechende Konfiguration dann in der lircd.conf, aber ohne tatsächliche Funktion.

Der Touchscreen zeigt nur 2x8 Buttons an und dient lediglich zur Bedienung. Der Benutzer drückt auf den Bildschirm wo die Oberfläche des Programms zu sehen ist, das erkennt das als Mausklick und schickt den entsprechenden hex Wert an den LPT Port um das gewünschte Relais zu schalten. Wenn das aber mit der Fernbedienung solche Schwierigkeiten macht kauf ich mir ne Funktastatur mit abnehmbaren Numpad und nehm das zur Steuerung, schade wärs halt trotzdem weil das eigentlich im Projekt so vorgegeben ist.


Moin
halt halt halt.... keine Verwirrung stiften (du & ich) ^^
um die "Signale" kümmert sich Lirc(d) ...... wenn in der conf dort alles sauber eingetragen ist kannst du es auch nutzen.....
Dein app sollte grundsätzlich in der Lage sein über Tastenkombinationen oder einzelne Tasten steuerbar zu sein..... wenn Du diese Hürde genommen hast kannst du alles von lirc an dein app übergeben und es funktioniert.....
Schau Dir als Bespiel VLC... Amarok und andere Programme an die über "Tastenkombinationen" gesteuert werden können..... Bringe es deinem app bei das zu können und du hast gewonnen....
Nein.. in der lirc conf kannst du nicht beliebig nach Lust und Laune etwas rein pinseln ^^ .. lirc kümmert sich eig. nur darum die eingaben von FB zu "vewalten" (mehr oder weniger) ... die Idee mit irrecord ist hier die richtige.....

hehe... mal langsam hier ^^ So schnell wollen wir doch wohl nicht die Flinte ins Korn werfen oder? Meinst du das eine Funk Tasta das anders macht ?? (zumindest wie die SIgnale eingehen und dann ausgewertet werden)....
Also.. soooo weit weg ist eine Tasta von einer FB nicht. Das was unterscheidet ist das sich das eine als Tasta anmeldet, das andere als FB..... Das mußt deinem app nur beibringen über Tasten EIngaben gesteuert zu werden... der Rest kommt dann fast von selbst..
Beispiel.. laut/leise auf Tasta und FB haben ein identisches Ergebnis..... lirc empfängt.... irrecord setzt um.. zack wirds lauter/leiser
Wenn die Tasten von deiner FB die du einsetzen willst erkannt werden.... und? was fehlt?...... fb>lric>?>app>ausgabe_lpt> :idea: ;)
So, ist der Knoten nun geplatzt? :lol:
Die 2. Lösung ist dir ja zu Hardcore mäßig ^^ also lassen wir es ^^ Die Idee es gleich mit Mini Tasta zu machen halte ich pers. für die beste Lösung ... gehen wird beides (früher oder später) ^^
Geh mal bei Trust, Hama, Logitech usw nachsehen was die im Angeot haben ;)

Hier.. ein direkter Vergleich.. welches ist denn nu die FB? oder etwa beide?
Back to top
View user's profile Send private message
seyanora
n00b
n00b


Joined: 29 Oct 2004
Posts: 23
Location: Karlsruhe, Germany

PostPosted: Sun Mar 27, 2011 6:08 pm    Post subject: Reply with quote

Soooo, melde mich mal wieder zurück

bin nun ein deutlichen Schritt weiter, ich kann Amarok etc mit der FB nun steuern und mir mit irexec auch eigene Texte auf die Konsole bringen. Lieber nicht fragen wie, aber das funzt nun.

Jetzt brauch ich aber dennoch Hilfe, ich hoffe du kannst bissel C programmieren ;-)

Wie bind ich das ins Programm ein, dass es auf externe Eingaben durch lirc etwas tut? Übers Netzwerk hab ich das schon recht gut hingekriegt, mittels einfachen if-abfragen .. also "if empfange zeichen xy, then do xy"... ich hoffe das verhält sich so ähnlich auch mit lirc, weiss aber gar nicht wie ich die abfragen soll...

Dann noch ein zweites Problem, zwar OT aber vielleicht auch son Hinweis.. ich hab ein LCD-Display an /dev/lcd0 hängen. Wenn ich da auf der Konsole echo "Hello World" >> /dev/lcd0 eingeb, erscheint hello world auf dem Display. Gibts da in C ne einfache Möglichkeit das auch anzusprechen (praktisch ein Kommando an die bash ausgeben) oder hab ich da ohne vorgegebene Funktion keine Chance?

lg ;-)

EDIT: Hat sich alles erledigt. Funzt. Zwar nicht elegant, aber immerhin.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum