web-dev-qa-db-ja.com

コマンド/スクリプトでカーソル位置を設定するにはどうすればよいですか?

いくつかのことをリセットするスクリプトがあり、その最後に、カスタムセットまたは画面の中心(gnome-Shellの再起動時にデフォルトでリセットされる場所)に特定の座標にカーソルを設定する必要がありますインスタンス)。

どうすればこれを達成できますか?このソリューションは、すべてのディスプレイサイズで機能し、データを自動的に取得し、すべての計算などを行う必要があります。

Ubuntu GNOME 16.04とGNOME 3.20を実行しています。

4
user364819

マウスを定義された(絶対)位置に移動する

..は単にコマンドによって実行されます(例):

xdotool mousemove 200 200

ただし、画面のcentreにマウスを移動するにはrelativeコマンドを使用します。このコマンドでは、画面の情報を読み取り、計算を行う必要があります。これは、以下の2つの小さなスクリプトで行われます。

簡単なバージョン(カーソルを左画面の中央に移動)

マウスを(左端の)画面の中央に移動するには、次のスクリプトを使用します。

#!/usr/bin/env python3
import subprocess

xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
scr = [int(n)/2 for n in xr[0].split("+")[0].split("x")]
subprocess.Popen(["xdotool", "mousemove", str(scr[0]), str(scr[1])])
  • xdotoolをインストールする

    Sudo apt-get install xdotool
    
  • スクリプトを空のファイルにコピーし、center_screen.pyとして保存します

  • それを実行します:

    python3 /path/to/center_screen.py
    

拡張バージョン(オプションの引数x、y)

任意の座標がオプションの場合、使用:

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

if sys.argv[1:]:
    scr = [sys.argv[1], sys.argv[2]]
else:
    xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
    scr = [str(int(n)/2) for n in xr[0].split("+")[0].split("x")]

subprocess.Popen(["xdotool", "mousemove", scr[0], scr[1]])

このバージョンでは、カーソルをwithout引数を実行すると画面の中央に移動し、with引数を実行すると任意の位置に移動します。例:

python3 /path/to/center_screen.py 200 200

説明

コマンドxrandrの出力では、次のような文字列のみを見つける必要があります。

1680x1050+0+0

... 左端画面(+0+)のデータが含まれます。 1680x1050の両方の数字を2で割って、以下で使用します:

xdotool mousemove <x> <y>

この線:

if sys.argv[1:]:

次に、指定された引数を使用するか、計算した引数を使用するかを決定します。

5
Jacob Vlijm