Я могу использовать сложные комбинации кнопки мыши с xbindkeys?

Я запускаю Ubuntu 16.04 и подключил мышь Logitech M705. Эта мышь имеет в общей сложности 10 кнопок, при этом кнопка 1 является щелчком левой кнопкой, щелчком правой кнопкой кнопки 2, кнопка 10 "кнопка ползунка".

Я настроил xbindkeys

# History Back & Forward
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L' "
  b:6 + Release
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L' "
  b:7 + Release

# page down
"xte 'key Next' "
  b:8

# page up
"xte 'key Prior' "
  b:9

# powerclick
"xte 'keydown Control_L' 'mouseclick 1' 'keyup Control_L' "

Это все работы очень хорошо. Что я называю powerclick используется для открытия ссылок в FF на новой вкладке.

Теперь, чего я хотел бы достигнуть: когда я нажимаю кнопку 10 THEN кнопки 1 ЗАТЕМ, я выбираю некоторый текст, и я отпускаю обе кнопки, текст должен быть скопирован в буфер обмена. Так добрый из quickedit режима для любого окна, как только текст выбран этот путь, он копируется.

# quickcopy
"xte 'keydown Control_L' 'key c' 'keyup Control_L' "
  b:10  + b:1 + Release

Но это не делает желаемого эффекта.

Существует ли способ отобразить такие сложные условия? Я могу вообразить это являющееся большого применения, полагая, что "кнопка ползунка" могла бы работать так же к клавише Ctrl на клавиатуре, т.е. изменить стандартное поведение по щелчку.

Позже я хотел бы сделать функцию Вставки для кнопки 10 (кнопка ползунка) + кнопка 2 (Правильная кнопка)

Спасибо

4
задан 3 October 2016 в 05:15

3 ответа

Выполнение xbindkeys -n -v в терминальные выводы:

1 keys in /home/whoever/.xbindkeysrc

min_keycode=8     max_keycode=255 (ie: know keycodes)
"xte 'keydown Control_L' 'key c' 'keyup Control_L' "
    Release + m:0x0 + b:1   (mouse)
starting loop...

, Как я думаю m:0x0, состояние мыши, кажется, что xbindkeys интерпретирует b:10 + b:1 + Release как просто b:1 + Release.

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

3
ответ дан 1 December 2019 в 09:32

Не возможно сделать обычно, но к счастью xbindkeys поддерживает язык сценариев, названный хитростью, которая позволяет Вам делать вещи как состояния/переменные набора, который позволяет Вам создавать кнопки то действие как модифицирующие клавиши.

я сделал поток об этом: https://www.linuxquestions.org/questions/linux-desktop-74 / % 5Bxbindkeys%5D-advanced-mouse-binds-4175428297 /

2
ответ дан 1 December 2019 в 09:32

Пример

реализация b:3 + b:1, щелкните правой кнопкой в сочетании с щелчком левой кнопкой, отправляют CTRL+F5 в этом примере... это требует, чтобы xbindkeys, которые будут созданы с поддержкой хитрости

, Создали этот дополнительный файл конфигурации /home/user/.xbindkeysrc.scm со следующим содержанием.

В основном это будет

  • прерывание сначала наблюдаемый ключ> затем
  • часы для второго ключа
    • случай key1 + key2, это отправляет свою команду
    • иначе, это отправляет команду за первым ключом
    • xbindkeys перезапуска (для запуска в очевидном способе)
;;   This configuration is guile based.
;;   http://www.gnu.org/software/guile/guile.html


;; Right Click
(define (first-binding)
    "First binding"                                  
    (xbindkey-function '("b:3") b3-second-binding)
)

(define (reset-first-binding)
    "reset first binding"
    (ungrab-all-keys)
    (remove-all-keys)
)

(define (b3-second-binding)
    "Button Extra Functions"
    (reset-first-binding)

    ;; First Key Down + Second Key = Action Ctrl+F5 And Release
    (xbindkey-function '("b:1")
        (lambda ()
            (reset-first-binding)
            (run-command "xte 'keydown Control_R' 'keydown F5' 'keyup F5' 'keyup Control_R'")
            (run-command "killall xbindkeys; xbindkeys")
        )
    )

    ;; First Key Up = Release
    (xbindkey-function '(release "b:3") 
        (lambda ()
            (reset-first-binding)
            (run-command "xte 'mouseclick 3'")
            (run-command "killall xbindkeys; xbindkeys")
        )
    )
)

(first-binding) 

Благодаря David Bobb

0
ответ дан 1 December 2019 в 09:32

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

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