StreamController schreibt keinen Text

Started by dpulver, 2025/08/11, 17:47:18

Previous topic - Next topic

dpulver

Hallo Zusammen, bin neu hier weil ich gestern von Mint auf Siduction umgestiegen bin.

Ich habe ein Elegato StreamDeck und im AppStore gibt es ja dafür die App "StreamController", die ich auch unter Mint im Einsatz hatte.

Ich möchte per Tastendruck einen Text schreiben lassen, also praktisch eine Tastatureingabe-Simulation. Hierfür gibt es in der App die Aktion [Betriebssystem] - [Text schreiben]. Will ich diese verwenden, erscheint im Fenster zum Einstellen der Funktion unten der Fehler "Missing permission. Please add this udev rule".

In Mint musste ich das umgehen, indem ich xdotool installiert habe und dann die Aktion [Betriebssystem] - [Befehl ausführen] verwende und dann den Befehl "xdotool type 'Mein Text...'" absetze. Aber leider wird auch dieser nicht ausgeführt bzw. erzeugt bei mir keine Tastatureingabe...

Wie kann ich nun irgendwie mit StreamController einen Text tippen lassen ? Die Funktion ist elementar für mich da täglich hundert mal verwendet.

Für Eure Hilfe bin ich schon jetzt dankbar.

Gruß
Dirk

devil

Bist du denn der Aufforderung "Missing permission. Please add this udev rule" nachgekommen?

dpulver

Leider habe ich keine Ahnung wie/wo ich was eintragen muss. Die Frage an KI gegeben lieferte mir leider auch nichts brauchbares....

devil

Ich habe vor Jahren zu dem Thema einen Artikel veröffentlicht, der noch aktuell genug sein sollte: https://www.linux-community.de/ausgaben/linuxuser/2019/05/unsichtbarer-helfer/

dpulver

Ok, danke - hab's mir angeschaut. Aber mit meinen Kenntnissen war ich am Ende der 1. Seite raus....

Ich weiß, dass man sich mit lsusb die USB-Devices anzeigen lassen kann und ich fand in irgend einem Blog die Info dass ich unter /etc/udev/rules.d die Datei "70-streamdeck.rules" anlegen soll und da den folgenden Inhalt reingepackt:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess"

und jetzt endet mein Durchblick... evtl. war das alles sinnlos. Ich weis aus Mint-Zeiten, dass die xx-streamdeck.rules schon mal eine andere Nummer vorne haben, weiß aber nicht woher die die nehmen....

Ok ,das scheint jetzt eine Frickel-Arbeit zu werden....  :(

dpulver

Ok, auf meinem Mint-System heißt die Datei 60-streamdeck.rules und hat folgenden Inhalt:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0084", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="008f", TAG+="uaccess"
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", GROUP="input", MODE="0660"
ACTION=="add", ATTRS{name}=="py-evdev-uinput", ENV{XKBLAYOUT}="us"

Reicht es jetzt die anzulegen oder muss ich die jetzt irgendwie "aktivieren" ?

ro_sid

Das Kommando "lsusb" sollte Angaben der Form: vendor-id:product-id ausgeben.
Die Vendor-ID - hier 0fd9 - ändert sich üblicherweise nicht (oder nur sehr selten). Also nachsehen, ob die angezeigte Product-ID in der Datei 60-streamdeck.rules vorkommt. Falls nicht, um eine/diese Zeile ergänzen.

dpulver

Bus 007 Device 004: ID 0fd9:006c Elgato Systems GmbH Stream Deck XL

Ja, das sollte hier 006c sein und das steht in meiner obigen rules Datei drin...

ro_sid

Hmm, schwierig.
Im laufenden System sollte ein "lsusb -t" alle erkannten angeschlossenen (USB-)Komponenten auflisten. Ist da der SteamController auch dabei? (Vermutlich ja.)
Mal ein "systemctl status udev" ausprobieren und sehen, ob sich etwas "zeigt".
Auch ein "systemctl restart udev" (mit Admin-Rechten, also eventuell vorangestelltem "sudo") könnte einen Fehler reproduzieren.
Man müßte wissen, was die "Missing permission" ausmacht. Vielleicht ist es ja gar nicht die udev-Regel. Hier ist leider mehr Information erforderlich.

dpulver

#9
Ok, lsusb -t liefert das hier:

/:  Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 002: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 003: Dev 004, If 0, Class=Human Interface Device, Driver=usbfs, 480M
            |__ Port 004: Dev 005, If 0, Class=Video, Driver=uvcvideo, 480M
            |__ Port 004: Dev 005, If 1, Class=Video, Driver=uvcvideo, 480M
            |__ Port 004: Dev 005, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 004: Dev 005, If 3, Class=Audio, Driver=snd-usb-audio, 480M

systemctl status udev liefert das hier:

● systemd-udevd.service - Rule-based Manager for Device Events and Files
     Loaded: loaded (/usr/lib/systemd/system/systemd-udevd.service; static)
    Drop-In: /usr/lib/systemd/system/systemd-udevd.service.d
             └─syscall-architecture.conf
     Active: active (running) since Tue 2025-08-12 09:35:04 CEST; 12h ago
Invocation: d4d053f5642f45bb8be5d8e468916420
TriggeredBy: ● systemd-udevd-kernel.socket
             ● systemd-udevd-control.socket
       Docs: man:systemd-udevd.service(8)
             man:udev(7)
   Main PID: 422 (systemd-udevd)
     Status: "Processing with 48 children at max"
      Tasks: 1
     Memory: 19.7M (peak: 97.6M)
        CPU: 2.643s
     CGroup: /system.slice/systemd-udevd.service
● systemd-udevd.service - Rule-based Manager for Device Events and Files
     Loaded: loaded (/usr/lib/systemd/system/systemd-udevd.service; static)
    Drop-In: /usr/lib/systemd/system/systemd-udevd.service.d
             └─syscall-architecture.conf
     Active: active (running) since Tue 2025-08-12 09:35:04 CEST; 12h ago
Invocation: d4d053f5642f45bb8be5d8e468916420
TriggeredBy: ● systemd-udevd-kernel.socket
             ● systemd-udevd-control.socket
       Docs: man:systemd-udevd.service(8)
             man:udev(7)
   Main PID: 422 (systemd-udevd)
     Status: "Processing with 48 children at max"
      Tasks: 1
     Memory: 19.7M (peak: 97.6M)
        CPU: 2.643s
     CGroup: /system.slice/systemd-udevd.service
             └─udev
               └─422 /usr/lib/systemd/systemd-udevd

Aug 12 10:18:31 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:18 The line has no effect any more, dropping.
Aug 12 10:18:31 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:22 GOTO="alsa_restore_std" has no matching label, ignoring.
Aug 12 10:18:31 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:22 The line has no effect any more, dropping.
Aug 12 20:26:09 geekom systemd-udevd[422]: Configuration file /etc/udev/rules.d/60-brother-brscan4-libsane-type1.rules is marked executable. Please remove executable permission bits. Proceeding >
Aug 12 20:26:09 geekom systemd-udevd[422]: /etc/udev/rules.d/60-brother-brscan4-libsane-type1.rules:9 Invalid key 'SYSFS'.
Aug 12 20:26:09 geekom systemd-udevd[422]: /etc/udev/rules.d/60-brother-libsane-type1-inst.rules:14 Invalid key 'SYSFS'.
Aug 12 20:26:09 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:18 GOTO="alsa_restore_std" has no matching label, ignoring.
Aug 12 20:26:09 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:18 The line has no effect any more, dropping.
Aug 12 20:26:09 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:22 GOTO="alsa_restore_std" has no matching label, ignoring.
Aug 12 20:26:09 geekom systemd-udevd[422]: /usr/lib/udev/rules.d/90-alsa-restore.rules:22 The line has no effect any more, dropping.


Und systemctl restart udev hat leider auch keinen Effekt.....


ro_sid

Hmm, leider kein Hinweis auf die "Missing permissions". (Dazu vielleicht noch mal mittels "dmesg" und/oder "journalctl" ermitteln; aber Vorsicht, länglicher "Output" droht da!)

Zu USB fällt mir lediglich das für mich unerwartete "usbfs" auf:
QuotePort 003: Dev 004, If 0, Class=Human Interface Device, Driver=usbfs, 480M
Die Klasse wurde ja richtig identifiziert (Human Interface Device), aber als Treiber etwas mit Filesystem (fs)?
Wenn ich z.B. eine Maus anschließe, erhalte ich als Treiber
QuotePort 001: Dev 020, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
also "Human Device Interface" (hid), was ich für Maus (oder Tastatur) für richtig(er) halte.
Im Übrigen weiß ich dann derzeit ohne weitere Information leider auch nicht mehr weiter.

dibl

System76 Oryx Pro, Intel Core i7-11800H, ASRock B860 Pro-A, Intel Core Ultra 7 265KF, Nvidia GTX-1060, SSD 990 EVO Plus.

dpulver

Quote from: dibl on 2025/08/13, 10:52:17
Installation instruction, auf Englisch:

https://github.com/streamdeck-linux-gui/streamdeck-linux-gui/blob/main/docs/installation/ubuntu.md

Die kenne ich, aber ich nutze nicht StreamDeck UI sondern StreamController - das ist eine andere App und aus dem FlatPack.
Die andere habe ich mit dieser Anleitung auch versucht, aber da laufe ich auf Fehler weil irgendeine Bibliothek in der Version nicht passt - da habe ich mich dann verhäddert und es gelassen.

dpulver

Ich habe jetzt eine Lösung gefunden - die war nicht so offensichtlich.

1. Wenn man die StreamController App aus dem Store installiert hat und im Editor auf einem Button die Aktion "Betriebssystem" - "Text Schreiben" auswählt, wird oberhalb von dem Feld, wo man jetzt den zu schreibenden Text eintragen kann, eine Hinweiszeile angezeigt, dass man die entsprechenden udef-Berechtigungen hinzufügen soll. Man sieht es kaum aber man kann da irgendwo draufklicken und kommt zu dem Link, wo genau erklärt wird, welche Zeilen in der Konsole abgesetzt werden müssen. (Das habe ich früher nie gesehen).
Ich habe genau diese Zeilen in der Konsole ausgeführt (Leider bekomme ich den Link jetzt nicht mehr her und kann daher die Zeilen nicht genau wiedergeben, aber man muss sie einfach nur so kopieren). Danach System neu starten!
Dann setzt das StreamDeck beim Druck auf die Taste den gewünschten Text ab.

2. Leider wird der Text so geschrieben, als hätte man ihn auf einer US-Tastaturbelegung geschrieben, d.h. Sonderzeichen etc. stimmen alle nicht. Dafür habe ich folgenden workarround:
2a. Man legt in den Einstellungen für die Tastatur 2 Tastaturlayouts an - für DE und für EN bzw. US.
2b. Man definiert einen Hotkey um zwischen diesen beiden Tastaturbelegungen umzuschalten, ich habe dafür F2 ausgewählt
2c. Nun muss man im StreamControler vor der Aktion mit dem Text noch eine Aktion "Betriebssystem" - "Easy Hotkey" einfügen und gibt da die definierte Taste (bei mir F2) an, um auf das US-Tastaturlayout zu wechseln. Die gleiche Aktion muss dann noch nach der Text-Aktion rein um wieder auf DE zurückzuschalten.

Bei mir funktioniert das jetzt endlich super so - habe ich schon so in 2 Distros so eingerichtet und damit lässt sich das Streamdeck endlich für mich auch außerhalb Ubuntu/Mint einsetzen - Hurrah !!!  8)