マウスのクリックをマッピングする方法を知っています F1、 F2 そして F3 (それぞれ左クリック、中クリック、右クリック):
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
slow keys モードを使用:
押すと 4 キーパッドから、カーソルを左に移動します。この機能は必要ありません。上のマッピングだけです。
私はxdotool
でそれを理解しようとしましたが、押されたキー/離されたキー(ドラッグ&ドロップ用)を使用して、
xdotool mousedown 1
xdotool mouseup 1
どうすればこのモードを使用できませんか、またはすべてのキーパッドキーを再マップできますか?
キーパッドからの数値および算術記号はどうですか?
別の解決策はありますか?
詳細については、Debian(シナモン)と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
actkbd で試した
# actkbd configuration file
<keycode ("67")> :key : :xdotool mousedown 1
<keycode ("67")> :rel : :xdotool mouseup 1
シガーなし:/
こちら から転載
W00T!
まず、スクリプトを作成します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>
(左[〜#〜]または[〜#〜]右クリック)。
Etvoilà;)
これはxbindkeys
で実行でき、WMに依存しません。
これが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
.xbindkeysrc
でこのコマンドを使用して「マウストグル」アクションを実装できます(最初の編集にはタイプミスがあり、.xbindkeys
ではありません)。
"if [ ! -e /tmp/mouse_token ] ; then touch /tmp/mouse_token ; xdotool mousedown 1 ; else rm -f /tmp/mouse_token ; xdotool mouseup 1 ; fi"
some_key
空のファイル/tmp/mouse_token
を作成して、マウスボタンの状態を追跡します。 some_key
の場合はF1
を使用できます。つまり、シングルクリックするには2回押すか、別のキーを使用する必要があります(例:F4
)。
注:私のシステムでは、不明な理由により、Fキーのプレスイベントがxbindkeysバインディングをトリガーせず、リリースイベントのみがトリガーされます。同じことが同じ場合は、release+F1
の代わりにsome_key
を使用してください。
注2:デフォルトではxbindkeys
はNumLock
をチェックしないため、rcファイルでm:0x10
を設定しなかった場合は、keystate_numlock = enable
修飾子を削除できます。