Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   2 Tastaturen an einem PC (https://www.delphipraxis.net/195204-2-tastaturen-einem-pc.html)

WochenEnte 12. Feb 2018 09:03

2 Tastaturen an einem PC
 
Moin liebe Delphianer,

ich grüble schön länger über ein problem nach. und zwar würde ich gerne in einer delphi berlin Anwendeung auf Hotkeys reagieren. Aber das wäre zu einfach... ich möchte gerne nur auf die hotkeys von einer zweiten tastatur reagieren und nicht von der "Main"Tastatur.

Hintergrund ist zum Beispiel: Man Zockt mit der Main und möchte über die 2. tastatur ein Soundboard etc für die Streaming anwendung realisieren.
Habt ihr da eine Idee bzw. auch ein Codebeispiel?

Würde mich freuen. =)
Gruß

jaenicke 12. Feb 2018 09:45

AW: 2 Tastaturen an einem PC
 
Das geht so einfach nicht. Denn die Information hast du nur auf der Ebene des Tastaturtreibers. Wenn der Tastendruck in deiner Anwendung ankommt, ist das nicht mehr zu erkennen.

Ich würde dafür eine Tastatur mit Makrofunktionalität empfehlen. Zum Beispiel kann man auf der Logitech G213 Tasten auch andere Befehle zuweisen. Das könnte man dann nur auf der einen Tastatur machen.

generic 12. Feb 2018 10:17

AW: 2 Tastaturen an einem PC
 
Du könntest auch alternativ einen Midi-Controller nehmen und damit Dinge in deiner Anwendung fernsteuern.
Sowas macht jede DJ-Software oder Licht-/Videosteuersoftware.

Midi zu nutzen ist leicht.

WochenEnte 12. Feb 2018 10:25

AW: 2 Tastaturen an einem PC
 
Zitat:

Zitat von jaenicke (Beitrag 1393609)
Das geht so einfach nicht. Denn die Information hast du nur auf der Ebene des Tastaturtreibers. Wenn der Tastendruck in deiner Anwendung ankommt, ist das nicht mehr zu erkennen.

Ich würde dafür eine Tastatur mit Makrofunktionalität empfehlen. Zum Beispiel kann man auf der Logitech G213 Tasten auch andere Befehle zuweisen. Das könnte man dann nur auf der einen Tastatur machen.

danke, das ist schade. Ja ich hab eine logitech mit extra tasten auf der linken seite.. die kann man dann auch so einstellen das die zumbeispiel ein SHIFT+STRG+ALT + beliebige taste immitieren, richtig?

HolgerX 12. Feb 2018 10:30

AW: 2 Tastaturen an einem PC
 
Hmm..

Das geht schon!

Stichworte:
GetRawInputDeviceList
-> Holen aller RAWInputdevices
GetRawInputDeviceInfo
-> Holen des RIDI_DEVICENAME
-> Damit Auflisten aller Keyboards
-> Auswählen und merken des DeviceNames (Des Keyboards, dessen Tasten du haben willst)

RegisterRawInputDevices
-> Registrieren eines InputDevices (mit RIDEV_INPUTSINK, damit Gloabl)

-> In 'procedure TForm.WndProc(var Message: TMessage);' auf WM_INPUT reagieren
-> Darin per GetRawInputData + GetRawInputDeviceInfo das Sender-Keyboard ermitteln
-> Wenn es das Ausgewählte ist: Mit dem Keyboard-RAW-Daten arbeiten

So, nur eine kurze Beschreibung.
Habe noch irgendwo ein Testtool, mit dem ich Tastatureingaben in einem Notepad mitschreiben konnte.
Mal sehen ob ich das noch irgendwo finde..

himitsu 12. Feb 2018 10:33

AW: 2 Tastaturen an einem PC
 
@HolgerX: Was ist mit den anderen Anwendungen? die bekommen doch auch die Ereignisse beider Tastaturen und machen bestimmt dann irgendwas, obwohl der Tastendruck nur für seine Anwendung gedacht war.

HolgerX 12. Feb 2018 10:36

AW: 2 Tastaturen an einem PC
 
Hmm..

Was ich vergesen hatte, dass funktioniert auch für Barcodes-Scanner, welche sich als USB-Keyboard anmelden..

Zacherl 12. Feb 2018 10:42

AW: 2 Tastaturen an einem PC
 
Konnte man in der Registry unter Windows nicht auchmal die Scancodes (bzw. VKs) "umlenken"? Wenn man das seperat für bestimmte Keyboards einstellen kann, könntest du auch damit rumspielen.

HolgerX 12. Feb 2018 10:45

AW: 2 Tastaturen an einem PC
 
Hmm..

Zitat:

Zitat von himitsu (Beitrag 1393620)
@HolgerX: Was ist mit den anderen Anwendungen? die bekommen doch auch die Ereignisse beider Tastaturen und machen bestimmt dann irgendwas, obwohl der Tastendruck nur für seine Anwendung gedacht war.

Das kann sein.. Habe das Testtool noch nicht gefunden und kann auch somit nicht prüfen.
Jedoch kann er so zumindestens die Tastatureingaben in einer anderen App mitbekommen.

Wenn er nun für seine App Hotkeykombinationen definiert, welche nicht in der anderen App verwendet werden, sollte es so gehen!

mensch72 12. Feb 2018 11:09

AW: 2 Tastaturen an einem PC
 
Mit VMware kann man wenn die CPU "VT-d" hat (z.B. I5&I7, aber einige "K-Typen" nicht) eine USB-Tastatur direkt einer VM als USB-Gerät zuweisen, das funktioniert für BarcodeScannern mit USB-Tastatur-Emulation definitiv... da bekommt der HostPC nix mehr von den Barcodes/Macros mit.

himitsu 12. Feb 2018 11:37

AW: 2 Tastaturen an einem PC
 
Bei den VMs wird oftmals das USB-Device beim Host abgemeldet, von einem anderen Treiber behandelt und in die VM weitergeleitet.
Darum bekommt der Host das dann nicht mehr mit, weil bei ihm das Gerät praktisch nicht mehr verwendet wird.

WochenEnte 12. Feb 2018 11:39

AW: 2 Tastaturen an einem PC
 
Zitat:

Zitat von himitsu (Beitrag 1393630)
Bei den VMs wird das USB-Device beim Host abgemeldet, von einem anderen Treiber behandelt und in die VM weitergeleitet.
Darum bekommt der Host das dann nicht mehr mit, weil bei ihm das Gerät praktisch nicht mehr verwendet wird.

Aber kann man sowwas nicht auch pro anwendung einstellen? Das ich in einer anwendung sage "Tastatur xY" ist nur innerhalb dieser anwendung relevant, sonst nichts machen

generic 12. Feb 2018 12:20

AW: 2 Tastaturen an einem PC
 
@WochenEnte kannst du bitte deinen Beitrag korrigieren, wo du mich "nicht" zitierst hast, aber trotzdem meinen Namen dran geschrieben hast.

Du hattest was von einen Soundboard geschrieben. Im Prinzip möchtest du etwas wie in diesen Video:

https://www.youtube.com/watch?v=xvXw7Y4gKkg
https://www.youtube.com/watch?v=3vC5TsSyNjU

Unterschied ist doch nur, dass du einzelne Samples spielen willst.
Der Typ im Video hat anstelle der Effekt-Samples, kleine Musikteile auf den Knöpfen.

Der Knabe setzt da Abelton Live ein, dass geht auch mit anderer Software.
Reaper, Traktor, SampleDecks und viele viele andere.

Der Kontroller im 1. Video ist ein Abelton Live Push. Der im 2. ist eine Novation Launchpad.
Hier geht aber auch jeder Midi-Controller.

HolgerX 12. Feb 2018 12:22

AW: 2 Tastaturen an einem PC
 
Hmm..

Nicht das ich wüste..

Zurück zum Hook:
Bei SetWindowsHookEx kann eine Tasteneingabe geblockt werden..
Jedoch gibt es indessen Event keine Device Infos.
Somit nur ganz oder garnicht blocken.

Bei RegisterRawInputDevices haben wir zwar die Device-Infos, aber können nicht blocken.
Das WM_INPUT Event wird offensichtlich asynchron ausgeführt und somit hat die andere App bereits ebenfalls die Taste bekommen..

Die einzige Möglichkeit ist ein Treiber. Dieser ersetzt dann den Tastaturtreiber und ermöglicht die Unterbrechung auf Treiber ebene..

Bei den VMs ist das wahrscheinlich genau so gemacht (Treiber).


Ob Du nun für die (saubere) Trennung zwischen den beiden Keyboards einen 'Windows' Treiber proggen willst?
Ich könnte es nicht...

WochenEnte 12. Feb 2018 14:23

AW: 2 Tastaturen an einem PC
 
Vielen dank euch.
Ich werde dann wohl erstmal den ansatz mit "RegisterRawInputDevices" versuchen.

Bis dann

HolgerX 13. Feb 2018 10:39

AW: 2 Tastaturen an einem PC
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm..

Hat mir keine Ruhe gelassen und dass gefunden:
https://www.codeproject.com/Articles...k-to-selective

Damit habe ich eine vereinfachte Umsetzung als Test gemacht.

Im Artikel wird noch auf verschiedene Probleme mit schnellem Tippen oder fehlenden Messages eingegangen, was ich im ersten Test ignoriert habe.

Hiermit konnte ich z.B. mit einem USB-Barcodescanner im Notepad Scannen, ohne dass dessen Keyevents dort auftauchten.

Getestet mit Delphi 6 auf Windows 7 64bit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz