編集する:

編集する:

F1マウスクリックをマップする方法を知っていますF2F3それぞれ左クリック、中央クリック、右クリック)。

xkbset m   # required, but disable keypad
xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

ただし、これには次のものを使用する必要がxkbset mあります。遅いキーモデル:

キーボードを押すと4カーソルが左に移動します。この機能は必要なく、上記のマッピングのみが必要です。

この問題を解決しようとしていますが、xdotool押したキー/ドロップしたキー(ドラッグアンドドロップの場合)を処理する方法がわかりません。

xdotool mousedown 1
xdotool mouseup 1

どうやってできるかいいえこのモードを使用するか、すべてのキーボードキーを再マップするには?

キーボードの数字と算術記号はどうですか?

他の解決策がありますか?

Debian(cinnamon)とArchlinux(xfce)に必要な情報、可能であれば非ウィンドウマネージャベースのソリューションが必要です。

編集する:

試験を終えたこのソリューションしかし、ドラッグ&ドロップすることはできませんF1

存在する~/.xbindkeysrc

"xdotool mousedown 1"
    F1
"xdotool mouseup 1"
    F1 + Release

または:

"xdotool mousedown 1"
    m:0x10 + c:67
"xdotool mouseup 1"
    m:0x10 + c:67 + Release

それから:

xset -r 67

編集2

試験を終えたモバイル知識ベース

# actkbd configuration file
<keycode ("67")> :key : :xdotool mousedown 1
<keycode ("67")> :rel : :xdotool mouseup 1

葉巻はありません:/

から適応ここ

ベストアンサー1

うわー!

まず:スクリプトを作成しますclick

#!/bin/bash

id=$(
    xinput list |
        awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)
xdotool mousedown $1
while IFS= read -r event; do
    if [[ $event == *release* ]]; then
        xdotool mouseup $1
        exit
    fi
done < <(xinput test $id)

次に、ウィンドウマネージャに新しいキーボードショートカットを追加し、それをF1実行するようにマッピングします/path/to/mouse <1|3>(左側または右クリック)。

願いより;)

これはxbindkeysWM とは独立して実行できます。

編集する:

なぜこれがArchlinux + xfce 4.12では動作しませんが、Debian9 + Cinnamonでは動作しないのかわかりません。

編集する:

このソリューションはよりうまく機能します。

存在する.bashrc

xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

キーボードショートカット:

#!/bin/bash

id=$(
    xinput list |
        awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)


(
    while read event; do
        if [[ $event == *release* ]]; then
            xkbset -m
            exit
        fi
    done < <(xinput test $id)
) &
xkbset m

おすすめ記事