如何在 Gnome3 中使用按键在显示器之间移动鼠标光标?

Pho*_*son 10 scripts shortcut-keys multiple-monitors cursor

我使用 Gnome3 作为带有两台显示器的桌面界面。我希望能够使用键盘将鼠标光标从一台显示器移动到另一台显示器,例如Ctrl + Alt + Right-key. 我该如何设置?

Jac*_*ijm 8

下面的脚本可以使用两个参数运行:leftright

在双显示器-设置(左/右,在任何配置),该脚本将鼠标移动到中心或者左或右显示器,根据不同的参数。

在此处输入图片说明

剧本

#!/usr/bin/env python3
import subprocess
import sys

arg = sys.argv[1]

screeninfo = [
    s for s in subprocess.check_output("xrandr").decode("utf-8").split()\
    if s.count("+") == 2
    ]

if arg == "left":
    match = [s for s in screeninfo if s.endswith("+0+0")][0]
elif arg == "right":
    match = [s for s in screeninfo if not s.endswith("+0+0")][0]

data = [item.split("x") for item in match.split("+")]
numbers = [int(n) for n in [item for sublist in data for item in sublist]]
coord = [str(int(n)) for n in [(numbers[0]/2)+numbers[2], (numbers[1]/2)+numbers[3]]]

subprocess.Popen(["xdotool", "mousemove", coord[0], coord[1]])
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 脚本需要xdotool

    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本复制到一个空文件中,另存为 move_mouse.py

  3. 测试运行脚本。从终端运行命令:

    python3 /path/to/move_mouse.py left
    
    Run Code Online (Sandbox Code Playgroud)

    python3 /path/to/move_mouse.py right
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果一切正常,请将命令添加到两个可用的快捷方式:选择:系统设置 >“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加上面的命令。

笔记

该脚本不是gnome特定的;它应该可以在所有 Ubuntu 发行版上正常运行。

解释

  • 我们可以通过以下命令将鼠标移动到特定位置(例如):

    xdotool mousemove 300 500
    
    Run Code Online (Sandbox Code Playgroud)
  • 要计算两个屏幕中的目标位置(居中),我们需要了解连接的屏幕位于任意布局中,例如

    在此处输入图片说明

  • 在 的输出中xrandr,我们可以找到关于两个屏幕的信息、它们的分辨率以及它们在跨越布局中的位置,例如:

    1280x1024+1680+128
    
    Run Code Online (Sandbox Code Playgroud)
  • 要获得每屏(中心)的目标位置,我们需要做的就是将第一和第二个数字(1280x1024,分辨率)除以 2,然后将计算出的两个位置添加到每屏的偏移量(本例中为 +1680+128)案件)。这正是脚本所做的。

    随后,找到的数字用作运行xdotool mousemove-command 的参数。