Source code for GLXBob.EventKey
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import curses
import sys
# It script it publish under GNU GENERAL PUBLIC LICENSE
# http://www.gnu.org/licenses/gpl-3.0.en.html
# Author: Tuuux <tuxa at rtnp dot org> all rights reserved
[docs]class EventKey(object):
def __init__(self, screen=None):
# Check it have a stdscr pass as argument
if screen is None:
self.screen = curses.initscr()
# Turn off echoing of keys, and enter cbreak mode,
# where no buffering is performed on keyboard input
curses.noecho()
curses.cbreak()
# In keypad mode, escape sequences for special keys
# (like the cursor keys) will be interpreted and
# a special value like curses.KEY_LEFT will be returned
self.screen.keypad(True)
else:
self.screen = screen
# We consider the screen have been initialized on the right way
[docs] def get_keyname(self, key_code):
return curses.keyname(key_code)
[docs] def get_ch(self):
return self.screen.getch()
[docs] def destroy(self):
try:
# Set everything back to normal
self.screen.keypad(False)
curses.echo()
curses.nocbreak()
curses.endwin()
#self.screen = None
finally:
pass
if __name__ == '__main__':
event_key = EventKey()
try:
event = event_key.get_ch()
if event != -1:
sys.stdout.write(u'{0}'.format(event))
sys.stdout.flush()
#event_key.destroy()
except KeyboardInterrupt:
event_key.destroy()