##Linux下无视桌面环境的全局快捷键方案 ###配置文件为hotkey_config.py
import keyboard
#示例
CONFIG = (
((keyboard.LEFTCTRL, keyboard.LEFTALT, keyboard.NUM_0), 'echo hello 1'),
((keyboard.LEFTCTRL, keyboard.NUM_9), 'echo hello 2'),
((keyboard.LEFTCTRL, keyboard.M), 'echo hello 3')
)
#输出调试信息
DUMP = False
#后台执行
DAEMON = True
#日志
LOG = "/tmp/hotkeys.log"
#PID文件
PID = "/tmp/hotkeys.pid"
#以某个用户执行命令
USER = "richard"
###权限 需要root以读取键盘事件, 在hotkey_config.py里修改USER,这样在执行必要的操作后会降权, 如果不修改则命令以root方式执行,很危险.
###执行 先根据示例修改配置, 然后以root执行
python hotkey.py
###停止
kill -s SIGINT `cat /tmp/hotkeys.pid`
###响应规则
- 如果同时存在CTRL + M, CRTL, 则只响应CRTL
- 如果存在重复定义, 则只响应第一个
- 按下快捷键不放只响应一次
- 对桌面环境无干扰
###系统环境
- 只能在Linux上执行, 桌面环境不重要(没有也可以)
- 需要python支持select.epoll
- 如果在桌面环境下使用,需要确定~/.Xauthority是否存在,不存在会无法执行图形界面的程序
- 由于硬件相关, 程序会自动检测键盘(默认是监听所有键盘), 检测不到是有可能的.
###可用的键码 参考keyboard.py, 太长, 这里就不写了.
###欢迎fork, 欢迎反馈