Nie znam się na tym.Tak z ciekawości,czy to jest związane z sterownikiem?Mam na myśli rozwiązania OC,gdzie są pliki konfiguracyjne,które trzeba uzupełniać.
I tak i nie. W przypadku Joysticka nie mogę stosować własnego, uniwersalnego sterownika - musi być to wbudowany w Windows sterownik do urządzeń HID. Sterowniki kojarzy się z urządzeniem za pomocą pliku inf. W nim opisuje się do jakiej pary VID-PID system ma załadować jaki sterownik. W przypadku braku takiego pliku system sam "odgaduje" jaki sterownik załadować. Odgaduje to po krótkiej "rozmowie" z urządzeniem. Dla Joysticka jest to sterownik do urządzeń HID. Tak więc mamy opcje:
- wbudowany w system uniwersalny sterownik
- własny, prosty sterownik (nie widziany dla systemu jako HID)
- własny sterownik VxD rejestrujący urządzenie HID w systemie i realizujacy wszystko to, co wbudowany sterownik HID
- uniwersalny driver LibUSB w trybie "filter driver" (wymaga osobnej instalacji)
Opcja trzecia odpada ze względu na złożoność (
napisanie VxD to kupa roboty, cały zespół Saiteka walczył ze sterownikami 64 bit do X52 około roku) i konieczność instalacji sterownika po każdej zmianie VID lub PID
Opcja druga odpada ze względu na to, iż urządzenie nie będzie widoczne dla gry jako Joystick
Opcja czwarta jest kusząca i z niej dotąd korzystałem: sprzęt jest widoczny jako HID, a ja mam do niego pełen dostęp poprzez USB. Wszystko chodziło mi bez problemu. Jednak niedawno dowiedziałem się, że ludzie, którzy stworzyli LibUSB gorąco odradzają używanie trybu "filter driver" u użytkownika końcowego. Podobno potrafi on czasem odciąć dostęp do magistrali USB (w wyniku wewnętrznego błędu) i ktoś, kto ma klawiaturę USB straci możliwość kontroli PC-ta (a raczej swojego "Windowsa"). Po restarcie nadal nie będzie mieć klawiatury, a nie każdy potrafi uruchomić system w trybie awaryjnym i wyładować wskazany sterownik.
jak widać - opcja pierwsza jest jedyną akceptowalną:
- sprzęt jest widoczny jako Joystick
- brak konieczności instalowanie dodatkowych sterowników
- można niemal dowolnie zmieniać VID/PID (byle nie trafić na kombinację przypisaną już do jakiegoś urządzenia)
Jednak zastosowanie wariantu 1 zmusza do porozumiewania się z urządzeniem przez mocno obcięte API, które akurat nie ma zaimplementowanej obsługi komend przewidzianych standardem (USB VENDOR specific control transfer), których używam do konfiguracji urządzenia (konfigurowanie gdzie są przyciski, osie analogowe, jaki VID, PID). Teraz kombunuję, jak przerobić swój firmware aby "wcisnąć" go w windowsa. Na Linuxie - jak pisałem, nie ma tego problemu. Może to jest jeden z powodów - dlaczego nie ma jeszcze takiego (konfigurowalnego) zastępnika dla MJoy'a ?
Okazało się,że na viperpits mieli rację z SVMapper.Generalnie unikają tzw.Direct-x.Już o to pytałem (częściowo),ale czy jest możliwość wyboru albo Direct-x albo inna opcja?
To wybiera już sama gra. Dla urządzeń, które nie muszą być widoczne w systemie jako standardowe (zwykłe I/O a nie joy) nie korzysta się z Direct-X.