マウスポインタを非表示にして無効にするためのヘルプが必要です。ただし、すべてのマウスイベントを他のデバイスに送信する必要があります。したがって、主なシナリオは次のとおりです。SWTアプリケーションを開く->ボタン(またはラベル、または必要なもの...)を押す->マウスSWT側が消える、ポインタなし、イベントなし->マウスポインタが他のデバイスに表示される- >他のデバイスのマウスポインタをメインの物理的なマウスから制御できます。
今までに見つけたのは、ポインタを透明にする方法で、20msごとに位置を固定できるタイマーを考えました。しかし、どうすればイベントを防ぐことができますか?そして、私はまだそれらを捕まえることができますか?
よろしく
アップデート:
最終的な解決策:新しいフルスクリーンウィンドウが半透明
public class AntiMouseGui {
Display display;
Shell shell;
final int time = 20;
private Runnable timer = null;
public AntiMouseGui(final Display display, final DebugForm df, final PrintWriter socketOut) {
Image bg = new Image(display, "icons/hide_mouse_wallpapaer.png");
shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
final int dis_x = display.getClientArea().width, dis_y = display.getClientArea().height;
shell.setSize(dis_x, dis_y);
shell.setBackgroundImage(bg);
shell.setAlpha(50);
shell.setMinimumSize(shell.getSize());
shell.open();
timer = new Runnable() {
public void run() {
Point cur_loc = display.getCursorLocation();
int span_x = dis_x / 2 - cur_loc.x, span_y = dis_y / 2 - cur_loc.y;
df.appendTxt("span x = " + span_x + " span y = " + span_y);
if (span_x != 0) Controller.moveMouseRight(socketOut, -span_x);
if (span_y != 0) Controller.moveMouseDown(socketOut, -span_y);
display.setCursorLocation(new Point(dis_x / 2, dis_y / 2));
if (!shell.isDisposed()) display.timerExec(time, this);
}
};
display.timerExec(time, timer);
}
}