我想要做的是讓腳本在後臺運行,當我按下組合鍵(例如Fn + w)時,會執行另一個腳本。我如何檢測從Linux中的背景在python中的組合鍵?
如果在python中這很難做,我可以在另一箇中做,或者如果有人知道另一種方法來做到這一點。
我使用Ubuntu 11.10和XFCE。
我想要做的是讓腳本在後臺運行,當我按下組合鍵(例如Fn + w)時,會執行另一個腳本。我如何檢測從Linux中的背景在python中的組合鍵?
如果在python中這很難做,我可以在另一箇中做,或者如果有人知道另一種方法來做到這一點。
我使用Ubuntu 11.10和XFCE。
存在一個名爲python-xlib的python庫。你能趕上鍵,做你的系統 http://python-xlib.sourceforge.net/
這裏有一個例子代碼的東西,一個服務器接收鍵碼在網絡上,然後按下它:
import Xlib.display
import Xlib.X
import Xlib.XK
import Xlib.protocol.event
import Xlib.ext.xtest
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
keycode = None
try:
s.bind(("", 49999))
i=0
display = Xlib.display.Display()
while True:
daten, addr = s.recvfrom(1024)
if (daten != 'ende'):
keycode = daten
if keycode == '111' or keycode == '116':
print '%d up/down' % i
Xlib.ext.xtest.fake_input(display, Xlib.X.KeyPress, int(keycode))
display.sync()
if keycode == '117':
# A
Xlib.ext.xtest.fake_input(display, Xlib.X.KeyPress, int(
keycode))
display.sync()
if keycode == '118':
# Y
Xlib.ext.xtest.fake_input(display, Xlib.X.KeyPress, int(keycode))
display.sync()
if keycode == '119':
# SPACE
Xlib.ext.xtest.fake_input(display, Xlib.X.KeyPress, int(keycode))
display.sync()
if daten == 'ende':
if keycode != None:
Xlib.ext.xtest.fake_input(display, Xlib.X.KeyRelease, int(keycode))
keycode = None
display.sync()
daten = None
continue
finally:
s.close()
這可以在服務器上使用嗎?當我測試運行它只是凍結。我認爲evdev.py是做我想做的事情的方式,但還沒有想出它是如何工作的。 – user1319341
這個服務器的東西就是一個例子。它沒有它運行。如果您啓動腳本,它會聽取輸入。你可以嘗試什麼對你更好。對於這樣的工作,我使用xlib,evdev.py我不嘗試 – fecub
就像一個鍵盤記錄? [Evdev.py](http://svn.navi.cx/misc/trunk/python/evdev/evdev.py)它的大部分鍵都映射出來了。還要檢查系統上/ dev/input/event *的內容。 –
謝謝,生病看我能否得到那份工作。 – user1319341
真的嗎?還是你想創建一個惡意軟件或什麼? :D我偷看了我的學校網絡,密碼是1234!大聲笑 – Antoni4040