2014-03-12 22 views
4

这里是python的新手,并使用curses导入。我想检测像ALT + F和类似的组合键。目前,我使用getch()接收密钥,然后将其打印在curses窗口中。该值不会更改为FALT + F。如何检测ALT组合键?如何在Python中检测curses ALT +组合键

import curses 

def Main(screen): 
    foo = 0 
    while foo == 0: 
     ch = screen.getch() 
     screen.addstr (5, 5, str(ch), curses.A_REVERSE) 
     screen.refresh() 
     if ch == ord('q'): 
     foo = 1 

curses.wrapper(Main) 

回答

3

试试这个:

import curses 

def Main(screen): 
    while True: 
     ch = screen.getch() 
     if ch == ord('q'): 
     break 
     elif ch == 27: # ALT was pressed 
     screen.nodelay(True) 
     ch2 = screen.getch() # get the key pressed after ALT 
     if ch2 == -1: 
      break 
     else: 
      screen.addstr(5, 5, 'ALT+'+str(ch2)) 
      screen.refresh() 
     screen.nodelay(False) 

curses.wrapper(Main) 
+2

OP,^这个是我见过的最好的方法。否则,你可能不喜欢他们说什么,但结帐http://stackoverflow.com/questions/9750588/how-to-get-ctrl-shift-or-alt-with-getch-ncurses 祝你好运! – wbt11a

+0

也许getch()不是要使用的正确函数调用。我记得它对于C语言中的某些东西来说相当有限。也许更好的问题是如何阅读原始扫描代码...此外,该示例似乎并没有粘贴。嗯.. – wufoo

+0

其实代码工作正常粘贴英寸我的错误。我期待它能够打印所有按键,而不仅仅是ALT +组合。谢谢! – wufoo

相关问题