2017-09-22 170 views
0

寫一個CLI程序,我想讀取Ctrl+<anything>命令。從python CLI讀取Ctrl,Alt和Shift鍵

如何從我的CLI python應用程序中監聽和處理:Ctrl+R組合鍵?

目前,只有Linux環境才需要。 pythonic方法將是最好的選擇,但我不知道如何。

從信號中,可以處理衆所周知的輸入,但不能處理自定義擊鍵。

+0

您需要直接調用OS函數來獲取這些密鑰的狀態。你正在運行哪個操作系統?雖然Control和一個字母的組合會生成一個可以檢測到的字符。 –

+0

好。但是,有一些pythonic的方式來做到這一點,而不寫一個操作系統綁定的實現?我相信stdin的紅色是一個乾淨的方法......但是,我不知道如何。 – apast

+0

你的目標是使用*任何*控制鍵,或只有字母表中的字母? –

回答

2

Pynput是一個包,設置爲處理各種操作系統的鼠標和鍵盤輸入。 This Github issue演示如何檢測持有的密鑰。如果您不想遵循以下鏈接:

from pynput import keyboard 

# The key combination to check 
COMBINATION = {keyboard.Key.cmd, keyboard.Key.ctrl} 

# The currently active modifiers 
current = set() 


def on_press(key): 
    if key in COMBINATION: 
     current.add(key) 
     if all(k in current for k in COMBINATION): 
      print('All modifiers active!') 
    if key == keyboard.Key.esc: 
     listener.stop() 


def on_release(key): 
    try: 
     current.remove(key) 
    except KeyError: 
     pass 


with keyboard.Listener(on_press=on_press, on_release=on_release) as listener: 
    listener.join() 
相關問題