Мышиные щелчки при отпускании кнопки

5

В Ubuntu 12.04 мышь нажимается, когда я отпускаю кнопку.

Что происходит (плохо) . Я нажимаю правой кнопкой мыши (mousedown), появляется контекстное меню, когда я отпускаю кнопку мыши (мышь), элемент под курсором щелкнут.

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

Я испытал это поведение в Chrome, в браузере файлов и в терминале gnome. Мышь - Razer DeathAdder (но я просто запускаю все драйверы, которые Ubuntu выбрал автоматически), и если это имеет значение, я использую графические драйверы AMD / ATI.

    
задан davidtbernal 21.08.2012 в 06:06
источник

3 ответа

2

Если вы не перемещаете мышь, между тем не должно быть никакого «пункта меню под курсором». Контекстное меню открывается таким образом, что его левый верхний угол находится под курсором, а ниже - к следующему пункту меню.

Однако, если на кнопке-кнопке мыши находится пункт меню под курсором, поведение required запускает этот пункт меню. Это обычно означает, что вы (или, по крайней мере, многие люди) обычно: нажмите кнопку мыши, переместите курсор на нужный пункт меню, нажав кнопку мыши, чтобы активировать этот элемент.

Если после нажатия кнопки мыши нет элемента меню под курсором, тогда поведение будет таким, как вы описали: mouse-button-release не уничтожает контекстное меню.

Так что, может быть, ваша мышь очень чувствительна, а событие с кнопкой вниз сопровождается движением курсора?

    
ответ дан January 21.08.2012 в 08:04
2

Вот мое исправление:

Сначала вам нужно скомпилировать и установить sxhkd, отсюда:

Ссылка

, который является действительно классной программой.

Затем в ~ ~ / .config / sxhkd / sxhkdrc добавьте этот рецепт:

~button3
  for id in 'xinput list | grep 'slave  pointer' | grep -v XTEST | sed -e 's/.*id=\([0-9]\+\).*//''; do xinput set-prop $id "Device Enabled" 0; done; \  
  xte 'mouseup 3' 'mousermove 0 -1'; \ 
  sleep 0.3; \
  for id in 'xinput list | grep 'slave  pointer' | grep -v XTEST | sed -e 's/.*id=\([0-9]\+\).*//''; do xinput set-prop $id "Device Enabled" 1; done

Как это работает, sxhkd захватывает событие правого клика с помощью своего xcb-прослушивателя и возвращает его обратно, вот для чего нужна тильда. После этого мы отключим сенсорную панель, переместите курсор мыши на один пиксель, чтобы первая запись не была подсвечена, спящий режим продолжительностью 300 мс, чтобы игнорировать перетаскивание пальца после щелчка, который выкидывает позицию, и повторно нажимать указательные устройства.

Это работает отлично на chromebook, который я настраиваю.

ОБНОВЛЕНИЕ: Я изменил рецепт sxhkd для работы с устройствами ввода указателей all , а не только с сенсорными панелями.

    
ответ дан Rafael Kitover 16.03.2014 в 14:38
1

Это поведение по умолчанию. Вы испытаете то же самое даже в Nautilus, который является менеджером по умолчанию. Собственно, вы будете испытывать это повсюду. Если вы щелкните правой кнопкой мыши где-нибудь, и вы увидите контекстное меню, и, не отпуская правый щелчок, вы наведете над действием контекстного меню, а затем отпустите его, соответствующее действие будет запущено.

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

    
ответ дан hakermania 21.08.2012 в 12:16