Necrotreading of the worst kind, sorry.
I’ve taken the code posted here and wrapped it into a class that throws events just like the keyboard/mouse buttons.
gist.github.com/wezu/9cd50bf57b … b6a3499a60
You can use it like this:
from __future__ import print_function
from panda3d.core import *
from direct.showbase import ShowBase
from direct.showbase.DirectObject import DirectObject
from controller import Controller
class Demo(DirectObject):
def __init__(self):
base = ShowBase.ShowBase()
self.joy_pad=Controller('joystick')
#get all buttons
self.accept('joystick', self.print_key)
#get all axis
self.accept('joystick-analog', self.print_axis)
#get just one specific
self.accept('button_0', self.jump)
#good-ol'-keymap
#key mapping
self.keyMap = {'key_up': False,
'key_down': False,
'key_left': False,
'key_right': False}
self.accept('pad_up', self.keyMap.__setitem__, ["key_up", True])
self.accept('pad_up-up', self.keyMap.__setitem__, ["key_up", False])
self.accept('pad_down', self.keyMap.__setitem__, ["key_down", True])
self.accept('pad_down-up', self.keyMap.__setitem__, ["key_down", False])
self.accept('pad_left', self.keyMap.__setitem__, ["key_left", True])
self.accept('pad_left-up', self.keyMap.__setitem__, ["key_left", False])
self.accept('pad_right', self.keyMap.__setitem__, ["key_right", True])
self.accept('pad_right-up', self.keyMap.__setitem__, ["key_right", False])
def jump(self):
print('jump!')
def print_axis(self, axis, pos):
print(axis, pos)
def print_key(self, key):
print(key)
d=Demo()
base.run()