Jump to content
Sign in to follow this  
Tjod

Tastaturbelegung für die OSD Farbtasten ändern

Recommended Posts

Tjod

So nach dem ich lange genug behauptet habe das man die Belegung der Farbtasten nicht ändern kann hier die Erklärung wie es doch geht.

 

Ganz direkte geht es nicht aber mit einem Umweg über Command.vbs. Da ich eigentlich keine Ahnung von VBS habe und es selber auch nicht brauche die Änderungen nur für den Fall das kein OSD Seite geöffnet ist.

 

Zuerst braucht man einen Inputbefehle mit einer ActionID von 20480 oder größer.

Durch die wird Command.vbs aufgerufen.

 

Dazu erstmal die OSD-Tastaturbelegung-geändert.remote (aus dem Anhang) über Optionen > Eingabe > Import laden und die Farbtasten für die neuen Befehle (ganz unten) anlernen.

 

Dann muss noch die Command.vbs aus dem Anhang nach ...\DVBViewer\Scripts\ kopieren.

 

sub main(Command)
Select Case Command

'OSD-Rot (geändert)
	Case 30500
		if osd.isVisible Then
			SendCommand(74)
		Else
			'OSD-Show Weather
			SendCommand(8206)
		End if 
'OSD-Grün (geändert)
	Case 30501
		if osd.isVisible Then
			SendCommand(75)
		Else
			'OSD-Show Timeline
			SendCommand(8201)
		End if 
'OSD-Gelb (geändert)
	Case 30502
		if osd.isVisible Then
			SendCommand(76)
		Else
			'OSD-Show Channels
			SendCommand(8199)
		End if 
'OSD-Blau (geändert)
	Case 30503
		if osd.isVisible Then
			SendCommand(77)
		Else
			'nicht geändert
			SendCommand(77)
		End if 

	Case Else
		osd.showInfoinTVpic "No action in th Command.vbs for this Action ID.",1000
End Select
end sub

Sollte euch die neue Belegung nicht gefallen könnt ihr einfach im Command.vbs nach Else einfach die ActionID SendCommand() ändern.

Alle möglichen ActionIDs findet ihr in der actions.ini im DVBViewer Verzeichnis.

OSD_Tastaturbelegung_ge_ndert.zip

Share this post


Link to post
Pino72

Hi Tjod,

 

kenn mich leider mit vbs und generell programmierung null aus...bin schon froh dass ich etwas hinter die skin programmierung gekommen bin.

 

Wenn ich das richtig verstanden habe kann ich ohne dass ein OSD eingeblendet ist die Farbtastenbelegung mit deinem script permanent ändern....werde das mal testen.

 

Es gibt eine Funktion die mir beim DVBViewer sehr fehlt und zwar ist das mit einer Taste einfach die Kanalliste (und zwar die FAVORITENSENDERLISTE) einzublenden und dann einfach per hoch/runter einen Sender an zu fahren und dann mit enter aus zu wählen! Wieso gibt es diese Funkiton nicht ???

 

Mit wlechem Aufruf bekomme ich diese einfache Favoritenliste mit den genannten Möglichkeiten? Kann man eigentlich generell NEUE Seiten zu den vorhandenen ######.xml hinzufügen? Also z.b. eben eine einfache schnörkellose Liste der Sender?

 

Danke schon mal.

Share this post


Link to post
Tjod
Es gibt eine Funktion die mir beim DVBViewer sehr fehlt und zwar ist das mit einer Taste einfach die Kanalliste (und zwar die FAVORITENSENDERLISTE)
Ich habe hier die OSD-Gelb auf die Senderliste umgelenkt. OSD-Gelb ruft im Normalfall die OSD-Favorietenliste auf. Dazu musst du also nichts ändern.

Hier mal eine Erklärung was die Zeilen machen:

 

'OSD-Gelb (geändert) = nur ein Kommentar alles in einer Zeile nach den ' wird Ignoriert.

Case 30502 = wenn die Taste mit der ActionID 30502 (siehe Inputbefehle) gedrückt wird werden die nachfolgenden Befehle abgearbeitet.

if osd.isVisible Then = wenn das OSD sichtbar ist führe die nachfolgenden Befehle aus

SendCommand(76) = sende Befehl OSD-Gelb an den DVBViewer

Else = wenn das OSD nicht sichtbar ist führe die nachfolgenden Befehle aus

'OSD-Show Channels = Kommentar

SendCommand(8199) = sende Befehl zeige OSD-Senderliste an den DVBViewer

end if = ende der if Unterscheidung

 

dann einfach per hoch/runter einen Sender an zu fahren und dann mit enter aus zu wählen! Wieso gibt es diese Funkiton nicht ???
Das geht doch, sowohl in der Senderliste als auch in der Favoriten liste. Nur wenn in der Favoriten Liste Ordner Verwendet werden ist ein Klick mehr nötig. Ich bevorzuge eine Sortierte Senderliste und nutze keine Favoriten.

 

Kann man eigentlich generell NEUE Seiten zu den vorhandenen ######.xml hinzufügen?
Nur über Plugins.

 

Bitte versucht in Zukunft in Themen Spezifischen Topic beim Thema zu Beinen und alle was nicht dazu gehört in einem anderen Topic zu schreiben.

Share this post


Link to post
nuts

auf die gefahr hin ebenfalls am thema vorbeizuschiessen ...

 

ich frage mich durch welche actionen bestimmte vb skripte gestartet werden können?

 

hier ists der input befehl > 20480 soweit ists klar.

 

können auch bestimmte "ereignisse" im DVBViewer scripte auslösen? ich denke da z.b. an das starten einer aufnahme oder so.

Share this post


Link to post
Moses

Es gibt spezielle scripte, die zu start und ende einer Aufnahme ausgeführt werden. Da sollten dummy-Versionen von auch schon im Scripte Ordner liegen (der mittlerweile auch ins Konfigurationsverzeichniss gewandert ist).

Share this post


Link to post
nuts

hm okay.

die inputbefehle und die dummy skripte im skripte ordner sind dann die einzigen möglichkeiten ein skript über die interne skript engine einzusetzen?

für alles andere müsste ich dem com server nach events abhören und dementsprechend über den com port antworten?

vbs sprache ist ja gar nicht so schwer - nur den aufbau der internen skript engine verstehe ich kein bisschen :)

Share this post


Link to post
Moses

COM Interface != Com Port... das COM Interface könntest du auch über ein "unabhängiges" vbs Script nutzen, also über ein Script, was du selber startest (oder halt z.B. durch den Autostart oder Taskplaner). Ein Beispiel für so ein Script wäre das epgupdate script, was hier im Forum noch irgendwo rumgeistern müsste... das hat auch nix mit der internen Scriptengine zu tun, sondern nutz rein das COM Interface.

 

Im Prinzip holt man sich für die Benutzung des COM Interfaces nen Objekt ab, über das man dann in Verbindung mit dem DVBViewer steht. Wenn man schonmal Objektorientiert programmiert hat, ist das eigentlich recht simpel. :)

 

Was die interne Engine genau kann, weiß ich leider auch nicht... aber soweit ich das bisher verstanden hab, ruft sie nur zu gegebenen Anlässen die scripte mit entsprechendem Namen auf.

Share this post


Link to post
Tjod

command.vbs wird durch eine AktionID ≦20480 aufgerufen.

sub main(command)
		osd.showInfoinTVpic "command.vbs "& command,1000
end sub

 

startrec.vbs beim Aufnahme beginn

http://www.DVBViewer.info/forum/index.php?...st&p=203217

stoprec.vbs beim Aufnahme ende

 

channelchange.vbs bei jedem Senderwechsel

Dim ChanLabel
sub main(ChannelNr)
ChanLabel = none
ChanLabel = ChannelManager(ChannelNr).Name
		osd.showInfoinTVpic "channelchange.vbs" & ChanLabel & ChannelNr ,1000
End Select
end sub

 

playlist.vbs wird bei jedem neuen Titel der aus einer Playlist wiedergegeben wird aufgerufen.

sub main(filename)
osd.showInfoinTVpic "playlist.vbs " & filename,1000
end sub

 

windowload.vbs wir bei jedem ersten Öffnen eines OSD Fensters angezeigt.

 

Und dann gibt es noch starttune.vbs aber das ist alles auch in "DVBViewer COM Interface.chm" beschrieben.

 

Das dazu von mir auch wenn jetzt die Diskusion schon etwas weiter ist :)

Und epgupd.vbs gibtz es hier :)

Share this post


Link to post
nuts

aha :)

 

also der com server (port?) sendet um empfängt ja events (darauf basiert z.b. die fernsteuerung über eventghost).

ich dachte, dass diese events vielleicht die skripte der internen engine starten können.

die interne engine beschränkt sich also auf die in der "DVBViewer COM Interface.chm" beschriebenen vb skripte - bleibt also der umweg über die gesendeten events ein externes skript aufzurufen, welches dann wieder befehle an den DVBViewer sendet?

 

edit \ hilft jetzt bei dem problem im "vorschläge und ideen forum" aber wie ich jetzt gelesen habe leider auch nicht, da der DVBViewer beim beenden der wiedergabe kein event sendet *grml*

Edited by nuts

Share this post


Link to post
Devastation

Hallo,

 

danke an Tjod für diesen Super Tip.

 

Ich würde aber gerne noch weiter gehen. Leider habe ich keine Ahnung von VB.

 

Anhand dieses Skripts und anderer die ich hier gefunden habe und durch lesen in der Com-Anleitung habe ich einfach mal versucht meine Lösung zu erarbeiten.

 

Leider habe ich da noch Probleme.

 

Was ich brauche: die OSD-left/right Tasten nicht nur doppelt sondern mehrfach belegen.

im TV-Modus Zoom up/down

im OSD-Modus OSD-left/right

beim Abspielen einer DVD/Videos Kapitel vor/zurück

 

Ich hab das folgendermaßen im Skript eingegeben:

'OSD-Left (geändert)
 Case 30004
if osd.isVisible Then
  SendCommand(2000)
	else if IsPlaying=true Then
		  SendCommand(112)	'Previous (Kapitel zurück)
		Else
		  SendCommand(105)	'Zoom Down
	End if
End if

'OSD-Right (geändert)
 Case 30005
if osd.isVisible Then
  SendCommand(2100)
	else if IsPlaying=true Then
		SendCommand(113)	  'Next (Kapitel vor)
		  Else
			SendCommand(104)  'Zoom Up
	End if
End if

 

Jetzt funktioniert der gewünschte OSD-Modus und das Zoom im TV-Modus.

Beim Abspielen einer DVD Datei habe ich aber auch die Zoomfunktion anstatt Next/previous.

 

Im der Com Hilfe finde ich zwar das isVisible das Tjod hier verwendet aber nicht wieso es hier osd.isVisible heissen muss. (Also die Logik erkenn ich schon, es geht ja ums OSD aber woher diese Info?

 

Ich nehme mal an ich brauche für IsPlaying auch so einen vorderen Teil. Aber welchen?

 

Oder bin ich hier komplett auf dem Holzweg?

 

Und noch eine Frage: gibt es eine Möglichkeit für osd.isVisible damit dies nur für das gesamte OSD ohne Mini-Epg gilt?

 

mit der Bitte um Hilfe

 

Devastation

Share this post


Link to post
Devastation

Hallo,

 

habe im Forum noch Girder vbs durchgesehen und habe das gefunden:

Du könntest in dem girder plugin script direkt isMediaplayback abfragen. Den Playstate kram muss ich mal genauer anschauen. Das ganze ist durch die vielen verschiedenen quellen (media, timeshift, dvd, dvb) recht komplex und manchmal etwas schwierig intern nachzuvollziehen. Ich vermute der Fehler liegt auf der DVBViewer seite. Wie gesagt, ich untersuche das mal. :)

Habe ich auch versucht (isMediaplayback) und jetzt klappt das bei den DVD Dateien mit der Umschaltung.

 

Das wo ich noch Hilfe bräuchte wäre eine Unterscheidung zwischen MiniEPG und den restlichen OSD.

 

Danke

 

Devastation

Share this post


Link to post
nuts

noch ein nachtrag von mir bezüglich eventghost.

 

dort können die angelegten inputbefehle auch eingebunden werden.

unter C:\Program Files\EventGhost\plugins\DVBViewer (bez. dem entsprechenden pfad) findet ihr eine .py datei.

diese mit dem editor öffnen und bis zu den schon angelegten befehlen scrollen (dürfte die ganze actions.ini sein).

 

am ende einfach den im DVBViewer angelegten namen eures eigenen befehls und die entsprechende actionID in gleicher form wie die bisherigen anlegen.

so sieht das dann aus z.b. aus (die letzten beiden sind von mir):

	("DVDMenu", "DVD Menu", None, 8246),
("ShutdownCard", "Shutdown Card", None, 12327),
("ShutdownMonitor", "Shutdown Monitor", None, 12328),
("StopGraph", "Stop Graph", None, 16383),
("Exit", "Exit", None, 12294),
("Test", "Test", None, 30500),
("OSD-Gelb","OSD-Gelb", None, 30502),

beim nächsten neustart von eventghost kann man dann den eigenen befehl dort als marko hinzufügen und eventghost sendet den entsprechenden com-befehl an den DVBViewer.

Share this post


Link to post
anjoku

Hallo,

ich möchte gerne auch die OSD Tasten umbelegen. Wie hier beschrieben Wiki Command.vbs.

Die command.vbs habe ich auch in scrips erstellt erstellt.

 

Zur Steuerung benutze ich Eventghost.

Was ich aber jetzt nicht verstehe ist der Absatz:

Hier ein Beispiel, wo die OSD-Farbtasten in Abhängigkeit von OSD-Seiten und die Pfeiltasten in Abhängigkeit von Timeshift und Dateiwiedergabe angepasst werden. Dazu müssen die entsprechenden Tasten auf Inputbefehle mit folgenden ActionIDs anlernent werden:

OSD-Rot = ActionID 30500

OSD-Grün = ActionID 30501

OSD-Gelb = ActionID 30502

OSD-Blau = ActionID 30503

OSD-Links = ActionID 30504

OSD-Rechts = ActionID 30505

OSD-aufwärts = ActionID 30506

OSD-abwärts = ActionID 30507

 

Müssen die ActionIDs, obwohl ich Eventghost benutze, trotzdem im DVBViewer angelernt werden?

 

Oder Erstelle ich die ActionIDs alleine in Eventghost?

 

In Eventghost gibt es ja bereits Aktionen für die OSD Tasten. Bleiben die unverändert?

 

Kann jemand helfen?

 

Viele grüße,

Andre

Share this post


Link to post
nuts
Müssen die ActionIDs, obwohl ich Eventghost benutze, trotzdem im DVBViewer angelernt werden?

Nein.

 

Oder Erstelle ich die ActionIDs alleine in Eventghost?

Du erstellst in EG Befehle mit den ActionIDs, die auch im command.vbs Skript abgearbeitet werden sollen.

 

In Eventghost gibt es ja bereits Aktionen für die OSD Tasten. Bleiben die unverändert?

Die bleiben unverändert und werden eben einfach nicht zugeordnet.

 

Bsp:

=> "custom_osd-red" Befehl mit der ActionID 30500 in EG erstellen und einem Event zuordnen (die rote Taste auf der Fernbedienung)

=> Der Orginalbefehl "OSD-Red" wird in EG nicht zugeordnet.

=> command.vbs erstellen um auf die ActionID 30500 zu reagieren.

 

'custom_osd-red 
 Case 30500 
       if osd.isVisible Then 
         ' dein Code
       else 
         ' dein Code  
       End if 
usw.

Share this post


Link to post
anjoku

vielen Dank nuts.

 

das ist mir gestern noch den ganzen abend durch den Kopf gegangen und so hatte ich es mir dann auch erklärt, und von dir kommt jetzt die Bestätigung so gut erklärt. :rolleyes:

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...