Suche

lichtschattenblog

Monat

Mai 2016

Kodi – Keymapping

In diesem Beitrag möchte ich am Beispiel einer Hama MCE Remote-Fernbedienung zeigen, wie im Kodi entsprechende Belegungen der Fernbedienung und Tastatur zusätzlich hinzugefügt werden können.

 

Hinweis: Wer eine andere Fernbedienung verwendet, die auch als Maus genutzt werden kann oder folgende Ausgaben in der kodi.log

unknown mouse command 57605
unknown mouse command 57606
unknown mouse command 57607
unknown mouse command 57608

sieht, dem empfehle ich sätzlich meinen folgenden und neueren Beitrag zu lesen: http://wp.me/p6v8bD-18R

 

Das Anwendungsszenario ist hierbei die Verwendung von Kodi als reinen TV- und Radio-Client unter Verwendung eines PVR-Clients. Die Fernbedienung soll als Beispiel folgende Funktionen unter Linux und Windows haben:

 

  • Im Vollbild TV-Programm soll mit Auswahl der OK-Taste die Kanalliste im Bild eingeblendet werden
  • Mit Auswahl der gelben Taste soll direkt in die Ansicht für’s TV-Progamm gewechselt werden
  • Mit Auswahl der blauen Taste soll direkt in die Ansicht für’s Radio-Programm gewechselt werden
  • Mit den oberen farbigen Tasten und der Reihe direkt darunter soll bei erneutem Druck auf die Taste immer in Vollbild gewechselt werden.
  • Mit den farbigen Tasten und der Reihe direkt darunter soll mit maximal zweifacher Auswahl in den Vollbildmodus gewechselt werden.

Dadurch wird eine gute Bedienung ähnlich bei einem Fernseher ermöglicht.

 

Allgemein ist zunächst zu beachten, dass es unterschiedliche Arten von Fernbedienungen gibt, die auf unterschiedliche Arten mit dem PC kommunizieren. Daher kann der Artikel nicht vollständig auf alle Eventualitäten eingehen.

Zusätzlich hat jedes Betriebssystem seine Besonderheiten. Daher können nicht alle Funktionen der Tasten auch unter Windows vollständig umgesetzt werden und das Mapping ist teilweise sehr unterschiedlich in der Durchführung.

Zusätzlich sollten folgende Quellen beachtet werden:

Ungewöhnlich finde ich zum Beispiel, dass in Windows erkannte Tastenkombination mit STRG- Taste und ALT-Taste im Kodi lediglich die STRG-Taste zur Tastenkombination erkannt wird. Ein Mapping ist trotzdem möglich.

Im Fall der Hama MCE Remote-Fernbedienung erfolgt die Übertragung zwischen Fernbedienung und Empfänger über Infrarotlicht. Der Empfänger ist jedoch kein RC6-konformer infrarot Empfänger. Die Eingaben werden als Tastatur- oder Mauseingabe interpretiert.

Grundlegende Informationen zum Mapping von Tasten etc:

Bei jeder Kodi-Installation werden Dateien für das Keymapping im Kodi-Installationsverzeichnis gespeichert. Die wichtigsten Dateien sind hierbei die Lircmap.xml, remote.xml, keyboard.xml, mouse.xml und appcommand.xml.

Unter Windows werden Aktionen durch diverse Eingaben vorwiegend durch keyboard.xml, mouse.xml und appcommand.xml gesteuert.

Unter Linux sind dies zusätzlich Lircmap.xml und remote.xml, da die Eingaben bei Fernbedienungen abweichend über Windows zunächst über die Lircmap den sogenannten Kommandos und anschließend durch die remote.xml den Aktionen zugeordnet werden.

Um neue Funktionen zu integrieren, müssen wir im User-Verzeichnis vom Kodi eigene Dateien mit dem entsprechend notwendigen Aufbau erstellen. Alternativ kann eine Kopie aus dem Kodi-Systemverzeichnis erstellt werden. Zusätzliche Elemente werden entsprechend angewandt.

Zur Funktionsweise, wie Kodi die Anpassungen anwendet, werden zunächst die Dateien aus dem Kodi-System-Verzeichnis zum Start eingelesen und anschließend werden zusätzliche oder veränderte Elemente entsprechend durch zusätzliche Dateien im Kodi-User-Verzeichnis neu zugeordnet. Daher müssen nicht die Dateien für das Mapping im User-Verzeichnis nicht alle neuen Elemente enthalten. Es werden lediglich die Anpassungen benötigt. Dadurch singt auch der mögliche spätere Aufwand bei Aktualisierungen von Kodi.

Zusätzlich muss beachtet werden, dass Kodi alle xml-Dateien in den keymaps-Verzeichnissen einliest, egal wie sie heißen. Wer also bei Test mehrere Versionen in diesem Verzeichnis speichert, wird ggf. ungewünschte Funktionen haben oder die gewünschten werden nicht aktiv. Gleichzeitig können so ohne größerem Aufwand verschiedene Funktionen durch mehrere Dateien hinzugefügt werden, sofern diese nicht gleiche Tasten und Tastenkombinationen mappen.

Um zu sehen, welche Taste welche Funktion hat, gibt es eine Vielzahl von Möglichkeiten.

Zusammenfassend ein paar Informationen zu den Speicherorten der Mapping-Dateien:

Kodi-User-Verzeichnis

Windows: %appdata%\Kodi\userdata\keymaps

Linux: folgt

OpenElec: folgt

Kodi-System-Verzeichnis

Windows: folgt

Linux: folgt

OpenElec: folgt

 

Vorbereitung Mapping unter Windows – Variante über Standardmittel:

Unter Windows gibt es zunächst die Möglichkeit zu prüfen, ob die Fernbedienung zum Teil Tastenkombinationen oder regulären Eingaben bei Verwendung der Tasten sendet. Hierzu verwenden wir den Texteditor notepad und eine bestehende Verknüpfung.

Bitte an dieser Stelle alle geöffnete Dateien zur Sicherheit speichern. Natürlich auch den Link zu diesem Blogeintrag. 😉 Es kann passieren, dass durch einige der Tasten an der Fernbedienung das System heruntergefahren wird!

Die grüne Start-Taste wird ggf., je nach Windows-Variante, das Media Center starten.

Beim Texteditor gehen wir die Tasten der Fernbedienung durch. Da einige der Tasten  Tastenkombinationen senden, werden gelegentlich Dialoge geöffnet. Anbei ein Beispiel:

kodi_keymapping_windows_notepad_test

Wir sehen, dass bei der zunächst leeren Datei, zusätzliche Zeilen durch ENTER, eingefügt wurden. Die Zifferntasten im unteren Bereich der Fernbedienung hatten als Ausgabe die Zahlen von 0 bis 9 und *, sowie #-Taste. Gewisse Tasten der Fernbedienung zeigen uns ihre gesendete Eingaben durch erscheinende oder fehlende Dialoge. Im Beispiel mit dem Dialog der zu speichernden Daten hatte die Close-Taste ALT + F4 gesendet. Die Clear-Taste zeigt hier zunächst keine Wirkung. Die erkannten Tasten dokumentieren wir entsprechend:

kodi_keymapping_remote_test_notepad

Zum Test mit der Verknüpfung öffnen wir via Rechtsklick das Eigenschaften-Menü über das sich öffnende Kontextmenü. In den Eigenschaften wechseln wir in den Aktenreiter Verknüpfung. Wir klicken in das Feld Tastenkombinationen mittels Maus und probieren anschließend an der Fernbedienung die jeweilgen Tasten durch.

kodi_keymapping_lnk_keys

Eine Besonderheit, die mir auch erst nach längeren Zeit aufgefallen war, ist, dass die Tastenkombinationen teilweise unterschiedlich sein können, je nachdem ob der Ziffernblock an der Tastatur aktiv ist oder nicht.

kodi_keymapping_num_off

kodi_keymapping_num_on

Bei unseren Tests wird uns auffallen, dass bei Verwendung der Clear-Taste das Fenster sich schließen wird. Dies entspricht der ESC-Taste. Auch hier dokumentieren wir die Eingaben.

kodi_keymapping_remote_test_notepad_lnk

Windows – Keycodes ermitteln:

Im Kodi gibt es hierzu zwei Möglichkeiten.

Möglichkeit 1 -Logging durch Kodi:

Im Standard-Skin von Kodi wechseln wir in die Systemeinstellungen und anschließend nach Logging, wo wir Enable debug logging aktivieren.

kodi_keymapping_enable_debug_logging

Anschließend wird im Skin der Log-Pfad ausgegeben:

kodi_keymapping_logging_info

Jetzt können wir durch das Betrachten im Log entsprechende vom System erkannte Eingaben sehen.

Die Log-Datei kodi.log befindet sich unter Windows im Verzeichnis:

%appdata%\Kodi

Ein Beispiel für die Verwendung der Maus:

08:11:05 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:11:05 T:10148   DEBUG: ------ Window Init (Home.xml) ------
08:11:06 T:10148   DEBUG: CInputManager::ProcessMouse: trying mouse action leftclick
08:11:06 T:10148   DEBUG: Activating window ID: 10004
08:11:06 T:10148   DEBUG: ------ Window Deinit (Home.xml) ------
08:11:06 T:10148   DEBUG: ------ Window Init (Settings.xml) ------
08:11:07 T:10148   DEBUG: CInputManager::ProcessMouse: trying mouse action rightclick
08:11:07 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Deactivate
08:11:08 T:10148   DEBUG: ------ Window Deinit (Settings.xml) ------
08:11:08 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:11:08 T:10148   DEBUG: ------ Window Init (Home.xml) ------

… ein Beispiel für Tastatur:

08:14:11 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:14:11 T:10148   DEBUG: ------ Window Init (Home.xml) ------
08:14:12 T:10148   DEBUG: Keyboard: scancode: 0x1c, sym: 0x000d, unicode: 0x000d, modifier: 0x0
08:14:12 T:10148   DEBUG: CInputManager::OnKey: return (0xf00d) pressed, action is Select
08:14:12 T:10148   DEBUG: Activating window ID: 10004
08:14:12 T:10148   DEBUG: ------ Window Deinit (Home.xml) ------
08:14:12 T:10148   DEBUG: ------ Window Init (Settings.xml) ------
08:14:12 T:10148   DEBUG: Keyboard: scancode: 0x01, sym: 0x001b, unicode: 0x001b, modifier: 0x0
08:14:12 T:10148   DEBUG: CInputManager::OnKey: escape (0xf01b) pressed, action is PreviousMenu
08:14:12 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Deactivate
08:14:13 T:10148   DEBUG: ------ Window Deinit (Settings.xml) ------
08:14:13 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:14:13 T:10148   DEBUG: ------ Window Init (Home.xml) ------

… und ein Beispiel zur Verwendung der Hama MCE Remote:

08:15:01 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:15:01 T:10148   DEBUG: ------ Window Init (Home.xml) ------
08:15:01 T:10148   DEBUG: Keyboard: scancode: 0x1c, sym: 0x000d, unicode: 0x000d, modifier: 0x0
08:15:01 T:10148   DEBUG: CInputManager::OnKey: return (0xf00d) pressed, action is Select
08:15:01 T:10148   DEBUG: Activating window ID: 10004
08:15:02 T:10148   DEBUG: ------ Window Deinit (Home.xml) ------
08:15:02 T:10148   DEBUG: ------ Window Init (Settings.xml) ------
08:15:02 T:10148   DEBUG: Keyboard: scancode: 0x0e, sym: 0x0008, unicode: 0x0008, modifier: 0x0
08:15:02 T:10148   DEBUG: CInputManager::OnKey: backspace (0xf008) pressed, action is Back
08:15:02 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Deactivate
08:15:03 T:10148   DEBUG: ------ Window Deinit (Settings.xml) ------
08:15:03 T:10148   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
08:15:03 T:10148   DEBUG: ------ Window Init (Home.xml) ------

Mit den Zeilen im Log:

CInputManager::ProcessMouse: trying mouse action leftclick

CInputManager::OnKey: return (0xf00d) pressed, action is Select

CInputManager::OnKey: ctrl-s (0x1f053) pressed, action is Screenshot

CInputManager::OnKey: alt-leftalt (0x4f0d4) pressed, action is

sehen wir die erkannten Eingaben und die folgende Aktion im Kodi. Am Beispiel von:

CInputManager::OnKey: ctrl-s (0x1f053) pressed, action is Screenshot

liegen uns folgende Informationen vor:

OnKey: <erkannte Tastatureingabe als Kodi Key Name> (0x <Keycode hex> ) pressed, action is <Aktion gemäß keymapping>

Am Beispiel von 0x1f0d0 erhalten wir nach Umwandlung von hex zu dec den Key Code 127184:

kodi_keymapping_calc_hex

kodi_keymapping_calc_dec

Eine weitere Variante zur Ermittlung des Key code ist die Verwendung des Add-on Script – Keymap Editor. Hierzu führen wir folgende Schritte durch:

Auswahl Add-ons im Settings-Menü:

kodi_keymapping_addon_install_keymap01.jpg

Auswahl Search:

kodi_keymapping_addon_install_keymap02

keymap zur Suche eingeben und Suche durchführen:

kodi_keymapping_addon_install_keymap03

Script – Keymap Editor mit Enter auswählen …

kodi_keymapping_addon_install_keymap04.jpg

und Installation durchführen:

kodi_keymapping_addon_install_keymap05

Nach der Installation führen wir das Add-on aus. Zur Sicherheit zunächst die Reihenfolge zum Aufruf des Add-on, falls nicht bekannt.

Zum Aufruf des Add-on wechseln wir über das System-Menü ins Add-ons Menü. Dort wählen wir My add-ons aus:

kodi_keymapping_addon_test_keymap01.jpg

Anschließend wechseln wir zu Program add-ons:

kodi_keymapping_addon_test_keymap02.jpg

… und wählen Keymap Editor aus:

kodi_keymapping_addon_test_keymap03

Hier starten wir jetzt das Add-on über Auswahl Run:

kodi_keymapping_addon_test_keymap04

Wählen Edit aus:

kodi_keymapping_addon_test_keymap05.jpg

Dann, da wir nur testen, Global:

kodi_keymapping_addon_test_keymap06.jpg

Anschließend zum Test Navigation:

kodi_keymapping_addon_test_keymap07

Wir wählen eine entsprechende Taste aus:

kodi_keymapping_addon_test_keymap08.jpg

Wählen Edit key:

kodi_keymapping_addon_test_keymap09.jpg

… und verwenden innerhalb von fünf Sekunden eine Taste an der Fernbedienung. Im Ergebnis für die linke Richtungstaste haben wir als Key code: 61570

kodi_keymapping_addon_test_keymap10

Die Bestimmung der Key codes kann anschließend für alle weiteren Tasten durchgeführt werden, wobei es natürlich reicht mit immer der gleichen Auswahl im Add-on dies durchzuführen, sofern zu den Tests die Eingaben nicht gespeichert werden sollen.

Wichtig ist, wer an dieser Stelle bereits ein neues Mapping durchführen möchte um dieses auch anschließend zu speichern, sollte nicht die Close-Taste an der Fernbedienung verwenden, da sofort das Kodi beendet wird!

Bitte an dieser Stelle erneut beachten, dass die erkannten Key codes auch hier je nach aktiver Numlock verschieden sein können.

Alle erkannten Tasten mit Key code 16839168 sollten zusätzlich durch das Betrachten des Log beachtet werden. Es kann hier sein, dass die Eingaben als appcommand im Log erscheinen. Am Beispiel von den Lautstärketasten, die mit Key code 16839168 und Tastenkombination STRG + ALT + B, sowie STRG + ALT + C, erkannt wurden, sehen wir im LOG:

09:08:19 T:4628 DEBUG: WinEventsWin32.cpp: APPCOMMAND 10
09:08:19 T:4628 DEBUG: CApplication::OnAppCommand: unknown appcommand 10
09:08:19 T:4628 DEBUG: Keyboard: scancode: 0x00, sym: 0x0000, unicode: 0x0000, modifier: 0x0
09:08:19 T:4628 DEBUG: CInputManager::OnKey: long-0 (0x100f200) pressed, action is
09:08:20 T:4628 DEBUG: WinEventsWin32.cpp: APPCOMMAND 9
09:08:20 T:4628 DEBUG: CApplication::OnAppCommand: unknown appcommand 9
09:08:20 T:4628 DEBUG: Keyboard: scancode: 0x00, sym: 0x0000, unicode: 0x0000, modifier: 0x0
09:08:20 T:4628 DEBUG: CInputManager::OnKey: long-0 (0x100f200) pressed, action is

Bzgl. den hierbei nicht bekannten Kommandos kommt später noch eine mögliche Lösung.

Anschließend wechseln wir aus den Untermenüs durch dreimalige Verwendung der ESC-Taste an der Tastatur. Bei Bedarf kann die Eingabe gespeichert werden.

kodi_keymapping_addon_test_keymap11

Sofern die Eingaben gespeichert wurden, finden wir jetzt eine gen.xml-Datei im Verzeichnis:

%appdata%\Kodi\userdata\keymaps

Der Inhalt der Datei (etwas verschönert) sieht dann wie folgt aus:

kodi_keymapping_gen_xml_test_left_key.jpg

Da die Close-Taste Kodi beendet, habe ich den Key code dem Log entnommen:

14:13:06 T:3676   DEBUG: Keyboard: scancode: 0x38, sym: 0x0134, unicode: 0x0000, modifier: 0x100
14:13:06 T:3676   DEBUG: CInputManager::OnKey: alt-leftalt (0x4f0d4) pressed, action is

 

Die dokumentierten Key Codes ergeben folgende Übersicht:

kodi_keymapping_remote_test_keycodes.jpg

Ich persönlich versuche unter Windows immer zunächst zu ermitteln, welche Tastenkombination hinter welcher Taste verwendet werden. Ist keine hinterlegt, bietet sich dann die Verwendung von Key Codes an, sofern diese geeignet sind.

Variante 3 – zeitweise Verwendung einer speziellen mapping-Datei:

Es ist theoretisch möglich, durch eine spezielle xml-Datei die Eingaben als Meldung im Kodi auszugeben. Zu einem späteren Zeitpunkt werde ich dies entsprechend in meinem Blog vorstellen.

Linux:

Unter Linux ist die Funktionsweise bereits anders. Hier können wir den Befehl irw verwenden. Ich persönlich nutze ein System auf Basis von Ubuntu mit Kodi oder OpenElec und verwende putty / ssh zum Zugriff auf die Shell. Bei Verwendung der Steuerungstasten OK, hoch, links, rechts und runter erhalten wir folgende Ausgabe:

kodi_keymapping_irw_test

Die jeweilige doppelte Zeile mit _UP in der Ausgabe bedeutet das Loslassen der Taste. Nach der erkannten Taste wird das erkannte Device devinput ausgegeben, welches später beachtet werden muss.

Nach Test aller Tasten haben wir folgende Belegung mit irw dokumentiert:

kodi_keymapping_remote_test_irw
Im Unterverzeichnis system der Kodi-Installation (hier OpenElec) gibt es eine Lircmap.xml, die für eine Vielzahl von bekannten Devices entsprechende Mappings bereits enthält. Diese sind für das hier erkannte Device devinput:

<remote device="devinput">
        <left>KEY_LEFT</left>
        <right>KEY_RIGHT</right>
        <up>KEY_UP</up>
        <down>KEY_DOWN</down>
        <select>KEY_OK</select>
        <enter>KEY_ENTER</enter>
        <clear>KEY_DELETE</clear>
        <start>KEY_MEDIA</start>
        <back>KEY_EXIT</back>
        <record>KEY_RECORD</record>
        <play>KEY_PLAY</play>
        <pause>KEY_PAUSE</pause>
        <stop>KEY_STOP</stop>
        <forward>KEY_FASTFORWARD</forward>
        <reverse>KEY_REWIND</reverse>
        <volumeplus>KEY_VOLUMEUP</volumeplus>
        <volumeminus>KEY_VOLUMEDOWN</volumeminus>
        <pageplus>KEY_CHANNELUP</pageplus>
        <pageminus>KEY_CHANNELDOWN</pageminus>
        <skipplus>KEY_NEXT</skipplus>
        <skipminus>KEY_PREVIOUS</skipminus>
        <title>KEY_EPG</title>
        <subtitle>KEY_SUBTITLE</subtitle>
        <language>KEY_LANGUAGE</language>
        <info>KEY_INFO</info>
        <display>KEY_ZOOM</display>
        <mute>KEY_MUTE</mute>
        <power>KEY_POWER</power>
        <eject>KEY_EJECTCD</eject>
        <eject>KEY_EJECTCLOSECD</eject>
        <menu>KEY_DVD</menu>
        <menu>KEY_MENU</menu>
        <myvideo>KEY_VIDEO</myvideo>
        <mymusic>KEY_AUDIO</mymusic>
        <mypictures>KEY_CAMERA</mypictures>
        <livetv>KEY_TUNER</livetv>
        <mytv>KEY_TV</mytv>
        <teletext>KEY_TEXT</teletext>
        <one>KEY_NUMERIC_1</one>
        <two>KEY_NUMERIC_2</two>
        <three>KEY_NUMERIC_3</three>
        <four>KEY_NUMERIC_4</four>
        <five>KEY_NUMERIC_5</five>
        <six>KEY_NUMERIC_6</six>
        <seven>KEY_NUMERIC_7</seven>
        <eight>KEY_NUMERIC_8</eight>
        <nine>KEY_NUMERIC_9</nine>
        <zero>KEY_NUMERIC_0</zero>
        <star>KEY_NUMERIC_STAR</star>
        <hash>KEY_NUMERIC_POUND</hash>
        <red>KEY_RED</red>
        <green>KEY_GREEN</green>
        <yellow>KEY_YELLOW</yellow>
        <blue>KEY_BLUE</blue>
        <recordedtv>KEY_PVR</recordedtv> 
        <liveradio>KEY_RADIO</liveradio> 
    </remote>

Zum Beispiel wird KEY_LEFT left zugeordnet, KEY_OK wird select und KEY_ENTER wird enter.

Wenden wir die Umsetzung durch die Lircmap.xml auf unsere Fernbedienung an, erhalten wir:

kodi_keymapping_remote_test_irw_lircmap

Im Ergebnis sehen wir, dass die Tasten KEY_WWW und KEY_VCR keine Funktionen derzeit im Kodi haben.

Die umgesetzten Tasten bekommen anschließend über die remote.xml im keymaps-Verzeichnis unterhalb des Kodi System-Verzeichnis ihren Aktionen zugewiesen. In diesem Verzeichnis gibt es weitere, ggf. relevante Konfigurationsdateien wie appcommand.xml und keyboard.xml.

kodi_keymapping_openelec_path_system_keymaps

Für das spätere Mapping von Tasten müssen für den Anwender neue Lircmap.xml und remote.xml erstellt, bzw. modifiziert werden.

Ermitteln der notwendigen Segmente in den Mapping-Dateien

Update: Neuere Version für Kodi 17 unter http://wp.me/p6v8bD-1ex

Unabhängig der Betriebssystem-Variante benötigen wir die Information in welcher aktuellen Ansicht im Kodi (getestet unter Kodi 16) welches Segment der Mapping-Dateien beachtet werden muss. Zur Lösung habe ich folgende Datei mit Namen longpressinfo.xml erstellt:

 

<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <global>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Global", 3)</i>
    </keyboard>
  </global>
  <LoginScreen>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "LoginScreen", 3)</i>
    </keyboard>
  </LoginScreen>
  <Home>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Home", 3)</i>
    </keyboard>
  </Home>
  <VirtualKeyboard>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VirtualKeyboard", 3)</i>
    </keyboard>
  </VirtualKeyboard>
  <MyTVChannels>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyTVChannels", 3)</i>
    </keyboard>
  </MyTVChannels>
  <MyTVRecordings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyTVRecordings", 3)</i>
    </keyboard>
  </MyTVRecordings>
  <MyTVTimers>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyTVTimers", 3)</i>
    </keyboard>
  </MyTVTimers>
  <MyRadioChannels>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyRadioChannels", 3)</i>
    </keyboard>
  </MyRadioChannels>
  <MyRadioRecordings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyRadioRecordings", 3)</i>
    </keyboard>
  </MyRadioRecordings>
  <MyRadioTimers>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyRadioTimers", 3)</i>
    </keyboard>
  </MyRadioTimers>
  <TVGuide>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "TVGuide", 3)</i>
    </keyboard>
  </TVGuide>
  <MyFiles>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyFiles", 3)</i>
    </keyboard>
  </MyFiles>
  <MyMusicPlaylist>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyMusicPlaylist", 3)</i>
    </keyboard>
  </MyMusicPlaylist>
  <MyMusicPlaylistEditor>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyMusicPlaylistEditor", 3)</i>
    </keyboard>
  </MyMusicPlaylistEditor>
  <MyMusicFiles>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyMusicFiles", 3)</i>
    </keyboard>
  </MyMusicFiles>
  <MyMusicLibrary>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyMusicLibrary", 3)</i>
    </keyboard>
  </MyMusicLibrary>
  <FullscreenVideo>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "FullscreenVideo", 3)</i>
    </keyboard>
  </FullscreenVideo>
  <VideoTimeSeek>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VideoTimeSeek", 3)</i>
    </keyboard>
  </VideoTimeSeek>
  <FullscreenInfo>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "FullscreenInfo", 3)</i>
    </keyboard>
  </FullscreenInfo>
  <PlayerControls>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "PlayerControls", 3)</i>
    </keyboard>
  </PlayerControls>
  <Visualisation>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Visualisation", 3)</i>
    </keyboard>
  </Visualisation>
  <MusicOSD>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MusicOSD", 3)</i>
    </keyboard>
  </MusicOSD>
  <VisualisationSettings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VisualisationSettings", 3)</i>
    </keyboard>
  </VisualisationSettings>
  <VisualisationPresetList>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VisualisationPresetList", 3)</i>
    </keyboard>
  </VisualisationPresetList>
  <SlideShow>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "SlideShow", 3)</i>
    </keyboard>
  </SlideShow>
  <ScreenCalibration>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "ScreenCalibration", 3)</i>
    </keyboard>
  </ScreenCalibration>
  <GUICalibration>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "GUICalibration", 3)</i>
    </keyboard>
  </GUICalibration>
  <VideoOSD>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VideoOSD", 3)</i>
    </keyboard>
  </VideoOSD>
  <VideoMenu>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VideoMenu", 3)</i>
    </keyboard>
  </VideoMenu>
  <OSDVideoSettings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "OSDVideoSettings", 3)</i>
    </keyboard>
  </OSDVideoSettings>
  <OSDAudioSettings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "OSDAudioSettings", 3)</i>
    </keyboard>
  </OSDAudioSettings>
  <VideoBookmarks>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "VideoBookmarks", 3)</i>
    </keyboard>
  </VideoBookmarks>
  <MyVideoLibrary>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyVideoLibrary", 3)</i>
    </keyboard>
  </MyVideoLibrary>
  <MyVideoFiles>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyVideoFiles", 3)</i>
    </keyboard>
  </MyVideoFiles>
  <MyVideoPlaylist>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyVideoPlaylist", 3)</i>
    </keyboard>
  </MyVideoPlaylist>
  <MyPictures>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyPictures", 3)</i>
    </keyboard>
  </MyPictures>
  <ContextMenu>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "ContextMenu", 3)</i>
    </keyboard>
  </ContextMenu>
  <MusicInformation>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MusicInformation", 3)</i>
    </keyboard>
  </MusicInformation>
  <MovieInformation>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MovieInformation", 3)</i>
    </keyboard>
  </MovieInformation>
  <PictureInfo>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "PictureInfo", 3)</i>
    </keyboard>
  </PictureInfo>
  <Teletext>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Teletext", 3)</i>
    </keyboard>
  </Teletext>
  <Favourites>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Favourites", 3)</i>
    </keyboard>
  </Favourites>
  <NumericInput>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "NumericInput", 3)</i>
    </keyboard>
  </NumericInput>
  <FullscreenLiveTV>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "FullscreenLiveTV", 3)</i>
    </keyboard>
  </FullscreenLiveTV>
  <FullscreenRadio>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "FullscreenRadio", 3)</i>
    </keyboard>
  </FullscreenRadio>
  <PVROSDChannels>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "PVROSDChannels", 3)</i>
    </keyboard>
  </PVROSDChannels>
  <PVROSDGuide>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "PVROSDGuide", 3)</i>
    </keyboard>
  </PVROSDGuide>
  <MyTVSettings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MyTVSettings", 3)</i>
    </keyboard>
  </MyTVSettings>
  <FileBrowser>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "FileBrowser", 3)</i>
    </keyboard>
  </FileBrowser>
  <ShutdownMenu>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "ShutdownMenu", 3)</i>
    </keyboard>
  </ShutdownMenu>
  <AddonInformation>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "AddonInformation", 3)</i>
    </keyboard>
  </AddonInformation>
  <AddonSettings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "AddonSettings", 3)</i>
    </keyboard>
  </AddonSettings>
  <Addon>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Addon", 3)</i>
    </keyboard>
  </Addon>
  <Programs>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Programs", 3)</i>
    </keyboard>
  </Programs>
  <Settings>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Settings", 3)</i>
    </keyboard>
  </Settings>
  <MediaFilter>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "MediaFilter", 3)</i>
    </keyboard>
  </MediaFilter>
  <Weather>
    <keyboard>
       <i mod="longpress">Notification("keymap info", "Weather", 3)</i>
    </keyboard>
  </Weather>
</keymap>

Diese Datei muss zunächst ins keymaps-Verzeichnis mit den User-Daten kopiert werden.

Mit Hilfe eines längeren Tastendrucks auf Taste i wird dann im Skin (getestet mit dem Standard Skin) eine Meldung ausgegeben, aus welcher wir sehen können, welcher Bereich aus der xml-Datei aktiv ist. Sollte bei den Tests hierbei Global ausgegeben werden, fehlt ein entsprechender Bereich (zum Beispiel bei späteren Kodi-Versionen).

kodi_keymapping_keymap_info.jpg

 

Keymapping unter Windows:

Damit wir jetzt entsprechende Funktionen unserer Fernbedienung zusätzlich übergeben können, benötigen wir zunächst eine geeignete Vorlage.

Eine Möglichkeit ist, die keyboard.xml aus dem Kodi System-Verzeichnis zu kopieren, bzw. notwendige Elemente aus der Datei zu kopieren. Die keyboard.xml-Datei befindet sich bei Windows 64bit-Varianten unter:

%programfiles(x86)%\kodi\system\keymaps

Bitte nicht die Dateien im Kodi-System-Verzeichnis bearbeiten. Dies werden ggf. bei späteren Aktualisierungen von Kodi aktualisiert.

Eine andere Möglichkeit besteht, über das Add-on Keymap Editor für die gewünschten Ansichten zumindest einfache Funktionen zu hinterlegen. Nach dem Speichern der Anpassungen verfügen wir zumindest um eine geeignete Grundstruktur wo wir ggf. zusätzliche Elemente und Aktionen hinterlegen.

Ich persönlich verwende eine Kopie der keyboard.xml, die ich ins keymaps-Verzeichnis der User-Daten speichere und anschließend zu hamamceremote.xml umbenannt habe.

Zunächst versuchen wir die OK-Taste im Vollbild vom TV-Programm zu aktivieren. Leider besteht durch das ermittelte Enter die Möglichkeit, dass es auch ein return sein kann. Dies können wir im Bedarfsfall auch dem Log entnehmen oder wir führen entsprechende Tests durch. Bei der Hama MCE Remote ist es definitiv ein return. Wer weitere Tests mit einer 102-Tasten-Tastatur durchführt wird im LOG sehen, dass die Enter-Taste am Ziffernblock sich zur Return-Taste wirklich unterscheidet. Damit die neue Funktion nicht nur bei der Fernbedienung, sondern auch mit Tastatur funktioniert, habe ich beide Varianten hinterlegt:

  <FullscreenLiveTV>
    <keyboard>
    <enter>Playlist</enter>
    <return>Playlist</return>
    </keyboard>
  </FullscreenLiveTV>

Ggf. kann es bei anderen Fernbedienung sinnvoll oder nötig sein zusätzlich neben enter und return auch select zu integrieren.

Danach definieren wir global die gelbe Taste für TV-Programm und die blaue Taste für die Radio-Programme:

  <global>
    <keyboard>
    <!-- <key id='127053'>ActivateWindow(RadioChannels)</key> -->
    <m mod="ctrl">ActivateWindow(RadioChannels)</m>
    <t mod="ctrl,shift">ActivateWindow(TVChannels)</t>
    </keyboard>
  </global>

Als Beispiel habe ich für die blaue Taste die Variante mit Verwendung der key id hinterlegt. Diese ist mit <!– und –> auskommentiert und wird daher nicht von Kodi verwendet. Wer dies entsprechend verwenden möchte, muss:

<key id='127053'>ActivateWindow(RadioChannels)</key>

verwenden und ggf.

<m mod="ctrl">ActivateWindow(RadioChannels)</m>

löschen.

Wichtige Info: Die global hinterlegten Aktionen werden unabhängig der aktuellen Ansicht aktiv, wenn nicht innerhalb der aktuellen Ansicht eine andere Funktion für die Eingabe definiert ist!

Zur Durchführung erster Tests können bei laufendem Kodi die neuen Tasten über die Tastenkombination STRG + SHIFT + k aktiviert werden. Diese Kombination ist in der keyboard.xml-Datei im keymaps-Verzeichnis des Kodi-System-Verzeichnis mit der Aktion entsprechend hinterlegt.

kodi_keymapping_system_keyboard_xml_reloadkeymaps.jpg

Zusätzlich definiere ich die dritte Taste in der Reihe unter der farbigen Reihe gleich der gelben Taste zum Aufruf TV-Programm. Wir haben nun:

  <global>
    <keyboard>
    <!-- <key id='127053'>ActivateWindow(RadioChannels)</key> -->
    <m mod="ctrl">ActivateWindow(RadioChannels)</m>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    <t mod="ctrl,shift">ActivateWindow(TVChannels)</t>
    </keyboard>
  </global>

Anschließend definieren wir für die jeweiligen Ansichten, dass bei erneuter Auswahl in den Vollbildmodus gewechselt wird:

  <MyTVChannels>
    <keyboard>
    <t mod="ctrl,shift">Fullscreen</t>
    <t mod="ctrl">Fullscreen</t>
    </keyboard>
  </MyTVChannels>

  <MyRadioChannels>
    <keyboard>
    <m mod="ctrl">Fullscreen</m>
    </keyboard>
  </MyRadioChannels>

  <MyPictures>
    <keyboard>
    <i mod="ctrl">Fullscreen</i>
    </keyboard>
  </MyPictures>

  <MyVideoLibrary>
    <keyboard>
    <e mod="ctrl">Fullscreen</e>
    </keyboard>
  </MyVideoLibrary>

  <TVGuide>
    <keyboard>
    <g mod="ctrl">Fullscreen</g>
    </keyboard>
  </TVGuide>

  <MyTVRecordings>
    <keyboard>
    <o mod="ctrl">Fullscreen</o>
    </keyboard>
  </MyTVRecordings>

Da wir zuvor zwei Tasten definiert haben, um in die Ansicht MyTVChannels zu wechseln, haben wir für bei Tasten auch in MyTVChannels den Wechseln in den Vollbildmodus definiert.

Jetzt aktivieren wir im Vollbildmodus vom LiveTV und Radio über die OK-Taste die Kanalliste:

  <FullscreenLiveTV>
    <keyboard>
    <enter>ActivateWindow(PVROSDChannels)</enter>
    <return>ActivateWindow(PVROSDChannels)</return>
    </keyboard>
  </FullscreenLiveTV>

  <FullscreenRadio>
    <keyboard>
    <enter>ActivateWindow(PVROSDChannels)</enter>
    <return>ActivateWindow(PVROSDChannels)</return>
    </keyboard>
  </FullscreenRadio>

 

Mit dem aktivieren der neuen Tasten durch die Tastenkombination STRG + SHIFT + k sehen wir, dass der jeweilige Wechsel zurück in den Vollbildmodus funktioniert, jedoch ist es nicht möglich von MyTVChannels zu MyRadioChannels und umgekehrt zu wechseln. Daher erweitern wir diese entsprechend zu:

  <MyTVChannels>
    <keyboard>
    <t mod="ctrl,shift">Fullscreen</t>
    <t mod="ctrl">Fullscreen</t>
    <m mod="ctrl">ActivateWindow(RadioChannels)</m>
    </keyboard>
  </MyTVChannels>

  <MyRadioChannels>
    <keyboard>
    <m mod="ctrl">Fullscreen</m>
    <t mod="ctrl,shift">ActivateWindow(TVChannels)</t>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    </keyboard>
  </MyRadioChannels>

Zusätzlich werden wir feststellen, dass bei FullscreenLiveTV die dritte Taste der Reihe unter den farbigen Tasten nicht in die TV-Programm-Ansicht wechselt, sondern die Position der Untertitel steuert. Um dies zu erreichen habe ich FullscreenLiveTV entsprechend angepasst:

 <FullscreenLiveTV>
    <keyboard>
    <enter>ActivateWindow(PVROSDChannels)</enter>
    <return>ActivateWindow(PVROSDChannels)</return>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    </keyboard>
  </FullscreenLiveTV>

Am Ende definieren wir nur noch für alle Tasten der farbigen und die direkt darunter befindliche Reihe so, dass bei sich geöffnetem VideoOSD-Menü diese wieder schließt:

  <VideoOSD>
    <keyboard>
    <c>Close</c>
    <e mod="ctrl">Close</e>
    <g mod="ctrl">Close</g>
    <i mod="ctrl">Close</i>
    <m mod="ctrl">Close</m>
    <m mod="ctrl,shift">Close</m>
    <o mod="ctrl">Close</o>
    <t mod="ctrl">Close</t>
    <t mod="ctrl,shift">Close</t>
    </keyboard>
  </VideoOSD>

 

Im Ergebnis habe ich folgende Datei hamamceremote.xml für mein Windows:

<?xml version="1.0" encoding="UTF-8"?>
<keymap>

  <global>
    <keyboard>
    <!-- <key id='127053'>ActivateWindow(RadioChannels)</key> -->
    <m mod="ctrl">ActivateWindow(RadioChannels)</m>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    <t mod="ctrl,shift">ActivateWindow(TVChannels)</t>
    </keyboard>
  </global>
  
  <FullscreenLiveTV>
    <keyboard>
    <enter>ActivateWindow(PVROSDChannels)</enter>
    <return>ActivateWindow(PVROSDChannels)</return>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    </keyboard>
  </FullscreenLiveTV>

  <FullscreenRadio>
    <keyboard>
    <enter>ActivateWindow(PVROSDChannels)</enter>
    <return>ActivateWindow(PVROSDChannels)</return>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    </keyboard>
  </FullscreenRadio>

  <MyTVChannels>
    <keyboard>
    <t mod="ctrl,shift">Fullscreen</t>
    <t mod="ctrl">Fullscreen</t>
    <m mod="ctrl">ActivateWindow(RadioChannels)</m>
    </keyboard>
  </MyTVChannels>

  <MyRadioChannels>
    <keyboard>
    <m mod="ctrl">Fullscreen</m>
    <t mod="ctrl,shift">ActivateWindow(TVChannels)</t>
    <t mod="ctrl">ActivateWindow(TVChannels)</t>
    </keyboard>
  </MyRadioChannels>

  <MyPictures>
    <keyboard>
    <i mod="ctrl">Fullscreen</i>
    </keyboard>
  </MyPictures>

  <MyVideoLibrary>
    <keyboard>
    <e mod="ctrl">Fullscreen</e>
    </keyboard>
  </MyVideoLibrary>

  <TVGuide>
    <keyboard>
    <g mod="ctrl">Fullscreen</g>
    </keyboard>
  </TVGuide>

  <MyTVRecordings>
    <keyboard>
    <o mod="ctrl">Fullscreen</o>
    </keyboard>
  </MyTVRecordings>

  <VideoOSD>
    <keyboard>
    <c>Close</c>
    <e mod="ctrl">Close</e>
    <g mod="ctrl">Close</g>
    <i mod="ctrl">Close</i>
    <m mod="ctrl">Close</m>
    <m mod="ctrl,shift">Close</m>
    <o mod="ctrl">Close</o>
    <t mod="ctrl">Close</t>
    <t mod="ctrl,shift">Close</t>
    </keyboard>
  </VideoOSD>

</keymap>

 

Bei den Tests zur Ermittlung der Key codes waren bereits Probleme mit den Lautstärke-Tasten aufgefallen, in dem wir im Log unknown appcommand 9 und unknown appcommand 10 sehen konnten. Beim Betrachten der appcommand.xml im keymaps-Verzeichnis vom Kodi-System-Verzeichnis sind die Tasten zur Lautstärkesteuerung deaktiviert.

<?xml version="1.0" encoding="UTF-8"?>
 <keymap>
 <global>
 <appcommand>
 <browser_back>Back</browser_back>
 <browser_forward/>
 <browser_refresh/>
 <browser_stop>Stop</browser_stop>
 <browser_search/>
 <browser_favorites>ActivateWindow(Favourites)</browser_favorites>
 <browser_home>FirstPage</browser_home>
       <volume_mute/>
       <volume_down/>
       <volume_up/>
 <next_track>SkipNext</next_track>
 <prev_track>SkipPrevious</prev_track>
 <stop>Stop</stop>
 <play_pause>PlayPause</play_pause>
 <launch_mail/>
 <launch_media_select>ActivateWindow(MyMusic)</launch_media_select>
 <launch_app1>ActivateWindow(MyPrograms)</launch_app1>
 <launch_app2>ActivateWindow(MyPrograms)</launch_app2>
 <play>Play</play>
 <pause>Pause</pause>
 <fastforward>FastForward</fastforward>
 <rewind>Rewind</rewind>
 <channelup>PageUp</channelup>
 <channeldown>PageDown</channeldown>
 </appcommand>
 </global>
 </keymap>

 

Unter Windows 7 hat die folgende Variante bei mir funktioniert, nicht jedoch unter Windows 10. Ggf. muss dies über die Registrierung erfolgen.

Zum Aktivieren der Tasten habe ich daher eine zusätzliche volumecontrol.xml mit folgendem Inhalt im Verzeichnis keymap des User-Kodi-Verzeichnis erstellt:

<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <global>
    <appcommand>
      <volume_mute>Mute</volume_mute>
      <volume_down>VolumeDown</volume_down>
      <volume_up>VolumeUp</volume_up>
    </appcommand>
  </global>
</keymap>

Nachdem wir die neuen Tasten aktiviert haben, sehen wir dann im LOG für die Tasten Lautstärke Plus, Lautstärke Minus und Mute:

13:26:52 T:2844   DEBUG: WinEventsWin32.cpp: APPCOMMAND 10
13:26:52 T:2844   DEBUG: CApplication::OnAppCommand: appcommand 10, trying action VolumeUp
13:26:52 T:2844   DEBUG: CAnnouncementManager - Announcement: OnVolumeChanged from xbmc
13:26:52 T:2844   DEBUG: GOT ANNOUNCEMENT, type: 64, from xbmc, message OnVolumeChanged
13:26:52 T:2844   DEBUG: AddOnLog: Tvheadend HTSP Client: pvr.hts - Announce(flag=Application, sender=xbmc, message=OnVolumeChanged)
13:26:52 T:2844   DEBUG: ------ Window Init (DialogVolumeBar.xml) ------
13:26:52 T:2844   DEBUG: Keyboard: scancode: 0x00, sym: 0x0000, unicode: 0x0000, modifier: 0x0
13:26:52 T:2844   DEBUG: CInputManager::OnKey: long-0 (0x100f200) pressed, action is
13:26:53 T:2844   DEBUG: WinEventsWin32.cpp: APPCOMMAND 9
13:26:53 T:2844   DEBUG: CApplication::OnAppCommand: appcommand 9, trying action VolumeDown
13:26:53 T:2844   DEBUG: CAnnouncementManager - Announcement: OnVolumeChanged from xbmc
13:26:53 T:2844   DEBUG: GOT ANNOUNCEMENT, type: 64, from xbmc, message OnVolumeChanged
13:26:53 T:2844   DEBUG: AddOnLog: Tvheadend HTSP Client: pvr.hts - Announce(flag=Application, sender=xbmc, message=OnVolumeChanged)
13:26:53 T:2844   DEBUG: ------ Window Init (DialogVolumeBar.xml) ------
13:26:53 T:2844   DEBUG: Keyboard: scancode: 0x00, sym: 0x0000, unicode: 0x0000, modifier: 0x0
13:26:53 T:2844   DEBUG: CInputManager::OnKey: long-0 (0x100f200) pressed, action is
13:26:55 T:2844   DEBUG: ------ Window Deinit (DialogVolumeBar.xml) ------
13:26:55 T:2844   DEBUG: WinEventsWin32.cpp: APPCOMMAND 8
13:26:55 T:2844   DEBUG: CApplication::OnAppCommand: appcommand 8, trying action Mute
13:26:55 T:2844   DEBUG: CAnnouncementManager - Announcement: OnVolumeChanged from xbmc
13:26:55 T:2844   DEBUG: GOT ANNOUNCEMENT, type: 64, from xbmc, message OnVolumeChanged
13:26:55 T:2844   DEBUG: AddOnLog: Tvheadend HTSP Client: pvr.hts - Announce(flag=Application, sender=xbmc, message=OnVolumeChanged)
13:26:55 T:2844   DEBUG: Keyboard: scancode: 0x00, sym: 0x0000, unicode: 0x0000, modifier: 0x0
13:26:55 T:2844   DEBUG: CInputManager::OnKey: long-0 (0x100f200) pressed, action is

Somit wird nun die Lautstärke direkt im Kodi gesteuert.

Zum Deaktivieren der Lautstärkeregelung im Kodi muss lediglich die Dateiendung von volumecontrol.xml geändert werden.

 

Keymapping unter Linux:

Für das Mapping der Tasten der Fernbedienung mit aktuell keiner Funktion erstellen wir im User-Verzeichnis eine neue Lircmap.xml, direkt im User-Verzeichnis von Kodi.

Zunächst sieht die Datei wie folgt aus:

<lircmap>
    <remote device="devinput">
    </remote>
</lircmap>

Diese erweitere ich nun um folgende Funktion:

  • KEY_VCR wird zur Taste mytv

Im Ergebnis sieht der Inhalt wie folgt aus:

<lircmap>
    <remote device="devinput">
        <mytv>KEY_VCR</mytv>
    </remote>
</lircmap>

Wichtig ist hierbei, dass devinput der Ausgabe von irw entspricht.

Bei ersten Tests sehen wir im Log (Kodi neu gestartet!):

kodi_keymapping_kodi_log_newLircmapxml

Zu sehen ist hierbei, dass zunächst die keymaps-Dateien und die Lircmap.xml aus dem Kodi-Systemverzeichnis geladen werden. Anschließend wird die Lircmap.xml aus dem Kodi-Benutzerverzeichnis gelesen und die Funktionen für das Device devinput hinzugefügt.

Nach den Tests sehen wir im Log:

kodi_keymapping_remote_test_irw_lircmap_new_keys_v2

Somit ist die neue Taste bereits ins System erfolgreich integriert.

Als erstes Betrachten wir die remote.xml aus dem keymaps-Verzeichnis des Kodi-System-Verzeichnis. Dort ist folgende Zuordnung bereits hinterlegt, die wir zur Vereinfachung des Mapping über die Lircmap.xml neu zuordnen:

<liveradio>ActivateWindow(RadioChannels)</liveradio>

Somit sieht unsere Lircmap.xml wie folgt aus:

<lircmap>
    <remote device="devinput">
        <mytv>KEY_VCR</mytv>
        <liveradio>KEY_AUDIO</liveradio>
    </remote>
</lircmap>

Zusätzlich setzen wir die Taste KEY_TUNER mit KEY_VCR gleich:

<lircmap>
    <remote device="devinput">
        <mytv>KEY_VCR</mytv>
        <liveradio>KEY_AUDIO</liveradio>
        <mytv>KEY_TUNER</mytv>
    </remote>
</lircmap>

und mappen KEY_EPG dem EPG-Aufruf zu:

<lircmap>
    <remote device="devinput">
        <mytv>KEY_VCR</mytv>
        <liveradio>KEY_AUDIO</liveradio>
        <guide>KEY_EPG</guide>        
        <mytv>KEY_TUNER</mytv>
    </remote>
</lircmap>

Zum Vergleich – In der Lircmap aus dem Kodi-System-Verzeichnis sind für uns ungünstige Zuordnungen hinterlegt:

<title>KEY_EPG</title>
<livetv>KEY_TUNER</livetv>

 

Anschließend integrieren wir die neuen Funktionen über eine neue remote.xml-Datei im keymaps-Verzeichnis.

Zunächst aktivieren wir die Darstellung der Kanalliste im Vollbild:

  <FullscreenLiveTV>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
    </remote>
  </FullscreenLiveTV>

  <FullscreenRadio>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
    </remote>
  </FullscreenRadio>

Da in meinem Fall im FullscreenLiveTV und FullscreenRadio nicht ins EPG gewechselt werden kann (ist global definiert – <guide>ActivateWindow(TVGuide)</guide> ), erweitern wir dies entsprechend:

  <FullscreenLiveTV>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
        <guide>ActivateWindow(TVGuide)</guide>
    </remote>
  </FullscreenLiveTV>

  <FullscreenRadio>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
        <guide>ActivateWindow(TVGuide)</guide>
    </remote>
  </FullscreenRadio>

Danach definieren wir den Wechsel in den Vollbildmodus über die Reige der farbigen Tasten und der direkt darunter:

  <MyTVChannels>
    <remote>
        <mytv>Fullscreen</mytv>
    </remote>
  </MyTVChannels>

  <MyRadioChannels>
    <remote>
        <liveradio>Fullscreen</liveradio>
    </remote>
  </MyRadioChannels>

  <MyPictures>
    <remote>
        <mypictures>Fullscreen</mypictures>
    </remote>
  </MyPictures>

  <MyVideoLibrary>
    <remote>
        <myvideo>Fullscreen</myvideo>
    </remote>
  </MyVideoLibrary>

  <TVGuide>
    <remote>
        <guide>Fullscreen</guide>
    </remote>
  </TVGuide>

… und vereinfachen den Wechsel aus dem VideoOSD-Menü:

  <VideoOSD>
    <remote>
        <mytv>Close</mytv>
        <liveradio>Close</liveradio>
        <guide>Close</guide>
        <mypictures>Close</mypictures>
        <myvideo>Close</myvideo>
    </remote>
  </VideoOSD>

Im Ergebnis habe ich folgende Datei:

<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <global>
    <remote>

    </remote>
  </global>

  <FullscreenLiveTV>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
        <guide>ActivateWindow(TVGuide)</guide>
    </remote>
  </FullscreenLiveTV>

  <FullscreenRadio>
    <remote>
        <select>ActivateWindow(PVROSDChannels)</select>
        <guide>ActivateWindow(TVGuide)</guide>
    </remote>
  </FullscreenRadio>

  <MyTVChannels>
    <remote>
        <mytv>Fullscreen</mytv>
    </remote>
  </MyTVChannels>

  <MyRadioChannels>
    <remote>
        <liveradio>Fullscreen</liveradio>
    </remote>
  </MyRadioChannels>

  <MyPictures>
    <remote>
        <mypictures>Fullscreen</mypictures>
    </remote>
  </MyPictures>

  <MyVideoLibrary>
    <remote>
        <myvideo>Fullscreen</myvideo>
    </remote>
  </MyVideoLibrary>

  <TVGuide>
    <remote>
        <guide>Fullscreen</guide>
    </remote>
  </TVGuide>

  <VideoOSD>
    <remote>
        <mytv>Close</mytv>
        <liveradio>Close</liveradio>
        <guide>Close</guide>
        <mypictures>Close</mypictures>
        <myvideo>Close</myvideo>
    </remote>
  </VideoOSD>

</keymap>

 

Epilog:

folgt

Advertisements

DELL WYSE Thin Client BIOS bei Meldung Unlock Key Hint Number entsperren

Beim Versuch des BIOS-Zugriffs auf einen neuen Thin Client vom Typ Dell Wyse Z90D7  wurde mir nach der dritten Fehleingabe (defekte Taste) folgende Meldung ausgegeben:

wyse_systemlocked01

Nach dem Neustart des Systems war dann folgende Meldung zu sehen:

wyse_systemlocked02

Zur Behebung meines Problems musste ich lediglich korrekt (neue Tastatur) das Standard-Passwort der WYSE-Thin Client-Familie:

Fireport

korrekt eingeben. Eine Freischaltung über den Support war somit nicht notwendig. Bei der zunächst gestarteten Suche nach einer Lösung waren mir sehr viele Webseiten aufgefallen, die durch Zahlung von 30 Dollar oder 34 Euro via Paypal angeblich den notwendigen Unlock Key generieren. Eine entsprechende Lösung bei vergessenem Passwort kann meiner Meinung nach nur durch den Support erfolgen:

http://www.dell.com/support/contents/de/de/dedhs1/article/Product-Support/Dell-Subsidiaries/wyse

Ggf. ist es möglich, je nach Modell, das Passwort durch entfernen der BIOS-Batterie oder dem Stecken eines Jumper zurückzusetzen.

Kritisieren muss ich, dass die Meldung am Client nicht auf den Webseiten von Dell bzw. Wyse zu finden war. Hierdurch werden Geschäftspraktiken möglich, die nicht im Sinne des Kunden sind.

Microsoft Windows Server 2012 Eval-Edition aktivieren

Zur Aktivierung einer Microsoft Windows Server 2012 Eval-Edition als Microsoft Windows Server 2012 Standard Edition müssen folgende Befehle ausgeführt werden.

Zunächst prüfen wir die bestehende Version mittels:

dism /online /get-currentedition

Als Ausgabe sollte mindestens folgende Information vorliegen:

Aktuelle Edition : ServerStandardEval

Um zu sehen, welche Editionen zur Umstellung zur Verfügung stehen, kann der folgende Befehl verwendet werden:

dism /online /get-targeteditions

Zur Festlegung der korrekten Edition wird der folgende Befehl mit dem korrekten Produktschlüssel benötigt:

dism /online /set-edition:ServerStandard /ProductKey:AAAAA-BBBBB-CCCCC-DDDDD-EEEEE /AcceptEula

Anschließend Server neustarten.

Nach dem Neustart mit dem Befehl

slui 4

die Installation mittels telefonischer Aktivierung aktivieren.

Erstelle eine kostenlose Website oder Blog – auf WordPress.com.

Nach oben ↑