Как сопоставить клавиши мыши как клавиши клавиатуры без потери «цифровой клавиатуры» для Linux?

Расширение скобок происходит очень рано во время расширения (фактически первым делом), до расширения переменных. Чтобы выполнить расширение скобок на результате расширения переменной, нужно использовать eval.

Вы можете добиться того же эффекта без eval, если сделаете extensions шаблоном подстановочных знаков, а не скобок. Установите опцию extglob, чтобы активировать кш-подобные шаблоны.

shopt -s extglob
extensions='@(foo|bar)'
ls 1.$extensions

6
04.02.2019, 13:42
2 ответа

П00Т !

Сначала :создайте скрипт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>(влево ИЛИ щелкните правой кнопкой мыши ).

И вуаля;)

Это можно запустить с 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
4
27.01.2020, 20:29

Вы можете реализовать действие «переключение мыши» с помощью этой команды в.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, что означает, что вам придется нажать ее дважды, чтобы получить один щелчок, или использовать другую клавишу (, например.F4).

Примечание. :В моей системе по неизвестной причине событие нажатия клавиши F не запускает привязку xbindkeys, а только событие отпускания. Если у вас происходит то же самое, используйте release+F1вместо some_key.

Note2 :по умолчанию xbindkeysне проверяет NumLock, поэтому вы можете удалить модификатор m:0x10, если вы не установили keystate_numlock = enableв файле rc.

0
27.01.2020, 20:29

Теги

Похожие вопросы