12

Я хочу сделать кнопку на клавиатуре, чтобы она действовала как щелчок мышью, предпочтительно используя xmodmap. Как мне это сделать?

Запуск Ubuntu 10.10.

3 ответа3

6

Следующие шаги помогут вам перенести ваши клавиши клавиатуры на кнопки мыши.

  1. Определите клавиатуру с помощью утилиты xev .

    Запуск утилиты xev и повторное нажатие клавиши клавиатуры выведет что-то вроде этого

    KeyPress event, serial 37, synthetic NO, window 0x3e00001,
    root 0x82, subw 0x0, time 28977858, (-419,294), root:(175,613),
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

    Обратите внимание на код ключа, который будет переназначен.

  2. Запустите утилиту xkbset

    xkbset m

  3. Переопределите с помощью утилиты xmodmap.

    В приведенном ниже случае кнопка меню переназначается на правую кнопку мыши.

    xmodmap -e "keycode 135 = Pointer_Button3"

3

Я полагаю, что вы могли бы сделать это, используя xmodmap и раскладку Pointer_Button1.

Посмотрите в файле /usr/include/X11/keysymdef.h точную орфографию и заглавные буквы, но должна быть возможность привязать клавиатуру к кнопке мыши (1,2,3 и т.д.), Даже двойной щелчок ( посмотрите заголовочный файл, около строки 460 или около того)

keysym W = Pointer_Button1

МОЖЕТ работать, в результате чего клавиша W действует как левая кнопка мыши. Я бы порекомендовал использовать другой ключ, если вы не используете W, но все, что вам подходит. (нет, я не собираюсь пробовать это сам, мне нужны мои W!)

Также посмотрите справочную страницу для xmodmap и, конечно же, содержимое /usr/include/X11/keysymdef.h, чтобы получить правильное написание. Удалите префикс XK_, чтобы использовать имена keysym для xmodmap.

Похоже, он (keysymdef.h) в пакете x11-proto-core-dev для моей системы Debian ... вы можете искать файл и его содержимое в Интернете, но сомневаетесь, что хотите установить все файлы -dev, просто получите это. GIYF.

Что-то щекотно в моей голове о другом способе сделать это, но ничего не приходит ко мне только сейчас.

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

2

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

(К вашему сведению: комбинация клавиш для включения этого была удалена из таблицы ключей по умолчанию некоторое время назад и теперь нуждается в Option XkbOptions "keypad:pointerkeys" .)

Нажатие на клавишу - не единственный способ включить этот режим:

xkbset m

делает это в соответствии с http://crunchbang.org/forums/viewtopic.php?id=27937 и может контролировать неприятное время ожидания, а также отключать его из командной строки. Чтобы отключить неприятный таймаут:

xkbset exp =m

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

Numpad используется. Некоторые основные комбинации (больше на http://en.linuxreviews.org/HOWTO_use_the_numeric_keyboard_keys_as_mouse_in_XOrg:

  • / , * , - для выбора левой, средней или правой кнопки;
  • 5 - для нажатия выбранной кнопкой;
  • 0 а . предназначены для нажатия и отпускания выбранной кнопки (для перетаскивания и т. д.)

Заметки о проблемах при включенной "Эмуляции мыши"

  1. Я не всегда мог включить "Эмуляцию клавиатуры". Поэтому для этого я использовал специальную клавишу (как в keypad:pointerkeys).

  2. Я обнаружил, что Xfce тоже при запуске запускал эти настройки, поэтому, если xkbset m запускается до Xfce, то настройка не активна. Поэтому мне пришлось изменить настройку в конфигурации Xfce, чтобы она соответствовала моему общему желанию, а именно: Настройки Xfce: Доступность: Мышь: включить эмуляцию. (Источник, о котором я узнал о существовании такой опции Xfce, был: https://bugzilla.xfce.org/show_bug.cgi?id=3860.) Это, похоже, помогло. (Я также отключаю сенсорную панель с помощью xinput float ... ; это запутано переключением между консолями Linux, но можно обойти его снова, отключив это устройство по крайней мере в настройках Xfce.)

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