为没有GUI的python程序创建一个键命令

时间:2010-08-09 22:04:31

标签: python

我想制作一个键命令,以便程序在按Ctrl键然后按'e'键然后按'x'键然后按'i'和't'键时才会停止运行。所以基本上当程序运行时如果你输入Ctrl + exit,程序将停止运行。没有GUI,我不想通过python解释器这样做。

最终目标是一个程序,如果键入Ctrl + exit命令将关闭该程序,无论其他程序是什么焦点。这个程序将是一个轻量级的键盘记录器,因此拥有一个GUI将毫无意义。

1 个答案:

答案 0 :(得分:1)

在您记录收到的密钥时,使用简单的FSM作为“退出逻辑”,例如:

FINAL_STATE = 9999
transitions = {(None, 'e'): 1, (1, 'x'): 2, (2, 'i'): 3, (3, 't'): FINAL_STATE}

def keylogger_logic(filename, get_next_keystroke, fsm_state=None):
    with open(filename, 'w') as f:
        k = get_next_keystroke()
        f.write(k)
        f.flush()
        fsm_state = transitions.get((fsm_state, k))
        if fsm_state == FINAL_STATE: break

这假设你有或写了一个函数,它将“下一个击键”作为一个字符串返回,并作为第二个参数传递给keylogger_logic(我这样做,通过将key-getter功能与此逻辑一起硬编码,作为依赖注入模式的应用程序,使事情变得非常容易进行单元测试;类似于将fsm_state作为参数,即使其可设置为呼叫者 - 简化测试)。如果您希望“获取下一个按键”功能返回字符串以外的其他内容(您只需要修复f.writetransitions表),就可以轻松调整。