如何“锁定键盘”以防止在X11 / Linux / Gnome上发送更多按键?

我正在用python为Ubuntu Linux编写一个防RSI

/类型中断程序。我希望能够“锁定键盘”,以便忽略所有按键,直到“解锁”为止。我希望能够强迫用户休息一下。

我想以某种编程方式“立即”关闭键盘,直到我的程序稍后释放它(可能是0.1秒→10秒后)。当我“关闭键盘”时,不应将任何按键发送给任何窗口,窗口管理器等。最好,屏幕仍应显示相同的内容。即使此程序不在前字体且没有焦点,也应锁定键盘。

一些程序已经能够做到这一点(例如,Work Rave)

如何在Linux / X11上执行此操作?(在Python中更可取)

回答:

使用xinput使用shell脚本可以很容易地做到这一点:

 #!/bin/sh

do_it() {

# need error checking there. We should also restrict which device gets

# deactivated, by checking other properties.

keyboard_ids="$(xinput list | sed -rn 's/.*id=([0-9]+).*slave\s+keyboard.*/\1/p')"

for keyboard_id in $keyboard_ids; do

# 121 is "Device Active".

# use xinput watch-props $device_id to see some properties.

xinput set-int-prop $keyboard_id 121 8 $1;

done;

}

# you maybe don't want to exit in case of failure there.

do_it 0 ; sleep 5; do_it 1

这种逻辑在Python中很容易重写。如果安装xinput是有问题的,那么最好获取xinput的源并尝试使用python-

xlib之类的库在Python中重新实现它。

以上是 如何“锁定键盘”以防止在X11 / Linux / Gnome上发送更多按键? 的全部内容, 来源链接: utcz.com/qa/402311.html

回到顶部