2016-12-26 29 views
0

如果按下ESC按鈕,我怎樣才能讓這段代碼也返回true?如何在Mac中測試sys.stdin ESC?

if sys.stdin in select.select([sys.stdin], [], [], 0)[0]: 
+0

您是否已將終端置於非緩衝模式? – Dolda2000

+0

或者換句話說,或許是你的表達式不會返回true,或者對於除Enter之外的大多數其他鍵也是如此? – Dolda2000

回答

0

這是上下文有點短。這裏使用select來報告是否有任何可讀的內容。爲了找出什麼,你需要閱讀它。但這與被壓制的東西並不相同,這意味着仍然受到壓制。對於這樣的事情,你會想要一個像pygame.key.get_pressed()這樣的接口。類Unix系統中的默認行爲是終端層在把它交給你的程序之前處理整行 - 包括刪除帶退格的字符等。比這更細的任何細節都需要使用未烹飪的模式,例如使用curses.cbreak()curses.raw()。這恢復了按鍵的概念,但仍不會報告按鍵是否被保持。然而,密鑰本身是編碼的(許多使用終端轉義序列,使逃生本身最糟糕的解碼),所以你需要使用getch或getkey來識別它們。

相關問題