簡體   English   中英

當我的 python 腳本正在運行時,如何阻止 Linux 將鍵輸入寫入終端?

[英]How do I stop Linux from writing key inputs to the terminal while my python script is running?

我正在使用 python 3 並且每當我執行 python 腳本時,例如:

import time

while (True):
    print("-test-")
    time.sleep(1)

在我的 linux 終端上。 只要終端聚焦,每次擊鍵(如第三行中的“asdf”)都會打印到終端:

-test-
-test-
asdf-test-
-test-

有沒有辦法在我的 python 腳本運行時阻止終端輸出擊鍵(最好不更改操作系統或終端本身的配置)?

更具體地說,我想使用“pynput”來讀取鍵盤事件,而不會出現在我的輸出中:

from pynput import keyboard
import time

def key_pressed(key):
    print("key {0} pressed".format(key))

if __name__ == "__main__":
    listener = keyboard.Listener(on_press=key_pressed)
    listener.start()
    while(True):
        print("-test-")
        time.sleep(1)

這將是 output:

-test-
-test-
akey 'a' pressed
-test-

在第二次print("-test-")之后按下鍵“a”而不是:

-test-
-test-
key 'a' pressed
-test-

我發現了這個:

如何防止 shell 在運行 python 腳本時獲取輸入(鍵盤)?

鏈接到:

如何“鎖定鍵盤”以防止在 X11/Linux/Gnome 上發送更多按鍵?

據我所知,這並不是我想要的,因為他們試圖完全阻止鍵盤輸入。 我只想在運行腳本的終端上阻止它。

您的擊鍵不會被打印出來。 你寫入終端。 只需松開終端 window 的焦點,它就可以正常工作。 如果 window 在后台,pynput 也可以工作。

編輯:您可以將print("key {0} pressed".format(key))替換為print("\bkey {0} pressed".format(key)) \b將退格鍵打印到終端。 它會刪除您剛剛寫入終端的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM