I’m trying to get my TextInput boxes to recognize a ctrl+backspace keystroke to backspace an entire token (like most modern programs).
So far, I have this:
class MyTextInput(TextInput):
def keyboard_on_key_down(self, window, keycode, text, modifiers):
"""Run when a key is pressed down"""
# Do backspace for single and ctrl+backspace for token
if keycode[1] == 'backspace':
if 'control' in modifiers:
pass # Delete previous token
return super(TabTextInput, self).keyboard_on_key_down(window, keycode, text, modifiers)
I’m not sure how to detect the previous token from the cursor and delete it without interfering with the existing behavior of the do_backspace() method.
Fyi, I am still using Kivy 1.11.1 and Python 3.7.
Advertisement
Answer
Something like this might work:
def keyboard_on_key_down(self, window, keycode, text, modifiers):
"""Run when a key is pressed down"""
# Do backspace for single and ctrl+backspace for token
if keycode[1] == 'backspace':
if 'ctrl' in modifiers:
done = False
while not done:
self.do_backspace()
cc, cr = self.cursor
line = self._lines[cr]
if cc == 0 or line[cc-1] == ' ':
done = True
return True
return super(MyTextInput, self).keyboard_on_key_down(window, keycode, text, modifiers)