gpt4 book ai didi

ubuntu - 检测特殊按键(Alt、Ctrl、F1 等)

转载 作者:行者123 更新时间:2023-12-04 19:17:43 27 4
gpt4 key购买 nike

如何在 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 等。
如果可能的话,我不想添加任何包。
对不起我的英语不好

最佳答案

使用 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?

关于ubuntu - 检测特殊按键(Alt、Ctrl、F1 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com