从繁忙的程序中止拖放

Mec*_*ail 7 linux firefox gnome xorg drag-and-drop

当发生以下情况时:

  1. 我从应用程序 ABC 开始拖放操作。
  2. 应用 ABC 锁定(暂时)
  3. 我松开鼠标按钮

然后,直到应用程序 ABC 完成处理,我有以下问题:

  • 其他程序无法“抓取”鼠标指针
  • 拖放光标保持活动状态
  • 我无法点击任何东西
  • 我无法打开 gnome 面板或 GNOME 菜单
  • 我不能按某些键(包括空格键、回车键、箭头键)

显然,在等待应用程序完成时,我无法做其他工作。

发生这种情况的一种情况是,当我打开了大约 500 个 Firefox 选项卡时,拖动选项卡有时会冻结半小时左右。

解决方法是通过按 Ctrl-Alt-F1 使用终端,登录,运行killall ABC以终止有问题的应用程序,然后按 Ctrl-Alt-F7 返回图形环境。但我宁愿不必杀死 ABC,而是让它完成处理,同时让我的鼠标回来。

那么,是否可以在不终止进程的情况下强行中止从繁忙程序中拖放/取消抓取鼠标指针的操作?

Mec*_*ail 6

事实上,这是可以做到的(至少对于最新版本的 X)。

您可以通过按此提交中XF86Ungrab引入的键来执行此操作。

默认情况下,此键符不绑定到任何物理键或键组合(它在 2012 年被报告为安全漏洞后被禁用,因为它允许任何人通过打破他们的抓握来绕过锁定屏幕)。在其他一些设置中,它绑定到使用数字键盘的快捷方式。显然,这不适用于没有键盘的笔记本电脑。

但是您仍然可以使用xdotool以下方法激活键符:

setxkbmap -option grab:break_actions
xdotool key XF86Ungrab
Run Code Online (Sandbox Code Playgroud)

这适用于 Ubuntu Precise 上的 X.org 版本 2:1.11.4-0ubuntu10.8。