我正在尝试开发一个响应多个数字笔(IRIS笔)的应用程序,以便如果任何笔写在纸上;我将输出转发到一个屏幕。从而为自己制作一个多输入的白板。
在Ubuntu中,这些笔被识别为鼠标,因此可以像处理鼠标事件一样处理。
所以现在我打算做的是使用XLib在C / C ++中处理这些事件,并使用JNI回调将这些事件传递给Java Swing应用程序。我能够做到这一点但是当X11窗口失去焦点时,没有事件被转移到Swing框架。我也尝试在X11中使用根窗口,但它似乎不起作用。
任何帮助都会非常感激。提前感谢你。
答案 0 :(得分:2)
如何最大化Java前面的C / X11窗口并使其透明?您应该能够在关注C / X11的同时看到Java窗口。
由于您使用的是Ubuntu,因此可以使用Compiz的“Opacity,brightness and saturation”插件实现此目的。它位于compiz-plugins-main
包中,您可以使用Compiz Settings Manager(来自compizconfig-settings-manager
包)激活它。激活插件时,默认情况下绑定alt + wheel以更改焦点窗口的透明度。
答案 1 :(得分:1)
尝试直接阅读鼠标。我不记得确切的位置,但你应该找到像'/ dev / input / mouseX'这样的东西,其中X是你的设备号码,范围从0到n-1设备..
当您读取数据包时,您的应用程序应该阻塞,直到鼠标移动,然后您的读取功能将返回一个描述delta的原始鼠标数据包(在您的情况下可能比屏幕坐标更有用)和鼠标按钮状态。
原始数据包可按此处所述进行解码:http://www.computer-engineering.org/ps2mouse/
答案 2 :(得分:1)
创建一个模态对话框并将其设置为XmDIALOG_SYSTEM_MODAL
(属性的实际名称取决于您的工具包:Motif,Gtk,Qt,...)。像这样的对话框会阻挡整个显示屏,永远不会失去焦点。
当然,当屏幕上显示此对话框时,您无法执行任何其他操作。
This entry in the X11 FAQ可能会有所帮助。