ich habe an zwei Rechnern (Windows XP, Windows 11) je 2 Tastaturen. Der Anwendungsfall ist bei beiden unterschiedlich, aber das Problem das Gleiche.
Eine Tastatur ist "normal" und soll wie gewohnt nutzbar bleiben. Die andere ist eine "Multimedia"-Tastatur und soll exklusiv in ein Anwendungsprogramm/Fenster eingeben, selbst wenn dieses nicht aktiv ist.
(In Wirklichkeit ist eine der "Multimedia"-Tastaturen ein STM32 mit HID-Implementierung und die andere ein Barcodescanner, aber das hat für die Fragestellung wahrscheinlich keine Relevanz.)
Nö, es gibt aus Sicht von Windows nur eine Tastatur, und das Programm, das den Eingabefocus hat, bekommt alles ab, was die Tastatur sendet.
Eine Ausnahme stellen sog. "Hotkeys" dar, die kann ein Programm für sich reservieren, dann bekommt es, auch wenn es nicht den Eingabefocus hat, diese Tastencodes verabreicht.
Wenn mehrere Tastaturen angeschlossen sind, landen alle von ihnen erzeugte Tastaturereignisse im gleichen Auswertungspuffer von Windows, d.h. es ist auf die übliche Weise nicht möglich, zu unterscheiden, auf welcher Tastatur nun das "A" gedrückt wurde.
Vorausgesetzt, daß Du die Software selbst schreibst, bestünde natürlich die Möglichkeit, via libusb zu versuchen, direkt mit einem USB-Gerät zu kommunizieren, um somit eine der Tastaturen aus der windows-eigenen Verarbeitung herauszunehmen, dann aber wäre es einfacher, wenn das Gerät gar nicht erst normale Tastencodes sendet, sondern irgendwelche anderen HID-Ereignisse produziert.
Bei Deiner STM32-Selbstbau-"Tastatur" könnte das also gehen.
dann aber wäre es einfacher, wenn das Gerät
gar nicht erst normale Tastencodes sendet, sondern irgendwelche anderen
HID-Ereignisse produziert.
Genau. Deswegen hätte ich das auch so gemacht, wenn ich das selbst gemacht hätte. Dummerweise ist das aber nicht der Fall.
Im Barcode-Scanner Fall ist es eine Access-Datenbank, bei der STM32-Multimedia-Tastatur würde ich einfach nur gerne meine Hintergrundmusik pausieren können, selbst wenn das VLC-Fenster irgendwo hinter anderen Sachen verschwunden ist.
Edit: Für den zweiten Anwendungsfall habe ich gerade eine (dumme aber funktionierende) Ersatzlösung gefunden. Ich Spiele die Musik vom Handy ab und nutze den PC nur als Bluetooth-Lautsprecher. Häßlich, aber besser als vorher.
bei der STM32-Multimedia-Tastatur würde ich einfach nur gerne meine
Hintergrundmusik pausieren können, selbst wenn das VLC-Fenster irgendwo
hinter anderen Sachen verschwunden ist.
Das geht recht einfach über Autohotkey. Dort kann man Keys als Hotkeys festlegen und Aktionen hinterlegen.
Nutze ich um eine DAW-Software über Tastatur zu steuern, selbst wenn sie kein Focus hat.
ich habe roccat suora tastatur, diese hat einen game modus (per taste) und es wird erkannt welches spiel (oder anwendung) gespielt wird. ich kann ca 4 spiel-profile anlegen, innerhalb der profile kann ich den tasten andere tasten zuordnen, zb shift-taste gibt E aus. ich habe ein profil für explorer chrome und andere profile für spiele. ich kann also zwischen den programmen wechseln und die tastatur wechselt dann das profil, das letzte genutzte profil bleibt auch in der tastatur gespeichert und kann an anderem rechner genutzt werden. ist der game modus aus, ist alles normal. es gibt auch makrofunktionen für zb internet multimedia, aber außer lautstärke playstop nur vorheriges/nächstes. ich habe die makrotasten nicht verstanden, man kann aber keine tastenabfolgen einprogrammieren.
(ich habe versucht ein numpad als spieletastatur zu verwenden, aber die spieleentwickler haben immer irgendwelche tasten festverdrahtet (zb E).)
aber ohne programmfokus kann ich keine funktionen in inaktiven programmen bedienen. es gibt aber laut leise ton aus taste. die windows taste ruft windows auf.
autohotkey hatte ich für mich in betracht, aber nie gemacht
Ich habe meine Gaming-Tastatur (G15) Huckepack auf die NB-Tastatur gesetzt. Da die Abstandhalter abgebrochen sind (nicht sehr robust) nehme ich jetzt Papierröllchen.
Es gab/gibt kommerzielle Loesungen, die mit einem Rechner mehrere
Arbeitsplaetze bedienen. Ob das heute noch am Markt ist, weiss ich
nicht. Die muessen das Problem der Zuordnung von Eingabe- und
Ausgabegeraeten ja auch irgendwie :) geloest haben.
Es gab/gibt kommerzielle Loesungen, die mit einem Rechner mehrere
Arbeitsplaetze bedienen.
Nennt sich Terminalserver, aber da hängt jeder Monitor, jede Maus und jede Tastatur an einem eigenen "Thin-Client" (effektiv ein Graphikterminal) und die wiederum sind übers Netzwerk mit dem Server verbunden.
Als Protokolle werden hier meist RDP, irgendwas von Citrix oder durchaus auch VNC eingesetzt.
Es gab auch mal eine Frickellösung, die das tatsächlich mit einem PC mit einer Mehrmonitor-Graphikkarte umgesetzt hat - sofern man die Eingabegeräte nicht über den vom Betriebssystem vorgesehenen Devicetreiber ansteuert, sondern das mit seiner Software selbst macht, kann man natürlich beliebige Dinge damit treiben.
Es gab/gibt kommerzielle Loesungen, die mit einem Rechner mehrere
Arbeitsplaetze bedienen.
Nennt sich Terminalserver, aber da hängt jeder Monitor, jede Maus und
jede Tastatur an einem eigenen "Thin-Client" (effektiv ein
Graphikterminal) und die wiederum sind übers Netzwerk mit dem Server
verbunden.
Wie ueblich hast du es wieder nicht begriffen.
Es gab diese "Multi-Arbeitsplatzloesungen" fuer einen PC.
U.U. mit mehreren Videokarten und/oder moeglicher spezieller Hardware.
Ich habe sowas nie benutzt und auch nie irgendwo gesehen.
Ab es gab sie, und sie wurden auch beworben.
Ergänzung: Wenn`s dir nur um VLC Pause/PLay geht, das geht noch einfacher:
Man kann in VLC die Multimedia Taste Abspielen/Pause der globalen Multimedia Taste zuordnen.
Du kannst bei vielen BarCode-Scanner die als HID Device arbeiten auch eine Tastenkombination mit programmieren, welche sie an den PC schicken, bevor Sie den eigentlichen BarCode senden, anschließend können Sie dann auch noch was senden, z.B. den Enter Tastendruck.
Im Programm kann man dann das Fenster zur Barcodeingabe, z.B. mit Strg+F12 aufrufen, und per Hand den Barcode eingeben und mit Enter abschließen, oder der Scanner macht das alles in einem Rutsch.
Ergänzung: Wenn`s dir nur um VLC Pause/PLay geht, das geht noch
einfacher:
DANKE! Das ist eine Wohltat!
Zum zweiten Anwendungsfall (Barcode-Scanner an Access auf Windows XP) denke ich habe ich auch schon einen Workaround gefunden. Da werde ich das Piepsen des Barcode-Scanners abschalten und stattdessen als Sound in Access erzeugen. Wenn dann gescannt wird, ohne daß das Fenster aktiv, gibt es auch kein "piep" und und man merkt es wenigstens, bevor ein Dutzend Scans ins Nichts verschwinden.
(Bei VLC hätte die Autohotkeys/Powertoys-Lösung wohl darin bestanden, die "Multimedia-Tastatur" Tastenkombinationen anstelle der Multimedia-Key-Scancodes bestanden. Die hätten umgeleitet werden können.)
um zweiten Anwendungsfall (Barcode-Scanner an Access auf Windows XP)
denke ich habe ich auch schon einen Workaround gefunden.
Wenn man den Scanner dazu bringen kann, vor jedem Scan einen eindeutigen Code abzusetzen, ließe sich über diesen mit so etwas wie AutoIt die Access-Anwendung in den Vordergrund holen. Der eindeutige Code muss natürlich einer sein, den man sonst nicht braucht, und den auch keine andere Anwendung für sich auswertet.
Anbieten würde sich für so etwas die Blinddarm-Taste "Rollen", die auf Millionen von PC-Tastaturen völlig sinnlos ihr Dasein fristet.
Setzt natürlich voraus, daß der Scanner entsprechend konfigurierbar ist; bei denen, die mir begegneten, lief die Konfiguration durch spezielle zu scannende Barcodes.
Andererseits gibt es auch Geräte die ein und dieselbe Tastatur, Maus und Monitor durch Umschalten auf andere Rechner umleiten können. KVM-splitter, wie hier: https://www.ebay.de/itm/126402322182
@hmmmm, ich hatte keine Zeit mehr alles in Unschön-und-Umständlich-schrift abzugeben.
Im Barcode-Scanner Fall ist es eine Access-Datenbank
Sehr viele Barcode-Scanner kann man auch so konfigurieren, dass sie statt als Tastatur als COM-Port erscheinen. Dann brauchst du bloß noch ein wenig VBA-Code, damit das Access die Daten empfangen kann und in die richtigen Felder verfrachtet.
bei der
STM32-Multimedia-Tastatur würde ich einfach nur gerne meine
Hintergrundmusik pausieren können, selbst wenn das VLC-Fenster irgendwo
hinter anderen Sachen verschwunden ist.
Für einigen Multimedia-Kram gibt es spezielle Tasten-Codes. Du brauchst VLC bloß so konfigurieren, dass es diese Codes verwendet. Das hier dürften wohl die relevanten sein:
Wobei du dich um den Volume-Kram eigentlich nicht kümmern brauchst, das passiert sowieso. Allerdings nur für das aktuelle Windows-Ausgabegerät. Könnte also eventuell doch relevant sein, wenn du nämlich den VLC auf ein abweichendes Audio-Ausgaberät konfiguriert hast.
Nö, es gibt aus Sicht von Windows nur eine Tastatur, und das Programm,
das den Eingabefocus hat, bekommt alles ab, was die Tastatur sendet.
Grundsätzlich ist das so, ja.
Eine Ausnahme stellen sog. "Hotkeys" dar
Es gibt sehr viel mehr Ausnahmen. Mit Administrator- oder System-Rechten kann man sich an beliebiger Stelle in die Key-Event-Chain einklinken. Früher(tm) konnte das sogar jede beliebige Anwendung mit einfachen User-Rechten tun.
Zum Glück heute nicht mehr. Zumindest nicht mehr einfach so...
Es geht aber immer noch. Einige, von offensichtlich sehr kompetenten Programmierern entwickelte Malware beweist das leider ziemlich überzeugend...