如何使用ncurses,它爲你做了什麼?它還可以幫助您瞭解如何爲您連接的特定終端類型設置文本格式等。
使用python綁定提供的getkey()函數,我可以找出不同鍵的修飾符。我還發現,對於Shift +方向鍵,有一個單獨的密鑰代碼,縮寫爲KEY_SR
,KEY_SF
,上下和KEY_SLEFT
和KEY_SRIGHT
。
import curses
import curses.textpad
import curses.ascii
def decodeSuffix(i):
return {
0b110: (True, True, False),
0b100: (True, False, True),
0b111: (False, True, True),
0b101: (False, True, False),
0b011: (False, False, True),
}[i]
def test(stdscr):
while True:
k = stdscr.getkey()
if k == "\n":
return
elif k[0] == "k" and len(k) > 1:
i = int(k[-1])
shift, ctrl, alt = decodeSuffix(i)
s = ""
if shift:
s += "shift "
if ctrl:
s += "ctrl "
if alt:
s += "alt "
s += k[1:-1]
stdscr.addstr("{0:40s} {1:08b}\n".format(s, i))
else:
stdscr.addstr("{0}\n".format(k))
pass
curses.wrapper(test)
你可以玩這個。看看source of getkey(),我們發現它基本上是getch
和keyname
curses函數的組合。
我正在使用ncurses。出於某種原因,它無法檢測到「Shift + Up」和「Shift + Down」,並且我預測它對於某些鍵的Ctrl和Alt也會有問題。這意味着我必須以其他方式檢測這些按鍵。 – 2012-07-23 06:17:18
@TheScienceBoy我添加了一個例子和一些對我的回覆的引用。我現在看到你的問題在哪裏檢測到shift + up和shift + down。希望這可以幫助! – 2012-07-24 08:28:54
我在我的系統上嘗試了你的解決方案,但是在X11中(爲了方便起見,我首先嚐試了)沒有檢測到shift + key和shift + key down(sleft and sright working)。在X11外部的適當控制檯中檢測到不換檔鍵。 據我瞭解,這種事情需要Linux中真正的低級別解決方案,這有點令人傷心。人們會認爲鍵盤處理會更容易。 – 2012-10-22 18:20:50