.[ ČeskéHry.cz ].
cteni dat ze vstupniho zarizeni

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  

Odpoved
Neotravuj tu s linuxem
12%
 12%  [ 1 ]
Nevim
37%
 37%  [ 3 ]
Vim, ale nepovim
25%
 25%  [ 2 ]
Vim a povim
25%
 25%  [ 2 ]
Celkem hlasů : 8

Autor Zpráva
frca



Založen: 28. 07. 2007
Příspěvky: 1371

PříspěvekZaslal: 2. září 2017, 10:09:21    Předmět: cteni dat ze vstupniho zarizeni Odpovědět s citátem

Zdravim,
existuje nejaka obdoba linuxoveho
hexdump /dev/input/mouse1
ve windows?

Zkousel jsem tohle, ale to je nejspis neco jineho. Navic mi to nefunguje:
https://msdn.microsoft.com/en-us/library/ms645546(VS.85).aspx
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



Založen: 16. 06. 2012
Příspěvky: 471

PříspěvekZaslal: 3. září 2017, 16:20:12    Předmět: Re: cteni dat ze vstupniho zarizeni Odpovědět s citátem

Nevím, co přesně se snažíš udělat, ale raw input by měl normálně fungovat.
Potřebuješ handle na okno a WindowProc.

Init:
kód:

      RAWINPUTDEVICE rid;
      rid.usUsagePage = 0x01;
      rid.usUsage = 0x02;
      rid.dwFlags = RIDEV_NOLEGACY | RIDEV_CAPTUREMOUSE;
      rid.hwndTarget = hwnd;
      if (RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE)) == FALSE) Error(...);



Deinit:
kód:

         RAWINPUTDEVICE rid;
         rid.usUsagePage = 0x01;
         rid.usUsage = 0x02;
         rid.dwFlags = RIDEV_REMOVE;
         rid.hwndTarget = 0;
         RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE));


Windowproc:
kód:

   case WM_INPUT:
      {
         UINT dwSize = 0;

         GetRawInputData((HRAWINPUT)lParam, RID_INPUT, 0, &dwSize, sizeof(RAWINPUTHEADER));
         buffer.resize(dwSize);

         if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, buffer.data(), &dwSize,
            sizeof(RAWINPUTHEADER)) != dwSize) {
            Error(...);
         }

         auto raw = (const RAWINPUT *)buffer.data();
         if (raw->header.dwType == RIM_TYPEMOUSE)  {
            if (!(raw->data.mouse.usFlags & MOUSE_MOVE_ABSOLUTE)) {
               mouseDeltaX = raw->data.mouse.lLastX;
               mouseDeltaY = raw->data.mouse.lLastY;
               ...
            }
            auto flg = raw->data.mouse.usButtonFlags;
            if (flg & RI_MOUSE_LEFT_BUTTON_DOWN) {
               ...
            }
            if (flg & RI_MOUSE_LEFT_BUTTON_UP) {
               ...
            }
            if (flg & RI_MOUSE_RIGHT_BUTTON_DOWN) {
               ...
            }
            if (flg & RI_MOUSE_RIGHT_BUTTON_UP) {
               ...
            }
            if (flg & RI_MOUSE_MIDDLE_BUTTON_DOWN) {
               ...
            }
            if (flg & RI_MOUSE_MIDDLE_BUTTON_UP) {
               ...
            }
            if (flg & RI_MOUSE_WHEEL) {
               wheelDelta = (float)*(const SHORT *)&raw->data.mouse.usButtonData;
               wheelDelta /= WHEEL_DELTA;
               ...
            }
         }
         return 0;
      }
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1371

PříspěvekZaslal: 3. září 2017, 20:07:27    Předmět: Odpovědět s citátem

S tvym examplem uz to nejaka data vraci, takze diky.

Nicmene... chci zjistit data vracena trackpointem, coz sice funguje, ale rozsah vracenych dat zavisi na softwarovem nastaveni citlivosti trackpointu. Takze to nejsou surova hw data, ktera jsou na linuxu mimochodem pro kazdou souradnici v signed byte v rozsahu -127 .. 127.

Duvod, proc to chci, popisu snad pozdeji, ted nejak nemam cas Wink

Edit: Snazim se exaktne zmerit rozdil mezi chovanim trackpointu ve windows a v linuxu, abych mohl ten linux nastavit presne jako windows.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1471
Bydliště: u Prahy

PříspěvekZaslal: 5. září 2017, 15:06:50    Předmět: Odpovědět s citátem

Ale na Windows se každý touchpad/trackpad/trackpoint chová jinak (asi proto nemáš přístup k raw datům, protože od toho tě odfiltruje driver - musel by sis udělat vlastní Smile). Driver od výrobce není jen v případě tzv. precision touchpadů/trackpadů, kde se použije driver od Microsoftu přímo ve Windows, aby se snížil lag ve zpracování.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frca



Založen: 28. 07. 2007
Příspěvky: 1371

PříspěvekZaslal: 5. září 2017, 15:47:30    Předmět: Odpovědět s citátem

Napsat si driver mě samozřejmě napadlo, ale v principu mi to nepomůže, protože se snažím v podstatě zjistit chování toho existujícího driveru...
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frca



Založen: 28. 07. 2007
Příspěvky: 1371

PříspěvekZaslal: 5. září 2017, 17:44:00    Předmět: Odpovědět s citátem

Z různých fór se zdá, že se o problému s tím konkrétním typem trackpointu ví, tak asi počkám, až to vyřeší někdo jiný Smile
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna