Keyboard
Note
This code uses self
in the context of a class, typically an extension.
Subscribe to Keyboard Events
import omni.appwindow
import carb.input
app_window = omni.appwindow.get_default_app_window()
self.keyboard = app_window.get_keyboard()
input = carb.input.acquire_input_interface()
self.keyboard_sub_id = input.subscribe_to_keyboard_events(self.keyboard, self.on_keyboard_input)
Handle Keyboard Events
from carb.input import KeyboardEventType
def on_keyboard_input(self, e):
if e.input == carb.input.KeyboardInput.W:
if e.type == KeyboardEventType.KEY_PRESS or e.type == KeyboardEventType.KEY_REPEAT:
self.handle_key_pressed(e.input)
elif e.type == KeyboardEventType.KEY_RELEASE:
self.handle_key_released(e.input)
Unsubscribe the Keyboard Event Handler
When you are done using it you should unsubscribe from the event handling using one of these two methods.
import carb.input
input = carb.input.acquire_input_interface()
keyboard = app_window.get_keyboard()
input.unsubscribe_to_keyboard_events(keyboard, self.keyboard_sub_id)
# or just...
self.keyboard_sub_id = None