Эмулируйте щелчок мышью при нажатии клавиши

Я пытаюсь эмулировать left-mouse-down, когда клавиша Home снижается и left-mouse-up, когда клавиша Home отпускается.

Причиной позади этого являются кнопки моей сенсорной панели, ужасны, и мне нравится использовать точку дорожки (красный сосок) с нажатием левой кнопки мышки для выделения (копия) текст. Вместо того, чтобы использовать кнопку сенсорной панели я хочу использовать 'Домашний' ключ. Я могу эмулировать часть мыши вниз, но я не знаю, как выпустить щелчок, когда 'Домашняя' клавиша отпускается.

Вот то, для чего я имею так. сначала я использую xbindkeys инструмент. Я добавил эту запись в .xbindkeysrc:

"~/bin/mouse-click"
  m:0x0 + c:110

щелчок мышью является этим сценарием удара:

#!/bin/bash
xdotool mousedown 1

Проблемой является щелчок, никогда не выпускается так, я должен найти способ обнаружить выпуск 'Дома'. Вот сценарий, который я пытаюсь записать. Комментарии описывают то, что я пытаюсь сделать:

#!/bin/bash

# not sure how to do that:
exit if Home key is in a pressed state (to avoid more mousedown actions)

xdotool mousedown 1

# not sure how to do that: (if Home key is released, release the mouse click)
while xinput query-state <device name> | grep -Flq 'key[9]=up'
xdotool mouseup 1

Таким образом, Это - то, что я пытаюсь выяснить:

  1. Запросите состояние ключа 'Home' (нажатый или не).
  2. Слушайте события клавиатуры и обнаружьте выпуск ключа 'Home'.

Если существует лучший подход для достижения этого, я хотел бы услышать о них.Спасибо!

Править: решением является одна строка: xmodmap-e "код клавиши 115 = Pointer_Button2"
таким образом, теперь моя клавиша Home делает щелчок левой кнопкой, и ведите себя так же, как если бы я поразил щелчок мышью, и я могу удержать ключ в нажатом состоянии, и это выделяется (копируют) как ожидалось.

Я также отобразил свою клавишу End, чтобы быть щелчком средней кнопкой, таким образом, я могу использовать его для вставки: xmodmap-e "код клавиши 110 = Pointer_Button1"

6
задан 25 November 2014 в 21:32

2 ответа

Решение

xmodmap -e "keycode 115 = Pointer_Button2"

Теперь, моя клавиша Home делает щелчок левой кнопкой и ведет себя так же, как если бы я поразил щелчок мышью, и я могу удержать ключ в нажатом состоянии, и это выделяется (копирует) как ожидалось.

я также отобразил свою клавишу End, чтобы быть щелчком средней кнопкой, таким образом, я могу использовать его для вставки:

xmodmap -e "keycode 110 = Pointer_Button1"

Примечание, что необходимо иметь "mousekeys" (эмуляция мыши с помощью цифровой клавиатуры) включило для этого для работы. "mousekeys" может быть переключен путем нажатия Сдвига + NumLock или установлен явно путем выполнения:

dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable true
dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable false
2
ответ дан 23 November 2019 в 08:05

Большинство рабочих столов имеет некоторые настройки доступности, которые будут управлять мышью с клавиатурой, уже встроенной, как XFCE имеет их в, он - Все Настройки-> Доступность-> Мышь-> Эмуляция Мыши, которая использует цифровую клавиатуру клавиатуры, таким образом, 5 ключей делают точно, что Вы пытаетесь сделать.

, Если я вспоминаю, у гнома, корицы и помощника есть подобные функции под чем-то как "Доступность" или вспомогательная технология, и т.д. Или устанавливаемая программа/пакет как mousetweaks ("улучшения доступности мыши для рабочего стола GNOME") или keynav (но я не мог заставить его работать над xfce).

Или, если Ваша сенсорная панель все еще работает хорошо (просто не кнопки) Вы могли бы просто сделать касание для одиночного нажатия, касание & тогда держите для щелчка & перетащите, двойное касание = двойной щелчок... и если они не работают должна быть строка или два в терминале, который должен добраться, те для работы (не помните их бесцеремонно теперь). Я не хотел бы писать свой собственный сценарий, когда существует несколько других опций, которые должны работать

1
ответ дан 23 November 2019 в 08:05

Другие вопросы по тегам:

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