6

На окнах у меня есть скрипт autohotkey, который:

  • Работает только когда включена блокировка
  • Генерирует события левой, средней и правой кнопок мыши при нажатии левой клавиши управления, меню и клавиш Alt.
  • Позволяет удерживать клавиши (для перетаскивания объектов)

Есть ли простой способ дублировать эту функциональность в Linux?

3 ответа3

2

X имеет встроенный механизм управления курсором мыши с помощью клавиатуры. Нажмите клавишу Pointer_EnableKeys чтобы активировать этот режим (режим клавиш мыши); обычно это связано с Shift+NumLock.

В режиме клавиш мыши стрелки клавиатуры перемещают указатель, а другие клавиши клавиатуры эмулируют кнопки (/*- слева, по центру, справа соответственно; + - двойной щелчок левой кнопкой мыши, а 0 и . - нажатие и отпускание левой кнопки).

Смотрите клавиши мыши для получения дополнительной информации. Кстати, этот режим можно включить и в Windows .

0

Keymapping - щелчок мышью - средний щелчок Как сопоставить кнопки мыши с клавишами клавиатуры

Во-первых, отключите клавиатуру, управляющую мышью, чтобы xev мог захватить код клавиши. Затем введите команду:

$ xev

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

ButtonPress event, serial 37, synthetic NO, window 0x6200001,
    root 0x29d, subw 0x6200002, time 2427401, (31,41), root:(652,407),
    state 0x0, button 1, same_screen YES

Затем выясните, к какой клавише клавиатуры вы хотите привязать эту кнопку мыши: Нажмите клавишу клавиатуры и найдите код клавиши.

При нажатии клавиши пробела на моей клавиатуре терминал показывает:

KeyPress event, serial 37, synthetic NO, window 0x6200001,
    root 0x29d, subw 0x0, time 2152399, (398,60), root:(1019,426),
    state 0x0, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XmbLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

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

Тогда следующий шаг:

$ sudo apt-get install xkbset

Затем скопируйте скрипт ниже и сохраните его в файл с именем keymap_mouse2kb.sh

конечно, измените коды клавиатуры на те, которые вы хотите

#!/bin/bash
# set XKB layout
setxkbmap -layout us
# turn on mousekeys
xkbset m
# stop mousekeys expiring after a timeout
xkbset exp =m
# map keysym to other keysym
#xmodmap -e "keysym Menu = Pointer_Button2"
# this also works
 xmodmap -e "keycode 66 = Pointer_Button2"
 xmodmap -e "keycode 133 = Pointer_Button1"
 xmodmap -e "keycode 88 = Pointer_Button3"

Затем сделайте этот файл исполняемым

$ sudo chmod u+x keymap_mouse2kb.sh

Затем запустите его, когда вам это нужно ... например, при загрузке

$ ./keymap_mouse2kb.sh
0

Вы могли бы, вероятно, сделать то же самое с Tcl («щекотать»).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .