diff --git a/demos/fonts/main.py b/demos/fonts/main.py index c5c96e3f..ad4eda34 100644 --- a/demos/fonts/main.py +++ b/demos/fonts/main.py @@ -11,6 +11,7 @@ def __init__(self): self.text_node = TextNode(font=self.my_font, content="Hello World", font_size=1.) self.root.add_child(self.text_node) + self.text_buffer = [] def update(self, dt): for event in self.input.events(): @@ -19,8 +20,16 @@ def update(self, dt): keyboard = event.keyboard if keyboard: + if keyboard.text_input: + self.text_buffer.append(keyboard.text) + print('Text: {}'.format(''.join(self.text_buffer))) + if keyboard.is_pressing(Keycode.q): self.engine.quit() + elif keyboard.is_pressing(Keycode.backspace): + if self.text_buffer: + self.text_buffer.pop() + print('Text: {}'.format(''.join(self.text_buffer))) elif keyboard.is_pressing(Keycode.l): self.text_node.content += "!" elif keyboard.is_pressing(Keycode.kp_7): @@ -58,8 +67,6 @@ def update(self, dt): elif keyboard.is_pressing(Keycode.f): self.camera.position = self.text_node.position - print("Mouse position: {}".format(self.input.mouse.get_position())) - if __name__ == '__main__': engine = Engine(virtual_resolution=Vector(10, 10)) diff --git a/kaa/input.pxi b/kaa/input.pxi index 339a4da9..070d40cc 100644 --- a/kaa/input.pxi +++ b/kaa/input.pxi @@ -323,6 +323,7 @@ class EventType(IntEnum): key_down = CEventType.key_down key_up = CEventType.key_up + text_input = CEventType.text_input mouse_motion = CEventType.mouse_motion mouse_button_up = CEventType.mouse_button_up @@ -488,6 +489,14 @@ cdef class KeyboardEvent(_BaseEvent): cdef KeyboardEvent instance = KeyboardEvent.__new__(KeyboardEvent) instance.c_event = c_event return instance + + @typed_property(EventType.text_input) + def text_input(self): + return self.c_event.keyboard().text_input() + + @property + def text(self): + return self.c_event.keyboard().text().decode('utf-8') def is_pressing(self, kc not None): return self.c_event.keyboard().is_pressing( diff --git a/kaa/kaacore/input.pxd b/kaa/kaacore/input.pxd index 6339abea..a4f7f498 100644 --- a/kaa/kaacore/input.pxd +++ b/kaa/kaacore/input.pxd @@ -310,6 +310,7 @@ cdef extern from "kaacore/input.h" nogil: clipboard_updated "kaacore::EventType::clipboard_updated", key_down "kaacore::EventType::key_down", key_up "kaacore::EventType::key_up", + text_input "kaacore::EventType::text_input", mouse_motion "kaacore::EventType::mouse_motion", mouse_button_down "kaacore::EventType::mouse_button_down", mouse_button_up "kaacore::EventType::mouse_button_up", @@ -390,6 +391,10 @@ cdef extern from "kaacore/input.h" nogil: except +raise_py_error bint is_releasing(CKeycode kc) \ except +raise_py_error + bint text_input() \ + except +raise_py_error + string text() \ + except +raise_py_error cdef cppclass CMouseEvent "kaacore::MouseEvent": bint button() \ diff --git a/kaacore b/kaacore index 2de6720d..450f8c71 160000 --- a/kaacore +++ b/kaacore @@ -1 +1 @@ -Subproject commit 2de6720d562226c266a9319f6ac8afc00139bd22 +Subproject commit 450f8c71fa0c4c6dcee95fd4c4a28038c5791fb0