Integrate keypads and gamepads into your next project

In Control

© Lead Image © Kirill Makarov, 123RF.com

© Lead Image © Kirill Makarov, 123RF.com

Article from Issue 207/2018
Author(s):

The Python evdev library offers a simple way to connect input devices, even if you don't know the key bindings.

Keypads and gamepads can be good solutions for projects that have requirements for simplicity, small form factor, or more rugged operation. Companies like Sony (PS2/PS3) and Logitech, and even makers of generic clones, offer a number of keypads and gamepads for USB wired or wireless products (Figure 1).

Figure 1: Wired and wireless keypads and gamepads.

Although the Python Pygame library offers a generic keyboard and joystick interface, I found the python-evdev library to be a little simpler and more straightforward.

python-evdev

The python-evdev library [1] provides bindings to the generic input event interface in Linux. The evdev interface passes events generated in the kernel, typically located in /dev/input/.

To install python-evdev on a Debian-compatible operating system, enter:

sudo apt-get install python-evdev

Not all keypad and gamepad buttons are mapped consistently, so a simple test program is needed to find the keycodes (Listing 1) [2]. For most small systems, the controller's USB connection will be on /dev/input/event0; on larger systems, event1 or event2 might be the input device. When a key is pressed, the test program outputs the time, keycode, and an alias for the key binding (Listing 2).

Listing 1

keys_evdev.py

 

Listing 2

Test Program Output

 

At a minimum, most keypads or gamepads will have the buttons: A, B, X, Y, Start, Select, Left Shoulder, and Right Shoulder. The code in Listing 3 captures these buttons.

Listing 3

gamepad_evdev.py

 

Summary

With the sample code provided here, you have a starting point for your next kiosk, robotics, or game project; for example, my daughter and I used the evdev interface with a Raspberry Pi to control a two-axis crane (Figure 2).

Figure 2: A Raspberry Pi crane with a gamepad controller.

The Author

You can investigate more neat projects by Pete Metcalfe and his daughters at https://funprojects.blog.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Ask Klaus!
  • Gesture-Controlled Book

    Have you found yourself following instructions on a device for repairing equipment or been half-way through a recipe, up to your elbows in grime or ingredients, then needed to turn or scroll down a page? Wouldn't you rather your Raspberry Pi do the honors?

  • Linux Pandora Box Goes into Mass Production

    Around $330 gets you a Linux-based Pandora handheld by shopping online, although the first buyers had to hurry.

  • Wayland

    The X11 graphics protocol is showing some serious signs of age, but Wayland is poised to come to the rescue.

  • Retro Gaming

    Many computer games from the 1980s and 1990s enjoy cult status. Graphics and sound were not very advanced back then, which forced the producers to impress gamers with good ideas and a convincing level of design. Emulators let you run those classic games on a Linux PC.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News