Android Box Keymap

  • Ich habe hier eine Android Box X98H Pro mit Kodi 18.9.
    Nun möchte das Lesezeichenmenü auf eine Taste legen, so daß ich ich während der Videowiedergabe direkt darauf zugreifen kann, ohne erst umständlich das OSD aufzurufen und dann zu scrollen.
    Gibt es eine Möglichkeit entsprechende Änderungen in der Box im Kodicode vorzunehmen oder wie könnte ich Änderungen der [definition=10,0][definition='3','0']keymap[/definition][/definition] machen?
    Vorlage hierzu der Thread Keyboard shortcut to Bookmarks during video playback?
    Danke

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

  • Habe einen Weg gefunden, in die Box in den Keymaps-Ordner diese Datei einzufügen:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <[definition=10,0][definition='3','0']keymap[/definition][/definition]>
    <FullscreenVideo>
    <keyboard>
    <v>ActivateWindow(videobookmarks)</v>
    </keyboard>
    </FullscreenVideo>
    <VideoBookmarks>
    <keyboard>
    <v>Back</v>
    </keyboard>
    </VideoBookmarks>
    </[definition=10,0][definition='3','0']keymap[/definition][/definition]>

    Funktioniert auch wunderbar.
    Ich möchte aber zur Bedienung der Box eine normale, die zur Box gelieferte, Fernbedienung benutzen.
    Diese hat aber keine Buchstaben- sondern nur Zahlentasten. Kann ich den Buchstaben v irgendeiner Zahl zuordnen? Das ändern in obiger Datei, v in 8 z.B. funktioniert nicht.

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

  • Ich bin gerade nicht zu Hause, daher nur mal grob, wie ich vorgehen würde

    • Taste auf der FB aussuchen, die durch keine andere Funktion belegt ist
    • das Kodi debug [definition='1','0']log[/definition] einschalten
    • Kodi neu starten
    • oben ausgesuchte Taste der FB drücken
    • nebenher ins [definition='1','1']debuglog[/definition] schauen, ob, und wenn ja, wie Kodi die Taste interpretiert
    • wenn Kodi die Taste "versteht" (im Log also was auftaucht), dann eine entsprechende "remote.xml" im "Keymaps" Ordner anlegen, die entsprechende Ein Beispiel einer solchen Datei findet man hier: https://github.com/xbmc/xbmc/blob…maps/remote.xml
    • In dieser Datei weißt man der gedrückten Taste einfach die gleiche Funktion zu, wie du es auch bei deiner Tastatur gemacht hast. Nur mit dem Unterschied, dass in der remote.xml remote anstelle von keyboard steht

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Danke für die Informationen.
    Nicht so ganz einfach mit der Box.
    Habe in Kodi [definition=12,8][definition=12,9]logging[/definition][/definition] aktiviert.
    Kodi neu gestartet.
    Habe dann auf der Fernbedienung die Taste 0 gedrückt.
    [definition=12,8][definition=12,9]logging[/definition][/definition] ausgeschaltet.
    In dem System der Box finde ich nur eine im Ordner temp eine [definition=9,2][definition=9,3]Kodi.[definition='1','0']log[/definition][/definition][/definition], diese muss ich aber erst aus der Box rauskopieren, da kein direkter Lesezugriff möglich ist (gesperrt).
    Nachstehend die Datei. Scheinbar wird die Taste erkannt

    2023-03-04 18:39:48.515 T:5169 [definition=12,0][definition=12,4][definition='1','3']Debug[/definition][/definition][/definition]: HandleKey: long-zero (0x100f030) pressed, action is Number0

    Habe das auch testweise mit Taste 5 gemacht, um zu sehen, dass ich richtig bin, 5 wird ebenso angezeigt.
    Nun lege ich eine Datei remote.xml.
    Da ich das mit der Beispieldatei noch nicht verstanden habe, was schreibe ich nun hierhin?

  • An dem Log Auszug sieht man, dass der "Handle Key" long-zero ist wenn du die Taste "0" drückst. Kodi identifiziert diese Taste also intern als "long-zero" und hat die "Action" als "Number0" gesetzt

    Ich würde es jetzt so machen

    Erstelle eine Datei mit Namen "remote.xml" und füge folgenden Inhalt ein:

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <[definition='3','0']keymap[/definition]>
      <global>
        <remote>
          <long-zero>dein-befehl-hier</long-zero>
        </remote>
      </global>
    </[definition='3','0']keymap[/definition]>

    Dann kopierst du die Datei an die gleiche Stelle wie du es bei deiner Datei oben schon gemacht hast. Dann Kodi neu starten und beten ;)

    Wisse aber, dass dann die Taste 0 "global" geändert wurde. Sie wird also immer und überall diese neu gesetzte Funktion haben. Du kannst es auch nur für ein gewisses "Fenster" setzen. Daher der Link zum Beispiel. Da findest du was bzgl "FullScreenVideo" oder ähnliches. Dann wäre die Funktion nur gültig wenn du ein Video um Full Screen sehen würdest. Du musst dann nur das "global" gegen das entsprechende Fenster ersetzen.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Da ich ziemlich unbeleckt bin was Programmierung angeht frage ich nochmals nach.
    Also ich habe hier zwei Dateien

    bookmarks.xml:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <[definition=10,0][definition='3','0']keymap[/definition][/definition]>
    <FullscreenVideo>
    <keyboard>
    <v>ActivateWindow(videobookmarks)</v>
    </keyboard>
    </FullscreenVideo>
    <VideoBookmarks>
    <keyboard>
    <v>Back</v>
    </keyboard>
    </VideoBookmarks>
    </[definition=10,0][definition='3','0']keymap[/definition][/definition]>

    und remote.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <[definition=10,0][definition='3','0']keymap[/definition][/definition]>
    <global>
    <remote>
    <long-zero>0</long-zero>
    </remote>
    </global>
    </[definition=10,0][definition='3','0']keymap[/definition][/definition]>

    beide im Kodiordner keymaps.

    In der remote.xml habe nun die 0 (Null) zwischen long-zero eingesetzt.
    Noch tut sich sich nichts, bzw.. Kodi reagiert nur auf v. Was mache ich falsch bzw. habe ich nicht verstanden, wie ist der Zusammenhang zwischen den Dateien?

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

  • So...jetzt bin ich zu Hause und habe auch wieder einen Rechner unter den Fingern ;)

    Wie die Dateien heißen ist erstmal egal ;). Kodi scannt den "Keymaps"-Ordner nach *.xml Dateien und verwendet die Keymaps, die darin liegen.

    Wenn du genau hin schaust, dann findest du den Unterschied selbst. Ich weise dich aber gern drauf hin.

    In deiner "bookmarks.xml" steht der xml-Tag: <keyboard> und auch sein Gegenstück: </keyboard>. Das lässt Kodi wissen, dass es sich dabei um ein Keymapping für eine Tastatur handelt.

    In der "remote.xml" steht an gleicher Stelle ein anderer Tag: <remote> und sein Gegenstück: </remote>. Das lässt Kodi wissen, dass es dabei um ein Keymapping für eine Fernbedienung handelt.

    Wenn wir jetzt ins Detail deiner "bookmarks.xml" gehen steht an einer Stelle die Zuweisung für die Taste v. Nämlich das hier:

    <v>ActivateWindow(videobookmarks)</v>

    Diese Zuweisung bzw. das was darin gemacht wird, nennt man grundlegend "Action". Eine Aktion/Handlung, die ausgeführt wird, wenn die Taste "v" gedrückt wird.

    Kodi hat also als "Handlekey" das "v" und du weißt diesem Key einen anderen Befehl/Action zu, nämlich: ActivateWindow(videobookmarks)

    Gehen wir nun ins Detail deiner remote.xml. Da hast du das mit dem "Handlekey" schon ganz richtig gemacht. In deinem Logauszug oben steht die "Action": Number0

    Du hast bei dir drin stehen:

    <long-zero>0</long-zero>

    Da steht also nur eine "0". Das ist für Kodi keine gültige "Action" für die Nummer "0". Das wäre dann Number0 und die Zuweisung des Befehls/der Action müsste dann folgerichtig so aussehen:

    <long-zero>Number0</long-zero>

    Das ist aber nicht das, was du im Endeffekt möchtest. Wenn du der Taste "0" deiner Fernbedienung die Funktion für das Öffnen der Bookmarks zuweisen möchtest, dann muss das wie folgt aussehen:

    <long-zero>ActivateWindow(videobookmarks)</long-zero>

    Solltest du eine andere Taste deiner Fernbedienung dafür verwenden wollen, musst du erst rausfinden, wie der "Handlekey" innerhalb Kodi lautet. Dann kannst du das anpassen.

    Die "Number0" musst du nicht extra zuweisen. Das ist schon per Standard so. Nur wenn du die Funktion der Taste "0" deiner Fernbedienung ändern möchtest, dann kannst du diese "Standard"-Funktion mit deiner eigenen überschreiben.

    Kodi hat per se schon Standard-Mappings deiner Tasten. Du musst in diese XML-Dateien auch nur die eintragen, die du anpassen möchtest. Kodi geht da in folgender Reihenfolge vor:

    • Kodi liest die Standard-Mappings für deine Fernbedienung ein, die die Entwickler vorgesehen haben
    • Kodi checkt, ob es eine xml-Datei in deinem Keymap-Ordner gibt

      • Wenn es eine xml-Datei gibt, dann liest Kodi die Mappings daraus aus und überschreibt diese mit den von dir gewünschten. Alle anderen Mappings bleiben unangetastet
      • Wenn es keine xml-Datei in dem Ordner gibt, dann hat Kodi nichts weiter zu tun und behält die Standard-Mappings bei.

    Ich hoffe es ist jetzt ein wenig klarer. Wenn nicht, dann sollten wir vielleicht mal einen Video-Call machen. Dann klären sich vielleicht alle Missverständnisse ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Wenn ich alles richtig verstanden habe, sollte es so aussehen?

    bookmarks.xml :


    remote.xml:

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <[definition='3','0']keymap[/definition]>
    <global>
    <remote>
    <long-zero>ActivateWindow(videobookmarks)</long-zero>
    </remote>
    </global>
    </[definition='3','0']keymap[/definition]>

    Läuft damit noch nicht

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

    2 Mal editiert, zuletzt von SkyBird1980 (5. März 2023 um 18:18) aus folgendem Grund: Bitte nutzt Code Tags

  • Wenn ich mir das Log so anschaue, gibt sich die FB als Keyboard zu erkennen. Es wurden die Taste(n) 0 mal kurz (zero) und etwas länger gedrückt (long-zero).

    Code
    2023-03-04 18:39:50.052 T:5169   DEBUG: Keyboard: scancode: 0x07, sym: 0x0030, unicode: 0x0030, modifier: 0x0
    2023-03-04 18:39:50.053 T:5169   DEBUG: HandleKey: zero (0xf030) pressed, action is Number0
    2023-03-04 18:39:50.484 T:5169   DEBUG: Keyboard: scancode: 0x07, sym: 0x0030, unicode: 0x0030, modifier: 0x0
    2023-03-04 18:39:50.484 T:5169   DEBUG: HandleKey: long-zero (0x100f030) pressed, action is Number0
    2023-03-04 18:39:50.529 T:5169   DEBUG: Keyboard: scancode: 0x07, sym: 0x0030, unicode: 0x0030, modifier: 0x0
    2023-03-04 18:39:50.529 T:5169   DEBUG: HandleKey: long-zero (0x100f030) pressed, action is Number0


    Die bookmarks.xml würde ich so aufbauen, die remote.xml kannst Du löschen:


    EDIT: Nach Änderungen an den XML-Dateien solltest Du auch Kodi immer neu starten, damit diese Datei(en) auch neu eingelesen werden.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (5. März 2023 um 18:44)

  • Jo....das stimmt natürlich. Ich hatte mir das Log nicht angesehen. In dem Fall hast du absolut Recht @PvD

    Obwohl es eine Fernbedienung ist, sieht Kodi diese als "Tastatur" an:


    Code
    2023-03-04 18:39:47.651 T:5169   DEBUG: Keyboard: scancode: 0x07, sym: 0x0030, unicode: 0x0030, modifier: 0x0
    2023-03-04 18:39:47.651 T:5169   DEBUG: HandleKey: zero (0xf030) pressed, action is Number0

    Der Schlüssel dazu ist das: Keyboard: scancode bei einer Fernbedienung, die auch als solche erkannt wird, steht dort (wenn ich nicht falsch liege): "Remote: scancode"

    Zur kleinen Erklärung, was PvD da gemacht hat....

    Einmal hat er die Taste "0" den Befehl zugewiesen, der die Bookmarks öffnet, wenn das Fenster "FullScreenVideo" ist. Und dann, wenn das Bookmark-Fenster aktiv ist (<VideoBookmarks>), dann hat er der gleichen Taste die Funktion "Zurück" zugewiesen, was das Fenster verlässt und und wieder zurück zum vorherigen Fenster ("FullScreenVideo"). Und...es wurde "zero" anstelle von "long-zero" verwendet, was den Effekt hat, dass es auch bei kurzen Tastendrücken funktioniert.

    Danke für die Korrektur. Das es als Tastatur erkannt wird, hätte ich vorher checken sollen. [ay]

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Super, hat geklappt. Habe direkt auch ausprobiert statt zero five einzugeben. Schon reagiert es mit der Taste 5. Gut zu wissen, falls man die Taste 0 für andere Sachen benutzen will.
    Vielen Dank für Deine Mühe.
    Jetzt habe ich nur noch einen kleinen Wunsch. Bei Aufruf der Lesezeichen erscheint erst ein Menüzeile mit Lesezeichen erstellen und Lesezeichen löschen. Dorthin springt der Cursor als erstes und ich muss runterklicken um auf die Lesezeichen zu kommen. Da ich die Lesezeichen anderweitig erstelle kann dieses Menü weg bzw. sollte der Cursor direkt auf die Lesezeichenzeile springen. Geht das irgendwie?

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

  • Bei Aufruf der Lesezeichen erscheint erst ein Menüzeile mit Lesezeichen erstellen und Lesezeichen löschen. Dorthin springt der Cursor als erstes und ich muss runterklicken um auf die Lesezeichen zu kommen. Da ich die Lesezeichen anderweitig erstelle kann dieses Menü weg bzw. sollte der Cursor direkt auf die Lesezeichenzeile springen. Geht das irgendwie?

    Nein. Es wird das Lesezeichen-Fenster aktiviert und dann ist Ende Gelände. Eine Art Makrofunktion - also das Ausführen mehrerer Tastendrücke hintereinander - kennt Kodi nicht. Die einzige Möglichkeit besteht im Ändern des Codes für das Bookmarkfenster im verwendeten Skin selbst. Hier wird i.d.R ein sogenanntes "Defaultcontrol" definiert, auf welchem beim Aufrufen des Fensters fokussiert wird.

    Abgesehen davon, dass diese Geschichte fehlerträchtig und nicht ganz trivial ist, musst Du die Änderungen jedesmal nach einem Skin-Update auch wieder einspielen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Wenn es nicht geht auch ok, damit kann ich leben.
    Wichtig ist aber, dass ich mit der nummerischen Fernbedienung die Funktion Lesezeichen gut bedienen kann. Vielleicht auch für andere interessant, da diese Fernbedienungen für solche Boxen verbreitet sind.
    Ich danke euch nochmals.

    Android-Box X98H Pro, Android 11, Kodi 18.9 Leia

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!