Forum: PC Hard- und Software Windows: Tastatur Programm zuordnen


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

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.)

Geht das?

von Harald K. (kirnbichler)


Lesenswert?

Walter T. schrieb:
> Geht das?

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.

von Walter T. (nicolas)


Lesenswert?

Harald K. schrieb:
> 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.

: Bearbeitet durch User
von Klaus H. (klummel69)


Lesenswert?

Walter T. schrieb:
> 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.

: Bearbeitet durch User
von Carypt C. (carypt)


Lesenswert?

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

von Walter T. (nicolas)


Lesenswert?

Klaus H. schrieb:
> Das geht recht einfach über Autohotkey. Dort kann man Keys als Hotkeys
> festlegen und Aktionen hinterlegen.

Danke für den Input.

Mit dem "Tastatur-Manager" der PowerToys funktioniert das nicht. Ich 
werde mich also in den nächsten Tagen also mal in die Autohotkey-Doku 
einlesen.

von Rbx (rcx)


Lesenswert?

Walter T. schrieb:
> Häßlich, aber besser
> als vorher.

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.

von Motopick (motopick)


Lesenswert?

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.

von Harald K. (kirnbichler)


Lesenswert?

Motopick schrieb:
> 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.

: Bearbeitet durch User
von Motopick (motopick)


Lesenswert?

Harald K. schrieb:
> Motopick schrieb:
>> 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.

Nochmal fuer dich: PC (kein/ohne Terminalserver).

von Klaus H. (klummel69)


Lesenswert?

Walter T. schrieb:
> Mit dem "Tastatur-Manager" der PowerToys funktioniert das nicht. Ich
> werde mich also in den nächsten Tagen also mal in die Autohotkey-Doku
> einlesen.

Um Keys an bestimmte Fenster senden zu können musst du ``ControlSend()`` 
oder ``ControlSendRaw()`` statt ``Send...()`` nutzen.

von Harald K. (kirnbichler)


Angehängte Dateien:

Lesenswert?

Motopick schrieb:
> Wie ueblich hast du es wieder nicht begriffen.
> Es gab diese "Multi-Arbeitsplatzloesungen" fuer einen PC.

Lern' doch einfach lesen, und brich nicht nach den ersten drei Sätzen 
ab.

von Klaus H. (klummel69)


Lesenswert?

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.

Anleitung z.B.
https://blog.adminweb.at/vlc-playermultimedia-tasten-im-hintergrund-nutzen-globale-hotkeys/

Dann ist es egal ob VLC den Focus hat oder nicht.

Das klappt auch mit anderen Playern wie z.B. Foobar - der übrigends 
deutlich weniger Speicher zum Abspielen von Audio braucht als VLC.

von Boris F. (skyperhh)


Lesenswert?

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.

von Walter T. (nicolas)


Lesenswert?

Klaus H. schrieb:
> 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.)

: Bearbeitet durch User
von Hmmm (hmmm)


Lesenswert?

Carypt C. schrieb:
> innerhalb der profile kann ich den tasten andere tasten zuordnen, zb
> shift-taste gibt E aus.

Ist das der Grund für Deine Unfähigkeit, Gross- und Kleinschreibung zu 
benutzen?

Carypt C. schrieb:
> aber ohne programmfokus kann ich keine funktionen in inaktiven
> programmen bedienen.

Und damit ist das hier völlig nutzlos.

von Harald K. (kirnbichler)


Lesenswert?

Walter T. schrieb:
> 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.

von Carypt C. (carypt)


Lesenswert?

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.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Walter T. schrieb:

> 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:

MediaNextTrack   176
MediaPlayPause   179
MediaPreviousTrack   177
MediaStop   178
VolumeDown   174
VolumeMute   173
VolumeUp   175

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.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Harald K. schrieb:

> 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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.