Skip to content

Instantly share code, notes, and snippets.

@ScarlettSamantha
Created February 18, 2025 14:43
Show Gist options
  • Save ScarlettSamantha/d0b94393e8e5960e34302c747098ae72 to your computer and use it in GitHub Desktop.
Save ScarlettSamantha/d0b94393e8e5960e34302c747098ae72 to your computer and use it in GitHub Desktop.
from direct.showbase.ShowBase import ShowBase
from panda3d.core import WindowProperties
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
# Optional: Hide the default Panda3D mouse cursor
props = WindowProperties()
props.setCursorHidden(False)
self.win.requestProperties(props)
self.messenger.toggle_verbose()
# Accept keyboard events
# The pattern is: self.accept(<event_name>, <method_to_call>, [<arguments>])
self.accept("escape", self.on_key_press, ["Escape"])
self.accept("arrow_up", self.on_key_press, ["Up Arrow"])
self.accept("arrow_down", self.on_key_press, ["Down Arrow"])
self.accept("arrow_left", self.on_key_press, ["Left Arrow"])
self.accept("arrow_right", self.on_key_press, ["Right Arrow"])
# You can also detect key releases: event names typically end with '-up'
self.accept("arrow_left-up", self.on_key_release, ["Left Arrow"])
print("Press arrow keys or ESC to test keyboard inputs. Close the window or press ESC to exit.")
def on_key_press(self, key_name):
"""
Called when a registered key is pressed.
"""
print(f"{key_name} key pressed.")
if key_name == "Escape":
# Stop the app if ESC is pressed
self.userExit()
def on_key_release(self, key_name):
"""
Called when a registered key is released.
"""
print(f"{key_name} key released.")
# Run the application
app = MyApp()
app.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment