2020-03-06 14:19:46 +05:30

60 lines
1.5 KiB
Python

#!/usr/bin/env python3
# vim:fileencoding=utf-8
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
import sys
from kitty.key_encoding import (
ALT, CTRL, PRESS, RELEASE, REPEAT, SHIFT, SUPER, encode_key_event
)
from ..tui.handler import Handler
from ..tui.loop import Loop
class KeysHandler(Handler):
def initialize(self):
self.cmd.set_window_title('Kitty extended keyboard protocol demo')
self.cmd.set_cursor_visible(False)
self.print('Press any keys - Ctrl+C or Ctrl+D will terminate')
def on_text(self, text, in_bracketed_paste=False):
self.print('Text input: ' + text)
def on_key(self, key_event):
etype = {
PRESS: 'PRESS',
REPEAT: 'REPEAT',
RELEASE: 'RELEASE'
}[key_event.type]
lmods = []
for m, name in {
SHIFT: 'Shift',
ALT: 'Alt',
CTRL: 'Ctrl',
SUPER: 'Super'}.items():
if key_event.mods & m:
lmods.append(name)
mods = '+'.join(lmods)
if mods:
mods += '+'
self.print('Key {}: {}{} [{}]'.format(etype, mods, key_event.key, encode_key_event(key_event)))
def on_interrupt(self):
self.quit_loop(0)
def on_eot(self):
self.quit_loop(0)
def main(args):
loop = Loop()
handler = KeysHandler()
loop.loop(handler)
raise SystemExit(loop.return_code)
if __name__ == '__main__':
main(sys.argv)