私がやろうとしているのは、スクリプトをバックグラウンドで実行することです。キーの組み合わせ (Fn + w など) を押すと、別のスクリプトが実行されます。
これがPythonで行うのが非常に難しい場合は、別の方法で行うことができます。または、これを行う別の方法を誰かが知っている場合。
XFCEでUbuntu 11.10を使用しています。
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()