1

我想做的是让一个脚本在后台运行,当我按下一个组合键(例如 Fn + w)时,另一个脚本被执行。

如果这在 python 中很难做到,我可以在另一个中做到,或者如果有人知道另一种方法来做到这一点。

我正在使用带有 XFCE 的 Ubuntu 11.10。

4

1 回答 1

0

存在一个名为 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()
于 2012-10-06T10:52:45.697 回答