OK, I came across this online for camera movement with limitations. I would like to be able to use a game controller and/or keypad instead of mouse movement. How would I go about changing this so it won’t just work with mouse movement.

```
import bge
from bge import render as r
import math
cont = bge.logic.getCurrentController()
own = cont.owner
mouse = cont.sensors["Mouse"]
parent = own.parent
#set speed for camera movement
sensitivity = 0.05
#set camera rotation limits
high_limit = 180
low_limit = 0
h = r.getWindowHeight()//2
w = r.getWindowWidth()//2
x = (h - mouse.position[0])*sensitivity
y = (w - mouse.position[1])*sensitivity
if own["startup"]:
r.setMousePosition(h, w)
own ["startup"] = False
else:
rot = own.localOrientation.to_euler()
pitch = abs(math.degrees(rot[0]))
if high_limit > (pitch+y) > low_limit:
pitch += y
elif (pitch+y) < low_limit:
pitch = low_limit
elif (pitch+y) > high_limit:
pitch = high_limit
rot[0] = math.radians(pitch)
own.localOrientation = rot.to_matrix()
parentRot = parent.localOrientation.to_euler()
yaw = math.degrees(parentRot[2]) + x
parentRot[2] = math.radians(yaw)
parent.localOrientation = parentRot.to_matrix()
r.setMousePosition(h, w)
```