キーボードキー+スクロールショートカットの作成

キーボードキー+スクロールショートカットの作成

ctrl+shift+tab + scrollジョブをボリュームアップ/ダウンにマッピングしたいです。この目標をどのように達成できますか?

ctrl + scroll地図は基本的に拡大/縮小されることがわかっています。もちろん、このようなカスタムショートカットを作成する方法はありますか?

(私は kde Plasma 5.14.5 を実行しています)

ベストアンサー1

私の研究では、この問題に対するエレガントな解決策は見つかりませんでした。非常に粗雑なPythonスクリプトをハッキングしましたが、うまくいきませんでした...申し訳ありません。

from pynput import keyboard
from pynput import mouse
from pynput.keyboard import Controller
import subprocess
from subprocess import call

kbd = Controller()

COMBINATIONS = [{keyboard.Key.ctrl, keyboard.Key.shift}]

current = set()

def execute():
    with mouse.Listener(on_scroll=on_mscroll) as listener:
        listener.join()

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.add(key)
        if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS):
            # this executes only once and then it looses the keycombination
            execute()

def on_release(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        try:
            current.remove(key)
        except KeyError:
            pass

def on_mscroll(x, y, dx, dy):
    if dy < 0:
        # this can be changed to the appropriate command to change the volume
        # like pactl
        call(["amixer", "-D", "pulse", "sset", "Master", "5%-"],stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    else:
        call(["amixer", "-D", "pulse", "sset", "Master", "5%+"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    return False

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

問題は、ctrl+をshift押して上下にスクロールし、もう一度タップしてshift操作を切り替える必要があることです。私の言葉はこれがEYであるということです。さらに、これはスクロールを防ぎませんので、中立位置(サイドバーなど)でスクロールすることをお勧めします。

うまくいきますpynputが、問題にならないことを願っています。

おすすめ記事