ubuntuusers.de

Maus mit GPIO-Tastatur an Raspberry Pi

Status: Ungelöst | Ubuntu-Version: Ubuntu 21.04 (Hirsute Hippo)
Antworten |

pascalts

Avatar von pascalts

Anmeldungsdatum:
6. Mai 2013

Beiträge: 89

Moin!

Ich hab Ubuntu auf einem Raspbery Pi CM3-basierensem Gerät namens "Creoqode Lyra" installiert. Dieses Gerät hat über I2C Hardware-Tasten angebunden, unter anderem ein einfaches Steuerkreuz.

Diese Tasten entsprechen weitgehend einem Adafruit JoyBonnet (https://learn.adafruit.com/adafruit-joy-bonnet-for-raspberry-pi/install-and-use). Über deren Software kann ich die Tasten bereits ansprechen und erhalte mit

evtest /dev/input/event5

Meine "Tastenanschläge" sehen:

Event: time 1641659797.303750, type 1 (EV_KEY), code 80 (KEY_KP2), value 1
Event: time 1641659797.303750, -------------- SYN_REPORT ------------
Event: time 1641659797.438111, type 1 (EV_KEY), code 80 (KEY_KP2), value 0
Event: time 1641659797.438111, -------------- SYN_REPORT ------------

Nun möchte ich das Steuerkreuz als Maus-Ersatz nutzen. Die erste Idee die mir kam, ist dass man ja das Keypad auch als Maus-Steuerung nutzen kann, wenn man z.B.

setxkbmap -option keypad:pointerkeys

setzt (vgl. https://linuxreviews.org/HOWTO_use_the_numeric_keyboard_keys_as_mouse_in_XOrg ). Mit meiner USB-Tastatur klappt das auch gut. Also hab ich bei der mal gelauscht und folgendes gesehen:

Event: time 1641659783.825627, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7005a
Event: time 1641659783.825627, type 1 (EV_KEY), code 80 (KEY_KP2), value 1
Event: time 1641659783.825627, -------------- SYN_REPORT ------------
Event: time 1641659783.898632, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7005a
Event: time 1641659783.898632, type 1 (EV_KEY), code 80 (KEY_KP2), value 0
Event: time 1641659783.898632, -------------- SYN_REPORT ------------

Da dachte ich mir, ich nehme einfach "KEY_KP2" als Aktion für "Steuerkreuz UNTEN" und die Maus sollte sich bewegen. Aber das klappt so leider nicht. Wahrscheinlich, weil da zusätzlich noch type 4 (EV_MSC), code 4 (MSC_SCAN) übertragen werden - aber ich kann nur eine Taste belegen, wenn ich die Konfiguration richtig verstanden habe:

KEYS= { # EDIT KEYCODES IN THIS TABLE TO YOUR PREFERENCES:
        # See /usr/include/linux/input.h for keycode names
        # Keyboard        Bonnet        EmulationStation
#       BUTTON_A: e.KEY_LEFTCTRL, # 'A' button
#       BUTTON_B: e.KEY_LEFTALT,  # 'B' button
        BUTTON_A: e.BTN_RIGHT,
        BUTTON_B: e.BTN_LEFT,
        BUTTON_X: e.BTN_MIDDLE,        # 'X' button
        BUTTON_Y: e.KEY_ESC,        # 'Y' button
        SELECT:   e.KEY_SPACE,    # 'Select' button
        START:    e.KEY_ENTER,    # 'Start' button
        PLAYER1:  e.KEY_1,        # '#1' button
        PLAYER2:  e.KEY_2,        # '#2' button
#       UP:       e.KEY_UP,       # Up
#       DOWN:     e.KEY_DOWN,     # Down
#       LEFT:     e.KEY_LEFT,     # Left
#       RIGHT:    e.KEY_RIGHT,    # Right
#Mouse:
        UP:       e.KEY_KP8,
        DOWN:     e.KEY_KP2,
        LEFT:     e.KEY_KP4,
        RIGHT:    e.KEY_KP6,
}

Meine Frage daher: Gibt es eine alternative, um die Maus mit Tastatur-Events zu steuern? Oder kann ich die vorhandene Funktion irgendwie ander mappen?

Danke im vorraus!

Pascal
Antworten |