小巧的热键库和守护进程
项目描述
Pyzmo是基于python-evdev的小型热键库。它可以在按键、按键组合(同时按下的键)和按键序列(连续按下的键)时调用任意Python函数。
使用(Python)
from pyzmo import *
from evdev.ecodes import *
# triggered when KEY_PLAYPAUSE is pressed
@key(KEY_PLAYPAUSE)
def playpause(events):
pass
# triggered when KEY_B is pressed, held or released
@key(KEY_B, states=['down', 'hold', 'up'])
def back(events):
pass
# triggered when either KEY_C or KEY_D are pressed
@key(KEY_C, KEY_D)
def c_or_d(events):
pass
# triggered when KEY_LEFTCTRL, KEY_LEFTALT and KEY_DELETE are
# pressed at the same time
@chord(KEY_LEFTCTRL, KEY_LEFTALT, KEY_DELETE)
def ctrlaltdel(events):
pass
# triggered when KEY_A, KEY_B and KEY_C are pressed one after the other
@keyseq(KEY_A, KEY_B, KEY_C)
def abc(events):
pass
# specifying multiple sequences for one callback (syntax applies for
# @chord and @event as well)
@keyseq( (KEY_1, KEY_2, KEY_3), (KEY_Z, KEY_X, KEY_C) )
def zxc_or_123(events):
pass
# each handler receives the list of input events, because of
# which it was triggered
@chord(e.KEY_LEFTMETA, e.KEY_A)
def term(events):
for event in events:
print(event) # instance of evdev.events.InputEvent
#event at 1352244701.749908, code 125, type 01, val 01
#event at 1352244701.861897, code 30, type 01, val 01
## Note 1:
# If we define two triggers:
# - @chord(KEY_LEFTCTRL, KEY_V)
# - @key(KEY_V)
#
# Pressing 'ctrl-v' will run both their callbacks. To stop
# processing any further triggers after a match is made, use:
@chord(KEY_LEFTCTRL, KEY_V, quick=True)
def copy(events):
pass
## Note 2:
# Pyzmo can actually match arbitrary input events. The following
# will be triggered on scroll-wheel movement:
@event(EV_REL, REL_WHEEL, -1)
def vertical_scroll(events):
pass
# start main loop
poll('/dev/input/event1', '/dev/input/event2')
# .. or if you wish to get exclusive access to a input device
from evdev import InputDevice
dev = InputDevice('/dev/input/eventX')
dev.grab()
poll(dev)
您还可以避免污染全局命名空间
from pyzmo import EventHandler
from evdev import ecodes as e
app = EventHandler('name')
@app.key(e.KEY_F)
def f(events): pass
@app.poll(...)
使用(Hy)
Pyzmo还有一个可以在Hy中使用的数据交换语言,Hy是嵌入在Python中的lisp方言。
(require pyzmo.dsl)
(import pyzmo [pyzmo [poll util]])
# triggered when KEY_PLAYPAUSE is pressed
(key PLAYPAUSE (print events))
# triggered when KEY_B is pressed, held or released
(key B [:down :hold :up] (print events))
# triggered when either KEY_C or KEY_D are pressed
(key [C D] (print events))
# triggered when KEY_LEFTCTRL, KEY_LEFTALT and KEY_DELETE are
# pressed at the same time
(chord [LEFTCTRL LEFTALT DELETE] (print events))
# triggered when KEY_A, KEY_B and KEY_C are pressed one after the other
(seq [A B C] (print events))
# start main loop
(poll "/dev/input/eventX" "/dev/input/eventY")
安装
pyzmo的最新稳定版本可在pypi上找到,而开发版本可以从github安装
$ pip install pyzmo # latest stable version
$ pip install git+git://github.com/gvalkov/pyzmo.git # latest development version
或者,您也可以像安装其他Python包一样手动安装
$ git clone git@github.com:gvalkov/pyzmo.git
$ cd pyzmo
$ git reset --hard HEAD $versiontag
$ python setup.py install
类似项目
许可证
Pyzmo在修订版BSD许可证的条款下发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
pyzmo-1.0.0.tar.gz (6.5 kB 查看哈希值)
构建分发版
pyzmo-1.0.0-py3-none-any.whl (9.9 kB 查看哈希值)
关闭
pyzmo-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 343fcf9a2ac840a191cfeafd004076672e0c17f5a2fb01a7d0a961f15b28a433 |
|
MD5 | f09acad21704333ee9f8dbaecc7924e0 |
|
BLAKE2b-256 | f6393463a104bfcfa4fab046ce3ea66351de14c225afe64745f7bbab2c53521c |
关闭
pyzmo-1.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb36b12430337ac57201eaed389f7618bbafe77e54a8b7ad4c8d9636803399c4 |
|
MD5 | 100aada3ab96a8d14bfccf518a712136 |
|
BLAKE2b-256 | c03fc6df3daa730096382a664f5df6c001adea0a509e3565a8cbb1de2bd212d5 |