+ def get_key_and_keycode(self):
+ try:
+ key = self.stdscr.getkey()
+ except curses.error:
+ raise AbortOnGetkey
+ keycode = None
+ if len(key) == 1:
+ keycode = ord(key)
+ # workaround for <https://stackoverflow.com/a/56390915>
+ if self.store_widechar:
+ self.store_widechar = False
+ key = bytes([195, keycode]).decode()
+ if keycode == 195:
+ self.store_widechar = True
+ raise AbortOnGetkey
+ return key, keycode