1
0
mirror of https://github.com/ihabunek/toot.git synced 2024-09-29 04:35:54 -04:00

Improve keystroke handling

This commit is contained in:
Ivan Habunek 2019-04-24 14:05:28 +02:00
parent c862df8e40
commit aff0c2281f
No known key found for this signature in database
GPG Key ID: CDBD63C43A30BB95

View File

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import webbrowser
import os import os
import webbrowser
from toot import __version__, api from toot import __version__, api
@ -102,6 +101,9 @@ class StatusListWindow:
self.pad = curses.newpad(10, width) self.pad = curses.newpad(10, width)
self.pad.box() self.pad.box()
# Make curses interpret escape sequences for getch (why is this off by default?)
self.pad.keypad(True)
self.scroll_pos = 0 self.scroll_pos = 0
def draw_statuses(self, statuses, selected, starting=0): def draw_statuses(self, statuses, selected, starting=0):
@ -522,42 +524,43 @@ class TimelineApp:
def loop(self): def loop(self):
while True: while True:
key = self.left.pad.getkey() ch = self.left.pad.getch()
key = chr(ch).lower() if curses.ascii.isprint(ch) else None
if key.lower() == 'q': if key == 'q':
return return
elif key.lower() == 'h': elif key == 'h':
self.help_modal.loop() self.help_modal.loop()
self.full_redraw() self.full_redraw()
elif key.lower() == 'v': elif key == 'v':
status = self.get_selected_status() status = self.get_selected_status()
if status: if status:
webbrowser.open(status['url']) webbrowser.open(status['url'])
elif key.lower() == 'j' or key == 'B': elif key == 'j' or ch == curses.KEY_DOWN:
self.select_next() self.select_next()
elif key.lower() == 'k' or key == 'A': elif key == 'k' or ch == curses.KEY_UP:
self.select_previous() self.select_previous()
elif key.lower() == 's': elif key == 's':
self.show_sensitive() self.show_sensitive()
elif key.lower() == 'b': elif key == 'b':
self.toggle_reblog() self.toggle_reblog()
elif key.lower() == 'f': elif key == 'f':
self.toggle_favourite() self.toggle_favourite()
elif key.lower() == 'c': elif key == 'c':
self.compose() self.compose()
elif key.lower() == 'r': elif key == 'r':
self.reply() self.reply()
elif key == 'KEY_RESIZE': elif ch == curses.KEY_RESIZE:
self.setup_windows() self.setup_windows()
self.full_redraw() self.full_redraw()