当前位置: 首页 > 面试题库 >

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

山翼
2023-03-14
问题内容

我正在用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中重新实现它。



 类似资料:
  • 如果我创建了一个简单的应用程序,其中有一个活动,其中包含一个EditText,我会这样做 这样可以防止键盘出现(在我的Android5.0和7.1测试中)。这就是我想要的,正如这些问题所要求的: 从EditText禁用软键盘,但仍允许复制/粘贴 如何为特定活动禁用Android软键盘 Android:在所有编辑文本中禁用软键盘 如何在编辑文本时禁用键盘弹出 禁用编辑文本上的键盘 源代码是 但是我看

  • 我正在使用蓝牙条形码扫描器,就像蓝牙键盘一样,当我的用户扫描某些东西时,我想处理这些键,但我知道他可以聚焦活动中的任何编辑文本,所以我想检测他在我的KeyEvent中使用的键盘,如下所示:

  • 问题内容: 我想通过编程更改Linux中的键盘布局,这是X11的API函数吗? 问题答案: 我找到了一个好的解决方案。这是Jay Bromley写的c ++类,我可以将其添加到我的应用中并使用它。 源代码 它很容易使用: 您可以阅读源代码并找到其他有用的功能。要编译独立版本,您需要取消注释“ XKeyboard.cpp”中存在的“ int main”函数(或编写您自己的main.cpp),并使用如

  • 问题内容: 我可以导入什么以模拟Java中的键盘按下? 因此,例如,我可以使用它制作一个程序,以便在事件发生时自动按下“ a”键。 问题答案: 您需要的一切都在 例:

  • 大家好,我已经创建了该地区的调查项目。我已经在recycler视图中加载了这个问题,其中edittext、radiobutton、checkbox、spinner是动态生成的(每个都没有单独的布局文件)。我使用了新的edittext和textwatcher在列表中动态更新答案,以便它可以返回到mainactivity,即从adapterclass到activity class。我的问题是editt

  • 问题内容: 我有一个“保存”按钮,我想与软键盘一起向上推。因此,当用户单击我的布局中的EditText时,按钮必须保持在键盘上方。现在,该按钮将隐藏在键盘下方。你怎么做到这一点? 提前致谢! 问题答案: 您需要将键盘的输入模式设置为。您可以这样做,将以下行添加到清单中您的活动属性中: 这是在活动中添加的属性的示例: