我试图编写一个程序,每当按下某些键时就会执行代码。我目前正在这项工作中,但不幸的是,此解决方案非常慢。直到按下按钮几秒钟后,Python才发现有关按键的信息。
command = "./STB_KEYCAP.sh"
popen = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
for stdout_line in iter(popen.stdout.readline, ""):
stdout_line = stdout_line.decode("utf-8")[0]
if stdout_line == "a":
channelUp()
elif stdout_line == "d":
channelDown()
STB_KEYCAP.py:
xinput test-xi2 --root 3| grep -A2 --line-buffered RawKeyRelease | while read -r line ;
do
#Trim line down and remove non digits
if [[ $line == *"detail"* ]];
then
key=$( echo $line | sed "s/[^0-9]*//g")
if [[ $key == "38" ]];
then
echo "a"
fi
if [[ $key == "40" ]];
then
echo "d"
fi
if [[ $key == "42" ]];
then
echo "g"
fi
sleep 0
fi
done
同样,这确实可行,但是要采取措施需要花费几秒钟的时间。关于如何重写它以使其更快的任何提示都将很棒!
答案 0 :(得分:0)
我最终找到了一个对我来说很好的解决方案。不利的一面是,它要求脚本以管理员权限运行,在我看来,这不是问题,但对于某些用途可能不起作用。 我最终为键盘解析了/ dev / input文件,并从那里的更改确定按键。该解决方案最终变得非常快,并给出了良好的结果。
f = open( "/dev/input/event5", "rb" );
while 1:
data = f.read(24)
bytes = struct.unpack('4IHHI', data)
value = str(bytes).split(", ")
if value[6] == "0)":
if value[5] != "0":
# DO SOMETHING WITH KEY