GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak spustit skript spouštěný vstupem z joysticku?

K napájení své arkádové skříně používám Raspberry Pi s Raspbianem. Chci vypnout Pi pomocí sudo poweroff příkaz bez použití klávesnice. Myslím, že nejlepším způsobem by bylo vytvořit jednoduchý skript, který by se nějak spouštěl kombinací vstupů tlačítek ovladače. Zdá se snadné svázat klávesnici se skriptem, ale není tak snadné místo toho použít vstup z joysticku.

Má někdo nějaké nápady?

UPRAVIT #1

Joystick a tlačítka ovladače fungují dobře a zobrazují se pomocí jstest nástroj z jstest-gtk balíček a vše funguje dobře v Mame4all. xev jsem nezkoušel ale podívám se na to.

Přijatá odpověď:

xev

Nevěřím, že můžete použít xev k detekci joysticků. Používám Fedoru 19 a existuje balíček nazvaný joystick který nainstaluje tento balíček, linuxconsoletools . Tento projekt je to, co hledáte.

projekt linuxconsole

Obsahuje řadu nástrojů pro připojení joysticků tak, aby jejich signály byly přijímány linuxovým jádrem.

výňatek z webu linuxconsole

Tento projekt spravuje nástroje Linux Console, které zahrnují nástroje pro testování a konfiguraci joysticků, připojení starších zařízení ke vstupnímu subsystému jádra (poskytování podpory pro sériové myši, dotykové obrazovky atd.) a testování vrstvy vstupních událostí.

Balíček obsahuje spustitelné soubory, jako jsou tyto

$ rpm -ql linuxconsoletools.x86_64
/usr/bin/ffcfstress
/usr/bin/ffmvforce
/usr/bin/ffset
/usr/bin/fftest
/usr/bin/inputattach
/usr/bin/jscal
/usr/bin/jscal-restore
/usr/bin/jscal-store
/usr/bin/jstest
/usr/libexec/joystick/extract
/usr/libexec/joystick/filter
/usr/libexec/joystick/ident

Ubuntu

Nemám k dispozici instalaci Debianu, ale Ubuntu má také stejný balíček, joystick . Spusťte příkaz apt-file list joystick zobrazuje stejné soubory jako RPM, které jsem zmínil výše.

Co ještě?

Také bych doporučil podívat se na téma ArchLinux Wiki s názvem:Joystick. Je to pravděpodobně nejvyčerpávající zdroj na toto téma související s Linuxem.

Mapování joysticku na klávesnici

Výše uvedené zprovozní váš joystick v Linuxu, ale nenabízí žádnou metodu pro mapování joysticku na skript, alespoň ne jednoduchým způsobem. Chcete-li něco takového provést, budete muset požádat o pomoc jinou aplikaci. Existuje jeden, který znám, a nazývá se jkeys .

Chcete-li jej nainstalovat, musíte nejprve nainstalovat některé závislosti, python-xlib &python-pygame . Ty by měly být ve většině repozitářů distribucí.

Chcete-li však nainstalovat jkeys budete si ho muset stáhnout z úložiště subversion projektu. POZNÁMKA: Je napsán v Pythonu.

$ svn checkout http://jkeys.googlecode.com/svn/trunk/ jkeys-read-only

Po stažení jej můžete spustit takto:

$ ./jkeys 
usage: jkeys joystick.conf application [params]

Chcete-li namapovat klíč, budete si muset vytvořit svůj vlastní joystick.conf soubor:

<config>
    <joystick id="0">
        <axis number="0" low="Left" high="Right" />
        <axis number="1" low="Down" high="Up" />
        <button number="0" key="Space" />
        <button number="1" key="Return" />
        <button number="2" key="a" />
        <button number="3" key="b" />
        <button number="4" key="c" />
        <button number="5" key="d" />
        <button number="6" key="z" />
        <button number="7" key="x" />
        <button number="9" key="Escape" />
        <button number="10" key="p" />
    </joystick>
</config>

Nyní, když jste připraveni spustit hru, udělejte to takto:

$ ./jkeys joystick.py <somegame>

Přepsaná tlačítka joysticku odešlou do aplikace jakoukoli klávesu, kterou stisknete místo tlačítek joysticku.

Související:Vytvořit symbolický odkaz – přepsat, pokud existuje?

QJoy

Další alternativou je použití aplikace QJoyPad. Nemohl jsem to otestovat, protože nemám joystick. GUI by mělo vypadat takto.

Z tohoto grafického uživatelského rozhraní můžete poměrně snadno mapovat stisknutí libovolného tlačítka na stisk klávesy.

A co spuštění skriptu?

S výše uvedenými metodami byste mohli využít další aplikaci nazvanou XBindKeys k mapování libovolného stisknutí klávesnice ke spuštění skutečného příkazu nebo skriptu.

POZNÁMKA: Můj příklad níže vytváří klávesovou zkratku, aby se Nautilus spustil s otevřenými určitými adresáři.

Příklad

Nejprve se musíte ujistit, že balíčky xbindkeys je nainstalován.

Poté budete muset spustit následující příkaz, pouze jednou, k vytvoření šablony xbindkeys konfigurační soubor.

$ xbindkeys --defaults > /home/saml/.xbindkeysrc

Vytvořený soubor můžete otevřít v textovém editoru a přidat pravidlo, jako je toto:

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q

S výše uvedenou změnou musíme zabít xbindkeys pokud již běží, a poté jej restartujte.

$ killall xbindkeys
$ xbindkeys

Nyní, když toto běží, kdykoli napíšu Mod +Shift +Q Nautilus se otevře s otevřenou odpovídající složkou.

Odkazy

  • Jkeys – jednoduché mapování joysticku na klávesnici
  • Zjistěte, zda bylo stisknuto tlačítko myši, a poté vyvolejte skript nebo příkaz
  • XBindKeys

Linux
  1. Linux – Jak spustit skript na obrazovce uzamčení/odemknutí?

  2. Jak spustit skript??

  3. Jak spustíte skript při přihlášení v *nix?

  1. Jak vytvořit skript příkazu Linux

  2. Jak mohu spustit skript v Perlu jako systémový démon v linuxu?

  3. Jak nakonfigurovat PHP CLI na linux ubuntu, aby běželo jako www-data?

  1. Linux – Jak spustit bootloader z Linuxu?

  2. Jak zajistit, aby skript Python běžel jako služba nebo démon v Linuxu

  3. Jak spustit skript na pozadí (linux openwrt)?