Pedały - część pierwsza

Miałem napisać coś o konflikcie darwinizm vs kreacjonizm, ale opisze swój kolejny projekt
Jakiś czas temu zapragnąłem zaprząc nogi do komunikacji z komputerem. Czyli poprostu zrobić/kupić pedały. W zamyśle mają służyć do przełączania między pulpitami. W moim przypadku odpowiada to przełączaniu między aplikacjami, gdyż praktycznie wszystkie okna mam cały zmaksymalizowane. W sumie mam 4-7 otwartych aplikacji: terminal, eclipse, emacs, firefox, thunderbird. Każdemu pulpitowi przyporządkował bym jeden pedał.
Myśląc o takim sprzęcie rozważałem użycie następujących wejść:
- równoległe - proste w oprogramowaniu i realizacji sprzętowej, ale niestety coraz mniej popularne i mało odporne na awarię (zwarcie), kabel byłby “gruby”
- szeregowe (RS232), proste w oprogramowaniu, realizacja sprzętowa wymagała by jakiegoś programowalnego kontrolera, odporne na eksperymenty
- USB, nie wiadomo jak to oprogramować, realizacja sprzętowa nieznana, za to odporne, kabel cienki, daje linię zasilającą i jest nowoczesny
Zdecydowałem się na USB, ponieważ postanowiłem użyć kupić taniego pada, rozebrać go i podłączyć przyciski do pedałów. Pada nabyłem za 20PLN z przesyłka od handlarza na allegro. Kupiłem w ciemno, nie wiedząc jaki jest status wsparcia tego typu urządzeń w Linuxie. Ku mojemu zadowoleniu, urządzenie zostało automagicznie wykryte. Pojawił się reprezentujący je plik /dev/input/js0. Po uruchomieniu programu jstest stwierdziłem, że wszystko jest OK. Pad ma 8 przycisków, 2 joysticki analogowe i jeden joystick cyfrowy. Zatem w sumie można sterować 4 liniami analowymi i 12 liniami cyfowymi.
W projekcie zamierzam wykorzystać tylko przyciski. Potencjometry może w przyszłości do czegoś innego, jakaś czujka obecności przed komputerem, albo pokrętkło do głośności.
Pozostał mi do rozwiązania problem w jaki sposób transformować zdarzenia generowane przy pomocy pada na naciśniecie klawiszy. Jest na to kilka metod:
- dedykowany sterownik w jądrze (hack value!)
- skonfigurowanie joysticka jako urządzenia wejściowego dla serwera X , i definicji klawiatury XKB (hack value!)
- program czytający z urządzenia /dev/input/js0 i generujący zdarzenie serwera X
Pogooglałem troche i nie znalazłem tego czego chciałem. Znalazłem 2 projekty które w części realizowały zamierzony cel: joy2key i xkeymouse. Postmodernistyczną metodą wycinania i lepienia uzyskałem nową wartość. Program który realizował to czego chcę. Czyta zdarzenia z pada i generuje zdarzenia Xowe. Oto on joybuttons2xkb.c oraz skrypt go uruchamiający pedual.sh. Po uruchomieniu sktyptu przyciski pada generują zdarzenie odpowiadające klawiszom F13-F20 klawiatury.
Kolejny odcinek będzie bardziej medialny, będą zdjecia z dekompozycji pada. Szur, brzdęk, trzask. Ale najpierw muszę wyzdrowieć by móc pojechać do jakiegoś supermarketu technicznego.
Widzę że przechodzi waść do realizacji pomysłów
A gdzie linki do plików?
Już są. Dzięki.
“pedała” to chyba na prowincji sie mówi
A skąd się wziął /dev/input/js0?
Pojawił się, jak włożyłem wtyczkę pada do gniazda USB. udevd to załatwia