2010-08-09 19 views
2

我想做一个键盘命令,这样当Ctrl键然后是'e'键然后是'x'键,然后是'i'键时程序将停止运行,和't'键被击中。所以基本上当程序运行时,如果你输入Ctrl + exit,程序将停止运行。没有GUI,我不想通过python解释器来做到这一点。为没有GUI的python程序做一个键盘命令

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

+1

我删除了gui标签给你,因为那样做毫无意义。 %) – relet 2010-08-09 22:10:25

+1

一个“键盘命令”,但没有“python解释器”。你想在哪个环境中停止运行什么程序? – msw 2010-08-09 22:14:27

回答

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表)。

相关问题