Расширение скобок происходит очень рано во время расширения (фактически первым делом), до расширения переменных. Чтобы выполнить расширение скобок на результате расширения переменной, нужно использовать eval
.
Вы можете добиться того же эффекта без eval
, если сделаете extensions
шаблоном подстановочных знаков, а не скобок. Установите опцию extglob
, чтобы активировать кш-подобные шаблоны.
shopt -s extglob
extensions='@(foo|bar)'
ls 1.$extensions
П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
Вы можете реализовать действие «переключение мыши» с помощью этой команды в.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.