鼠标按钮在 Java 应用程序中被锁定

鼠标按钮在 Java 应用程序中被锁定

我在一台新笔记本电脑上运行着相对较新的 Ubuntu 18.04。我使用了一些用 Java 编写的应用程序,特别是 Aqua Data Studio 和 JetBrains Data Grip。

重启后,我可以运行其中一个应用程序一次而不会出现问题。例如,重启后,我可以运行 Data Grip,它会完美运行。此时,以下几个操作之一可以触发更改:

  • 我让 Data Grip 保持运行,并启动 Aqua Data Studio 的一个实例
  • 我关闭了 Data Grip,然后启动了 Aqua Data Studio 的一个实例
  • 我关闭 Data Grip,然后运行 ​​Data Grip 的新实例

在任何一种情况下,我都会遇到鼠标卡住的情况。有时它似乎被卡住了(因此移动鼠标会拖动对象或选择文本)或卡住了(我无法在任何 Java 窗口内单击任何目标)。

当鼠标卡住时,键盘反应完美。如果我按 Alt-Tab 切换到另一个窗口,鼠标 100% 正常工作。如果我按 Alt-Tab 返回有问题的 Java 窗口,鼠标将恢复到之前显示的异常行为。

我认为 Data Grip 带有嵌入式 Java。Aqua Data Studio 可以选择运行嵌入式 Java 或系统 Java。下面将提供一些版本。

我从触摸板或 USB 鼠标获得了相同的结果。

$uname -a
Linux kirk-xps 4.15.0-24-generic #26-Ubuntu SMP Wed Jun 13 08:44:47 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ java -version
openjdk version "1.8.0_171"

$ ./bin/datastudio-18.5/jre/bin/java -version
java version "1.8.0_102"

$ ./bin/datastudio_19/jre/bin/java -version
java version "1.8.0_102"

$ gnome-shell --version
GNOME Shell 3.28.2

$ dmesg | grep -i touchpad
[    7.047559] psmouse serio1: synaptics: Your touchpad (PNP: DLL07e6 PNP0f13) says it can support a different bus. If i2c-hid and hid-rmi are not used, you might want to try setting psmouse.synaptics_intertouch to 1 and report this to [email protected].
[    7.102431] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2, id: 0x1e2a1, caps: 0xf00323/0x840300/0x12e800/0x0, board id: 3038, fw id: 2375007
[    7.138451] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
[  110.568852] input: DELL07E6:00 06CB:76AF Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DELL07E6:00/0018:06CB:76AF.0006/input/input27

$ free -m
          total        used        free      shared  buff/cache   
available
Mem:          15756        5038        5695        1981        5022       8835
Swap:           979           0         979

DataGrip 使用 Java 1.8.0_152。

答案1

我也遇到了这个问题。我在 18.04 中遇到过这个问题,在 20.04 中仍然有这个问题。

我看到的应用程序是 JabRef。我使用的版本是 5.2,它有一个嵌入式 Java,尽管我在两个版本的 Ubuntu 上默认安装 JabRef 时都遇到了这个问题。

$ ~/opt/JabRef/lib/runtime/bin/java --version
openjdk 15.0.1 2020-10-20
OpenJDK Runtime Environment Zulu15.28+51-CA (build 15.0.1+9)
OpenJDK 64-Bit Server VM Zulu15.28+51-CA (build 15.0.1+9, mixed mode)

行为正如您描述的一样。我注意到,一开始它并不是这样,但某些错误的鼠标点击会引发这种情况,从那时起它就一直停留在这种模式。

触发此问题后,我使用 xinput 和 xev 观察了鼠标事件,在窗口上方没有发生其他事件,只有正常的鼠标移动。当我到达窗口中通常会响应拖动事件的元素时,该元素开始表现得好像拖动事件正在进行中。

在 JabRef 案例中,拖动事件会影响应用程序中的边界放置和列选择。关闭应用程序并重新打开没有任何作用。唯一似乎有效的方法是重新启动桌面,这非常烦人。

我怀疑这与窗口管理器和 Java 的良好协同运行有关。

相关内容