Určování, které klávesnice odesláním stisků kláves

hlasů
2

Mám 2 klávesnice zahnutý do mého počítače (jeden na PS / 2, druhý na USB). Jak bych mohl zjistit, které klávesnice vysílá úhozy v C #?

Položena 26/08/2009 v 23:07
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
3

Zde je ukázka, velmi špinavý kód, který ukazuje, jak používat vstupní windows hák .NET. Nejlépe funguje s fragmentů překladače:>

EDIT: Ukazuje se, je tu délka limit pro příspěvky,

uchopit zdroj z kódu zde

,

Odpovězeno 27/08/2009 v 01:45
zdroj uživatelem

hlasů
2

Je-li někdo na USB, pak byste měli být schopni na to přijít - přinejmenším na úrovni řidiče. Nicméně výš stack jsem neslyšel o takové možnosti. Nebyl bych překvapen, kdyby to nebylo vůbec možné.

Jedním ze způsobů, možná budete chtít vyzkoušet, jsou taneční simulátory. Víte, ty s „taneční podložce“ (nebo „tanec pad“). Tyto taneční rohože jsou ve skutečnosti nic jiného, ​​než ale velké klávesnice. Vyzkoušejte to sami - otevřít poznámkový blok a skákat na taneční podložce. :)

Nyní, některé z těchto programů nabízí také konkurenční režim, ve kterém můžete připojit až dva taneční podložky a soutěžit s partnerem. V tomto případě budou muset rozlišovat mezi rohože nějakým způsobem - což je totéž, co se snažíte dělat.

Odpovězeno 26/08/2009 v 23:38
zdroj uživatelem

hlasů
1

Ok, tady je opravdu kludgy metoda, která by jen pracovat s velmi omezeném počtu případů použití:

  1. Páska, lepidlo dolů, nebo zkratovat sada modifikačních kláves (Right Ctrl, například) na jedné z klávesnic.
  2. Na každém stisknutí tlačítka, podívejte se na modifikátory. Pokud jsou nastaveny modifikátory, jako by byly na lepené dolů klávesnici, předpokládají, že klávesnice je zdrojem. Pokud tomu tak není, předpokládám, že to je ta druhá klávesnice.

Omezení:

  1. Nelze použít lepené klávesnici mimo aplikaci, protože jen to ví ignorovat modifikační klávesy.
  2. Nemůžete použít tyto modifikační klávesy v rámci své vlastní aplikace jako součást klávesových zkratek.
  3. Druhý klávesnice může vydávat za vaše (náhodně nebo ne), pokud uživatel drží se stanoví správná tlačítka.
  4. Budete muset vypnout Jedním prstem.
  5. Pomocí Alt nebo Ctrl je dole stranu: pokud stisknete druhou jeden Windows může mít použití k tomuto spojení, které vaše aplikace nebude chytit.

Unknown # 1 : zda ModifierKeys je naplněna pouze z klávesnice, která byla zdrojem klíče kliknutím, nebo pochází ze součtu všech modifikátory napříč všemi připojenými klávesnicemi. I podezření, že každá klávesnice interně vyšle modifikátory spojené s klávesy a že Windows je bohužel agregovat.

Unknown # 2 : zda nebo ne System.Windows.Forms.Control.ModifierKeys poskytuje jen Ctrl / Shift / Alt bitů, nebo poskytuje dostatek podrobností, řekněme, rozlišit pravé tlačítko Ctrl zleva. Zde jsou klíče byste mohli teoreticky test na, já nevím, kolik jsou poskytovány prostřednictvím ModifierKeys:

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx

Odpovězeno 27/08/2009 v 00:53
zdroj uživatelem

hlasů
1

Hádám, že problém je, že při použití čárových kódů, jejich počet jde do aktivního pole spíše než pole pro ID čárového kódu?

Jedním řešením by bylo připojit onchange události ostatních oblastech a podívejte se na čísla čárového kódu vložené v nich (přes RegEx). Je-li nalezen, přesunout čárový kód z této oblasti a přesunout hodnotu než na pole s čárovým kódem.

Žádný přístup k zařízení nutná, by to mohlo být dokonce provedena na Javascript řízený webové stránky.

Odpovězeno 26/08/2009 v 23:57
zdroj uživatelem

hlasů
0

Myslím, že jediný způsob, jak byste mohli udělat, že by bylo, kdyby jste byli sledování provozu USB. Viděl jsem programy, které dělají to, ale nemám ponětí, jak to udělat v C #. Takže pokud tam je USB provoz a klávesy, to je klávesnice USB. Pokud není žádný provoz, je to PS / 2 jedna.

Přirozeně druhá námitka s tím, že to není generalizovat na libovolných nebo budoucími typy připojení klávesnice.

Odpovězeno 26/08/2009 v 23:36
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more