如何在Python 3.4.3 Ubuntu控制台中捕获特殊按键? 我发现了这个:
import tty, sys, termios, select
def setup_term(fd, when=termios.TCSAFLUSH):
mode = termios.tcgetattr(fd)
mode[tty.LFLAG] = mode[tty.LFLAG] & ~(termios.ECHO | TERMIOS.ICANON)
termios.tcsetattr(fd, when, mode)
def getch(timeout=None):
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
setup_term(fd)
try:
rw, wl, xl = select.select([fd],[],[],timeout)
except select.error:
return
if rw:
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
但它没有检测到按下F1,Alt,Ctrl等
如果可能,我想不添加任何包裹。
抱歉我的英文
答案 0 :(得分:1)
如果要构建文本用户界面,使用curses模块可能会对您有所帮助。此示例为每个按下的键打印一个键代码:
import curses
def main(stdscr):
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
while True:
keycode=stdscr.getch()
stdscr.addstr("%i\n" % keycode)
stdscr.refresh()
curses.wrapper(main)
对于F1,输入或箭头键等特殊键,请将键码与curses.KEY_F1之类的常量进行比较:https://docs.python.org/3/library/curses.html#constants
您将无法捕捉某些修改键,例如alt或control。常规终端无法做到这一点,请参阅How to get CTRL, Shift or Alt with getch() ncurses?