Linux Java Swing应用程序的信息亭模式

Linux Java Swing应用程序的信息亭模式,第1张

Linux Java Swing应用程序的信息亭模式

尝试在您的应用程序中执行此 *** 作没有任何意义,因为X11和/或窗口管理器将需要处理所有这些更改,因为这些都是对命令的响应。假设您可以控制平台,请选择一个支持信息亭模式的窗口管理器。然后使用窗口管理器的设置启动您的应用程序并进入信息亭模式。

可以执行此 *** 作的窗口管理器选项包括KDE或twm-
kiosk

(而且,如果您无法控制该平台,则您无论如何都无法让您的应用程序拦截ctrl-alt-backspace之类的东西。)

编辑:

为了缩小这个问题的规模,他愿意放开ctl-alt-backspace之类的东西,只想要大多数键,包括alt-
tab或其他类似的应用程序切换键组合,下面的方法应该起作用:

您应该能够通过JNI
使用XLib的XGrabKeyboard方法执行此 *** 作。此Java
/ XLib
JNI键捕获教程应该是一个很好的起点。但是,它使用XGrabKey只是被动地侦听密钥,并不阻止其他应用程序接收它们。您将改为使用XGrabKeyboard,它可以主动捕获所有正常的键盘事件(如果此 StackOverflow问题的前提是正确的,则包括任务切换键)。

请注意,作为副作用,Swing中的键捕获也可能会停止工作,因为您的Swing窗口将与在C中创建的窗口分开。因此,您可能必须使用JNI界面来获得按键。在需要时将其添加到您的程序中。(尽管我肯定会建议您在编写代码之前先对其进行测试。)如果可以使用Java
AWT本机接口获取窗口,则可以避免这种情况。获取窗口ID。(请注意,Swing是在AWT之上构建的,因此这将适用于Swing。)但是,我不确定如何执行此 *** 作。看起来您可能能够通过从“显示器”获取根窗口并从那里查找窗口来导航窗口树,但这有点奇怪。如果AWT
NI只是告诉您窗口ID,那就好了,但是看起来不像那样。

正如此警告提醒:XGrabKeyboard不是安全界面上所述,这不会使其他程序看不到密钥,但是窗口管理器似乎不会使用XQueryKeyMap,因此可能会阻止任务切换。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5015431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存