Exemplo n.º 1
0
    def main(self, view, model):
        km = KeyMap()
        ac = ActionContext(km, model, self.__stdscr)

        while model.checkProgramExecution():
            view.update(self.__stdscr)
            c = self.__stdscr.getch() 
            model.echoCommand(str(c))
            km.addCommand(ch(c))
            demands = km.translate()
            ac.do(demands)
Exemplo n.º 2
0
class EventHandler(object):

    # class list of active handlers - they will be called. Any object here can add another
    # object here. So the menu will add or remove the world as it sees fit, and the world will
    # remove itself when the game is done

    active_handlers = set()

    def __init__(self):
        self._keymap = KeyMap() # personal keymap

    def on_key_down(self, key, mod):
        self._keymap.onkey(key, mod)

    def on_mouse_down(self):
        """mouse down - reimplement me """
Exemplo n.º 3
0
 def __init__(self):
     threading.Thread.__init__(self)
     self.devices = get_devices()
     self.keyfile = ".keymap"    # Arquivo padrão para o mapa de caracteres
     self.keymap = KeyMap(self.devices)
     self.listener = Listener(self.devices)
     self.history = History()
     self.lock = False
     self.listen()
     self.copy = False
def test_keymap_reverse():
    keymap = KeyMap(z_note=48)
    for key in KeyMap.KEYBOARD_PRIMARY:
        note = keymap.get_note(key)
        assert keymap.get_key(note) == key, (key, note)
    for key in KeyMap.KEYBOARD_SECONDARY:
        note = keymap.get_note(key)
        if note is None:
            continue
        assert keymap.get_key(note) == key, (key, note)
Exemplo n.º 5
0
    def __init__(
        self,
        *,
        z_note: int,
        mode: str,
        script: str,
        bpm: float,
        delay: float,
        repeat: bool,
    ):
        super().__init__()
        self.midi_config = MidiConfig(velocity=127, )

        self.keymap = KeyMap(z_note)
        self.keyboard_player: KeyboardPlayer = None

        self.mode = mode
        assert mode in self.MODES
        if mode == self.MODE_AUTO and script is None:
            raise ValueError

        if script is None:
            self.script = None
        else:
            self.script = Script(script)
        self._script_player_params = {
            'bpm': bpm,
            'delay': delay,
            'repeat': repeat,
        }
        self.script_player: ScriptPlayer = None

        self.bg_color = (0, 0, 0)  # black
        self.font_color = (255, 255, 255)  # white

        self._script_renderer_params = {
            'font_size': 96,
            'font_color': self.font_color,
            'lead': 2,
            'pps': 300,
        }
        self.script_renderer: ScriptRenderer = None
Exemplo n.º 6
0
 def setUp(self):
     self.model = Model()
     self.km = KeyMap()
     self.ac = ActionContext(self.km, self.model, None)
Exemplo n.º 7
0
class TestSequenceFunctions(unittest.TestCase):
    def setUp(self):
        self.model = Model()
        self.km = KeyMap()
        self.ac = ActionContext(self.km, self.model, None)

    def test_keymap_sequence(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.assertTrue(demands == 'cursor_down')

    def test_down(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.ac.do(demands)
        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 0 and y == 1)

    def test_left(self):
        self.km.addCommand('l')
        demands = self.km.translate()
        self.ac.do(demands)
        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 1 and y == 0)

    def test_looparound(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('l')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('k')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('h')
        demands = self.km.translate()
        self.ac.do(demands)

        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 0 and y == 0)

    def test_insert(self):
        sample_text = "This is sample text"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getRawContent() == sample_text)

    def test_discernText(self):
        sample_text = "This is sample text"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Text")

    def test_discernNumeric(self):
        sample_text = "3.14159"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Numeric")

    def test_discernFormula(self):
        sample_text = "=sum(A1:A10)"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Formula")
Exemplo n.º 8
0
curses.start_color() # enable color support
curses.noecho()      # don't display pressed KEYS
curses.cbreak()      # don't wait for a newline to process input
STDSCR.keypad(1)     # enable keypad mode (process special KEYS, like Home)
curses.curs_set(0)   # make the cursor invisible
curses.halfdelay(5)  # wait only half a second between each getch

# Overload colors to make blocks
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_WHITE)
curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_GREEN)
curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_BLUE)
curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_YELLOW)
curses.init_pair(5, curses.COLOR_RED, curses.COLOR_RED)

try:
    KEYS = KeyMap()
    KEYS.load_from_file(CONFIG_FNAME)

    GAME_BOARD = Board(STDSCR, [0, 0], [20, 20])
    SCORE_BOARD = ScoreBoard(GAME_BOARD.status, 5, 25)

    GAME_QUIT = False
    LAST_GAME_STEP = time()
    while not GAME_QUIT and not GAME_BOARD.game_over():
        CURRENT_TIME = time()
        if CURRENT_TIME - LAST_GAME_STEP > STEP_TIME:
            GAME_BOARD.advance_block()
            LAST_GAME_STEP = CURRENT_TIME

        USR_INPUT = STDSCR.getch()
        if USR_INPUT == KEYS.quit:
Exemplo n.º 9
0
 def setUp(self):
     self.model = Model()
     self.km = KeyMap()
     self.ac = ActionContext(self.km, self.model, None)
Exemplo n.º 10
0
class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        self.model = Model()
        self.km = KeyMap()
        self.ac = ActionContext(self.km, self.model, None)

    def test_keymap_sequence(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.assertTrue(demands == 'cursor_down')

    def test_down(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.ac.do(demands)
        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 0 and y == 1)

    def test_left(self):
        self.km.addCommand('l')
        demands = self.km.translate()
        self.ac.do(demands)
        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 1 and y == 0)

    def test_looparound(self):
        self.km.addCommand('j')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('l')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('k')
        demands = self.km.translate()
        self.ac.do(demands)

        self.km.addCommand('h')
        demands = self.km.translate()
        self.ac.do(demands)

        (x, y) = self.model.getCursor().getCursor()
        self.assertTrue(x == 0 and y == 0)

    def test_insert(self):
        sample_text = "This is sample text"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getRawContent() == sample_text)

    def test_discernText(self):
        sample_text = "This is sample text"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Text")

    def test_discernNumeric(self):
        sample_text = "3.14159"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Numeric")

    def test_discernFormula(self):
        sample_text = "=sum(A1:A10)"
        sheet = self.model.getSheet()
        cursor = self.model.getCursor()
        cursor.setCellAtCursor(sheet, sample_text)
        cell = cursor.getCell(sheet)
        self.assertTrue(cell.getType() == "Formula")
Exemplo n.º 11
0
class KMLoger(threading.Thread):
    """ Classe principal """
    def __init__(self):
        threading.Thread.__init__(self)
        self.devices = get_devices()
        self.keyfile = ".keymap"    # Arquivo padrão para o mapa de caracteres
        self.keymap = KeyMap(self.devices)
        self.listener = Listener(self.devices)
        self.history = History()
        self.lock = False
        self.listen()
        self.copy = False

    def record(self):
        if self.copy:
            self.copy = False
            print("\rComandos gravados" + " "*80)
            self.listener.del_key_sniffer("rec")
            # self.listener.del_mouse_sniffer("mouse")
        else:
            self.copy = True
            print("\rIniciando gravação" + " "*80)
            self.history.reset()
            self.listener.add_key_sniffer("rec", [self.keymap.get_key_by_func("rec")], self.history.append_event)
            # self.listener.add_mouse_sniffer("mouse", self.history.append_event)

    def pprint(self, *args):
        if not self.copy:
            print(args)

    def listen(self):
        """ Inicializando todas as fun """
        self.listener.add_listener("redefine", ecodes.EV_KEY, self.keymap.get_key_by_func("redefine"), self.change_keys)
        
        self.listener.add_listener("quit", ecodes.EV_KEY, self.keymap.get_key_by_func("quit"), self.exit)
        self.listener.add_listener("copy", ecodes.EV_KEY, self.keymap.get_key_by_func("rec"), self.record)
        self.listener.add_listener("run", ecodes.EV_KEY, self.keymap.get_key_by_func("run"), self.play)
        # self.listener.add_listener("save", ecodes.EV_KEY, self.keymap.get_key_by_func("save"), self.history.save)
        # self.listener.add_listener("load", ecodes.EV_KEY, self.keymap.get_key_by_func("load"), self.history.load)
        # self.listener.add_listener("pause", ecodes.EV_KEY, self.keymap.get_key_by_func("pause"), self.history.sleep)
        # self.listener.add_listener("stop", ecodes.EV_KEY, self.keymap.get_key_by_func("stop"), self.history.stop)
        # self.listener.add_listener("run_forever", ecodes.EV_KEY, self.keymap.get_key_by_func("run_forever"), self.play_forever)
        # self.listener.add_key_sniffer("rec", [self.keymap.get_key_by_func("rec")], self.history.append_event)

        
        # self.listener.add_listener("copy", ecodes.EV_KEY, self.keymap.get_key_by_func("rec"), pprint, "record")
        self.listener.add_listener("save", ecodes.EV_KEY, self.keymap.get_key_by_func("save"), self.pprint, "save")
        self.listener.add_listener("load", ecodes.EV_KEY, self.keymap.get_key_by_func("load"), self.pprint, "load")
        self.listener.add_listener("pause", ecodes.EV_KEY, self.keymap.get_key_by_func("pause"), self.pprint, "sleep")
        self.listener.add_listener("stop", ecodes.EV_KEY, self.keymap.get_key_by_func("stop"), self.pprint, "stop")
        # self.listener.add_listener("run", ecodes.EV_KEY, self.keymap.get_key_by_func("run"), self.pprint, "play")
        self.listener.add_listener("run_forever", ecodes.EV_KEY, self.keymap.get_key_by_func("run_forever"), self.pprint, "play_forever")
        

    def play(self):
    	if not self.copy:
    		print("\rplay" + " "*80)
	        self.history.set_n(1)
	        self.history.play()

    def play_forever(self):
    	if not self.copy:
	        self.history.set_n(0)
	        self.history.play()

    def run(self):
        self.history.start()
        self.listener.run()
        self.history.join()

    def save_key_map(self):
        """ Salva o mapa de caracteres no arquivo padrão. """
        pickle.dump( self.keymap, open(self.keyfile, 'wb'), -1)
    
    def exit(self):
        if not self.copy:
            self.history.exit()
            self.listener.exit()
            flush_input()
            print("\nBye!")

    def load_key_map(self):
        """ Carrega o mapa de caracteres do arquivo padrão. """
        try:
            self.keymap = pickle.load(open(self.keyfile, 'rb'))
        except IOError:
            self.save_key_map()
        self.listen()

    def change_keys(self):
        if not self.copy:
            self.keymap.setup()
            print("\rNovo mapa de teclas salvo.")
            self.save_key_map()
            print("\rPrograma precisa ser reiniciado")
            self.exit()

    def print_keys(self):
        self.keymap.print_keymap()
Exemplo n.º 12
0
 def __init__(self):
     self._keymap = KeyMap() # personal keymap