Как эмулировать нажатие правой кнопки мыши на сенсорном экране?

9

Мой новый ноутбук с сенсорным экраном не имеет кнопки меню (то есть та, которая ведет себя как щелчок правой кнопкой мыши) - та, что обычно рядом с правой клавишей Ctrl.

так как вы не можете щелкнуть левой кнопкой мыши, я пытаюсь создать настраиваемое сочетание клавиш для Alt GR для этой функции (в меню «Система»> «Клавиатура»> «Сочетания клавиш»> «Сочетания клавиш»)

При использовании xevкоманды со встроенной клавиатурой (которая имеет кнопку меню), я обнаружил, что информация о кнопке:

KeyRelease event, serial 42, synthetic NO, window 0x4800001,
    root 0xab, subw 0x0, time 2544690, (1236,607), root:(1302,1050),
    state 0x0, keycode 135 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Тем не менее, я понятия не имею, что делать с этой информацией ...

Кстати, я использую Ubuntu 13.04.

Любая помощь будет наиболее ценной ...

Исмаил Могул
источник
У меня точно такая же проблема с моим
Aspire P3
@ user65390 ты пробовал ответить Фредди Шиллеру ...
Исмаил Могул
1
Вы должны отредактировать этот вопрос, чтобы убрать гиковость. Проще говоря, как щелкнуть правой кнопкой мыши на сенсорных экранах? Вопрос, на который теперь дан ответ, кажется слишком техническим, чтобы на самом деле соответствовать ответам
Bhikkhu Subhuti

Ответы:

12

Вам нужно включить вторичный клик (как прокомментировал AliNa) с помощью gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"или с помощью редактора dconf.

Тогда возможно, что Ubuntu обрабатывает сенсорный экран частично как тачпад, когда прикосновение не вызывает нажатия мыши. Вместо этого вам нужно нажать + коснуться и удерживать.

Фредди Шиллер
источник
К сожалению, этот метод ограничен средой рабочего стола на основе Gnome3, такой как стандартная Ubuntu. Длительное нажатие для правого щелчка также работает в Chrome / Chromium из коробки, но только потому, что оно выполняет свою собственную обработку сенсорных событий.
Танус
6

Просто продолжайте прикасаться к экрану в течение 2 или 3 секунд, и должно появиться так называемое «правильное меню». Это нормальный способ эмулировать щелчок правой кнопкой мыши на любом сенсорном экране.

Раду Рэдяну
источник
1
Возможно, вам следует сначала включить вторичный клик, просто с gsettings set org.gnome.desktop.a11y.mouse secondary-click-enabled "true"помощью или через Dconf Editor.
AliN
Я ввел вышеупомянутую команду в терминал, а затем даже перешел к универсальным настройкам и уменьшил задержку приема до мин. однако это по-прежнему не решает проблему - когда я использую мышь, меню появляется, но при использовании сенсорного экрана оно не работает ...
Ismail Moghul
1
@IsmailM Тогда, я думаю, что вы должны поговорить об этом с вашим продавцом / производителем ...
Раду Рэдяну
@ RaduRădeanu Я принес этот ноутбук от Джона Льюиса с Windows 8 на нем (и функция сенсорного экрана работает должным образом на Windows 8). Вы все еще думаете, что я должен с ними пообщаться, потому что я сам установил Ubuntu ...
Исмаил Могул
@ IsmailM Да, ты должен.
Раду Рэдяну
1

Если у вас есть сенсорный экран Wacom (с драйвером xf86-input-wacom) и он поддерживает мультитач двумя пальцами, то щелчок правой кнопкой мыши приведет к следующему:

  1. Нажмите и удерживайте первым пальцем.
  2. Теперь коснитесь вторым пальцем.

Если он еще не работает, узнайте название продукта вашего сенсорного экрана xinput --listи включите эту функцию с помощью:

xsetwacom --set "[your touchscreen product id]" Gesture on

Чтобы сделать это изменение постоянным, см. Мой другой ответ для техники.

В отличие от длинных нажатий правой кнопкой мыши в Gnome / Ubuntu Shell, это работает во всех средах рабочего стола, потому что это (устаревшая) функция уровня драйвера. Просто помните, что в некоторых программах это может вызвать проблемы с щелчком левой кнопкой мыши по сенсорному экрану , поэтому мне пришлось отключить его в моей системе.

tanius
источник
0

Для тех , кто имеет на клавишу Меню на их клавиатуре, нота в вопросе об использовании , что для создания правой кнопкой мыши на самом деле отличная идея. Поскольку это не очевидно, вот как это работает:

  1. Нажмите и удерживайте экран одним пальцем. Не отпускайте палец, так как это вызовет щелчок левой кнопкой мыши, что может привести к нежелательным последствиям в вашем приложении. Однако, нажатие и удержание аналогично нажатию и не отпусканию левой кнопки мыши, и обычно в приложении не происходит никаких действий. Но положение указателя мыши уже изменено на то, где мы хотим щелкнуть правой кнопкой мыши, именно поэтому мы делаем этот шаг.

  2. Нажмите и отпустите клавишу меню. Уже на событии нажатия клавиши срабатывает щелчок правой кнопкой мыши.

Очевидно, что эта техника требует двух рук, и это абсолютно невозможно на конвертируемых ноутбуках в режиме планшета. Так что он имеет ограниченное практическое использование.

tanius
источник
0

Из моих ответов на этот вопрос это мой личный фаворит.

Если у вас есть сенсорный экран, который поддерживает как минимум два пальца, вы можете установить toucheggи настроить его для интерпретации (например) касания двумя пальцами как щелчка правой кнопкой мыши. Я попробовал это под Lubuntu 18.10, и это работает.

1. Установка

touchegg доступно в репозиториях Ubuntu 18.10, поэтому вы можете установить его просто так:

sudo apt install touchegg

Чтобы начать, выполните touchegg. Выполняя его в терминале, вы можете по выходу проверить, правильно ли он распознает ваши мультитач-жесты.

Для toucheggавтоматического запуска каждого сеанса LXQt просто добавьте его в автозапуск (меню LXQt → «Настройки» → «Настройки LXQt» → «Настройки сеанса» → «Автозапуск»).

2. Способы настройки touchegg

Вы можете настроить toucheggдвумя альтернативными способами:

  • Конфигурация с помощью файла конфигурации. Отредактируйте файл ~/.config/touchegg/touchegg.conf. Чтобы изменения вступили в силу, выполните следующие действия в терминале или в диалоговом окне Alt+ F2run:

    killall touchegg; touchegg
    
  • Конфигурация с графическим интерфейсом. toucheggимеет приятный графический интерфейс настройки touchegg-gui, который можно увидеть здесь . Тем не менее, он не является частью toucheggпакета Ubuntu. Кроме того, вы можете установить графический интерфейс, touchegg-gce как описано здесь . touchegg-gceработает, но вы должны вручную перезапустить toucheggпосле сохранения изменений в его файле конфигурации, снова выполнив:

    killall touchegg; touchegg
    

3. Конфигурация для эмуляции щелчка правой кнопкой мыши

Чтобы настроить щелчок правой кнопкой мыши двумя пальцами, вы можете использовать этот файл конфигурации для ~/.config/touchegg/touchegg.conf:

<touchégg>
        <settings>
                <property name="composed_gestures_time">0</property>
        </settings>

        <application name="All">
                <gesture type="TAP" fingers="2" direction="">
                        <action type="MOUSE_CLICK">BUTTON=3</action>
                </gesture>
        </application>
</touchégg>

Комментарии к toucheggконфигурации:

  • Щелчок правой кнопкой мыши двумя пальцами, как показано выше, в настоящее время уже содержится в файле конфигурации по умолчанию, который входит в комплект поставки touchegg. (Ubuntu 18.10 здесь.)

  • Программа будет ждать composed_gestures_time(дается в миллисекундах), чтобы вы выполнили свои действия для жестов, состоящих из нескольких частей (например, двойных нажатий), и только затем интерпретировать их. Таким образом, при использовании toucheggтолько для жестов, состоящих из одной части, например щелчка правой кнопкой мыши двумя пальцами, мы можем установить его так, 0чтобы предотвратить любую заметную задержку в действиях. Это также значение по умолчанию в файле конфигурации, созданном touchegg.

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

  • Щелчок правой кнопкой будет срабатывать в том месте пальца (из двух в этом жесте), который первым касается экрана.

  • toucheggпозволяет интерпретировать все события, которые не были настроены для передачи до приложения под курсором. Это хорошо, потому что встроенный пинч-зум и т. Д., Реализованный, например, в Chromium, Chrome, Evince, работает намного плавнее, чем через touchegg.

  • toucheggможет использоваться вместе с (очень рекомендуется!) программным обеспечением для распознавания жестов одним касанием easystrokeбез помех. Конечно, они не должны быть настроены для запуска одинаковыми событиями.

4. Устранение неисправностей

  • toucheggможет перестать работать после цикла приостановки и возобновления. Мне все еще нужно найти способ, чтобы он автоматически перезагружался.

  • По крайней мере, для меня и других , toucheggбудет интерпретировать только сенсорные события на сенсорном экране, а не на сенсорной панели. В этом случае это желательно. Это может быть связано с тем, что моя сенсорная панель использует драйвер, который не отображает события мультитач на X-сервере ( synapticsа не libinput). Вы можете проверить, к каким устройствам toucheggпривязывается, запустив его с GEIS_DEBUG=3 touchegg.

  • Если toucheggдля всех программ возникает своего рода «застрявшая половина щелчка», при котором касания будут перемещать указатель мыши, но больше не будут вызывать щелчки левой кнопкой мыши: это не нормальное поведение. В Ubuntu 18.10 с LXQt у меня сначала этого не было, но потом было несколько перезапусков toucheggи даже перезагрузок всего компьютера. Он исчез после запуска рабочего стола Ubuntu по умолчанию, а затем вернулся в LXQt.

    Исправление в toucheggфайле конфигурации путем установки дополнительного жеста для касания одним пальцем исправит «застрявшую половину щелчка», но другие toucheggошибки, связанные с этой ошибкой, остаются, так что это не реальное исправление. Это неправильное поведение включает в себя то, что (1) toucheggтеперь будет также потребляться все события, для которых он не настроен, по крайней мере, для одного пальца, и (2) некоторые программы freemindна основе Java ( например) теперь будут страдать от обратной проблемы с «застрявшей половиной» щелчков ", где позиция курсора будет застревать, но щелчки левой кнопки мыши будут регистрироваться. Это временно исправляется с помощью действия двумя пальцами в Java-программе для toucheggраспознавания.

tanius
источник
0

Вы можете использовать easystrokeдля создания щелчков правой кнопкой мыши с модификатором плюс тап, например Ctrl+ Alt+ тап. С дополнительной конфигурацией, это может быть доступно в одиночку только с сенсорным экраном, см. Ниже.

Это очень хорошо, так как «модификатор плюс нажатие» в качестве щелчка правой кнопкой мыши не может быть сконфигурирован ни с одним из touchegg(не распознает модификаторы), mouseemu(не распознает касания, поскольку у них нет кодов сканирования) или xsetwacom "…" set Button 1 …(не распознает касания, поскольку ввод пальцем не событие кнопки в драйвере).

1. Установка

easystrokeПрограмма поддерживается только минимально, но в примечаниях к выпуску они ссылаются на недавний пакет Ubuntu, построенный на Ubuntu 18.04. Это хорошо сработало для меня (Ubuntu 18.10 здесь). Вы можете установить его следующим образом:

wget http://openartisthq.org/easystroke/easystroke_0.6.0-0ubuntu8_amd64.deb
sudo apt install ./easystroke_0.6.0-0ubuntu8_amd64.deb

2. Конфигурация

  1. Запустите программу с easystroke.

  2. На второй вкладке «Настройки» нажмите «Кнопка жестов» и Ctrl+ Alt+ нажмите в сером поле. Ctrl+ Altкажется лучшим выбором модификатора, по крайней мере, в LXQt, потому что:

    • И Shift+ щелчок, и Ctrl+ щелчок уже используются для множественного выбора и станут недоступными для этого, если они назначены easystroke.
    • Alt, SuperИ любая комбинация с участием Superне будет рассматриваться easystroke. Вероятно, это проблема конфигурации LXQt или Openbox, но я до сих пор не смог ее решить.
  3. Под первой вкладкой «Действия» нажмите «Добавить действие».

  4. Настройте свое действие с помощью «Тип: Команда» и «Детали: xdotool keyup ctrl alt; xdotool click 3». Адаптируйте в соответствии с выбранными вами модификаторами.

    В зависимости от модификаторов, очистка модификаторов в первую очередь важна для предотвращения побочных эффектов. Например, Shiftщелчок правой кнопкой мыши в Chrome приведет к выделению текста. Кроме того, явная очистка модификаторов необходима для предотвращения застревания модификаторов при запуске этих нажатий клавиш с помощью программного обеспечения (см. Раздел 3 ниже). Самостоятельная очистка модификаторов перед выполнением команды может считаться ошибкой easystroke.

  5. Нажмите «Записать ход» и запишите одно нажатие.

  6. Вы можете отключить (здесь довольно бесполезные) всплывающие окна в «Настройки → Внешний вид → Показать всплывающие окна».

  7. Вы можете ограничить это распознавание жестов только вашим сенсорным экраном и, возможно, пером устройства ввода в «Advanced → Devices».

Теперь Ctrl+ Alt+ коснитесь, чтобы создать щелчок правой кнопкой мыши.

Обратите внимание, что он easystrokeобладает отличным распознаванием жестов для жестов одним касанием («рисование фигур на экране»), которые можно использовать для автоматизации многих задач при использовании сенсорного экрана. Это его основная цель, в то время как эмуляция правой кнопкой мыши является лишь побочным эффектом.

3. Улучшение: только касание правой кнопкой мыши

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

Вот рецепт для Lubuntu (LXQt) и использования модификатора Ctrl+ Alt, выбранного выше, но принцип тот же во всех средах рабочего стола и со всеми модификаторами: настраиваемая запись быстрого запуска на панели.

  1. Создайте пользовательский значок для записи быстрого запуска и сохраните его как ~/.icons/default/rightclick.png.

  2. Создайте пользовательский .desktopфайл и сохраните его как .local/share/applications/rightclick.desktopсо следующим содержимым. Обратите внимание, что вы должны указать usernameабсолютный путь.

    [Desktop Entry]
    Name=Rightclick
    Comment=Next tap is a rightclick via Ctrl + Alt + easystroke gesture.
    Icon=/home/matthias/.icons/default/rightclick.png
    Exec=xdotool keydown ctrl alt
    Type=Application
    Categories=System;Utility;
    StartupWMClass=localdomain.rightclick
    
  3. Добавьте еще один виджет быстрого запуска на панель LXQt. Хотя в принципе вы также можете изменить свой существующий, я обнаружил, что тот, который находится в правом нижнем углу экрана, является наиболее естественным для работы правой рукой, а также случайные нажатия будут показывать только дату (если это то, что находится рядом с осталось, как в моем случае) вместо запуска какого-то большого приложения.

  4. Откройте ~/.config/lxqt/panel.confи настройте новый [quicklaunch2]раздел для ссылки на ваш пользовательский .desktopфайл. Опять же, вы должны поставить username. Пример, как это может выглядеть:

    [quicklaunch2]
    alignment=Left
    apps\1\desktop=/home/username/.local/share/applications/rightclick.desktop
    apps\size=1
    type=quicklaunch
    
  5. Перезапустите панель LXQt, чтобы изменения вступили в силу. Для этого:

    1. Перейдите в «Меню LXQt → Настройки → Настройки LXQt → Настройки сеанса».
    2. Выберите «Основные настройки → Модули LXQt → Панель».
    3. Нажмите «Стоп».
    4. Нажмите «Пуск».

     

    (Вы также можете выполнить killall lxqt-panel && lxqt-panelв диалоговом окне Alt+ F2запуск, но это будет мешать статусу панели, распознаваемой в вышеупомянутом диалоговом окне, и если вы смешаете оба метода, у вас будет две панели, работающие друг над другом, при этом на одной панели будет отсутствовать некоторая панель значки. Так что лучше не надо. Это все еще глючит.)

Кроме того, если у вас есть специальные аппаратные кнопки на боковой стороне сенсорного экрана, вы можете назначить xdotool keydown ctrl altкоманду для одной из них.

4. Другие улучшения и устранение неполадок

  • Хорошим побочным эффектом является то, что вышеописанная техника для щелчков правой кнопкой мыши также позволяет одним рукой получить доступ ко всем другим жестам, которые вы, возможно, настроили easystroke. Это довольно мощная функция для автоматизации использования сенсорного экрана.

  • При настройке других жестов easystrokeучитывайте следующую ошибку: easystrokeне очищает выбранные вами модификаторы перед выполнением настроенного действия. Все типы действий «Ключ» и «Текст» приводят к комбинации клавиш вместе с Ctrl+ Altв приведенном выше случае, что делает их непригодными для использования. В качестве обходного пути вместо этого выберите тип действия «Команда» и удалите модификаторы самостоятельно, как описано выше. Таким образом, чтобы вызвать Ctrl+ V, команда будет:

    xdotool keyup ctrl alt; xdotool key "ctrl+v"
    

    ( xdotoolОпция --clearmodifiersздесь не помогает, так как она отключает только модификаторы во время комбинации клавиш для выполнения и повторно применяет их впоследствии. Что в этом случае может привести к следующему нажатию правой кнопкой мыши, как описано выше, но мы бы не хотели что в этом случае.)

  • Если вы когда-либо застревали модификаторы во время тестирования, нажатие и отпускание клавиш-модификаторов на физической клавиатуре исправит это состояние.

  • Иногда во время тестирования этих вещей, мои LXQt мои события клавиатуры и мыши становились очень запутанными. В таком случае помог только выход из графической среды и повторный вход.

  • Самый простой способ реализовать операцию easystroke, выполняемую одним касанием, в том числе для случая щелчка правой кнопкой мыши, как это требуется здесь, состоит в том, что нажатие на easystrokeзначок панели переводит его в то же внутреннее состояние, что и значок пользовательской панели, настроенный выше, но без фактического изменения состояния модификатора клавиатуры, потому что это может привести к зависанию модификаторов и т. д. Чтобы показать easystrokeокно, нужно будет использовать контекстное меню значка его панели. Очевидно, что это требует некоторых изменений в easystrokeкоде.

tanius
источник