Как переназначить контекстное меню на другой ключ в Linux?

19

Я только что купил ThinkPad Lenovo, и я так горжусь всем, что в нем. Он чувствует себя так же прочно, как ядро ​​Linux: P.

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

Я пробовал искать другие похожие вопросы, но нашел только вопросы и ответы о том, как добавить опции в контекстное меню Nautilus. Я хочу сопоставить физическую клавишу моей клавиатуры, чтобы открыть это меню. Прямо как раньше. Также кажется, что Dell пропускает эту клавишу в своей клавиатуре inspiron. Я не знаю, что происходит, потому что я использую клавиатуру больше, чем мышь.

Заранее спасибо.

Jhonnytunes
источник
3
Пожалуйста, установите xbindkeys с sudo apt-get install xbindkeys. Затем в терминале запустите xbindkeys -kи введите ключ, который вы хотите изменить. Можете ли вы добавить вывод к вашему вопросу?
Сет
"NoCommand" m: 0x50 + c: 46 Mod2 + Mod4 + l
Jhonnytunes
Кому нужна клавиша Print Screen, где они ожидают клавишу Menu? Я серьезно удивляюсь, как пьяным тебе позволено появляться на работе в Lenovo. В любом случае, обратите внимание, что для начала вам не нужно .Xmodmapгенерировать by xmodmap -pke, вы также можете просто поместить свою привязку в пустой файл. Кроме того, посмотрите, что @Baha_hi узнало ниже.
Дж. Кацвинкель

Ответы:

13

Это немного сложно, но вы можете сделать это. Следуй этим шагам:

Определить код ключа

  1. Запустите, xevчтобы обнаружить код ключа:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. Нажмите клавишу, которую хотите перенастроить. Вывод в терминале покажет вам keycode(будьте осторожны, может иметь несколько).

Тестовое отображение

  1. Временно установите новое отображение, для меня это keycode 107:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

Если ключ ведет себя как положено, вы можете сохранить конфигурацию.

Сохраните ваш конфиг

  1. Сохраните вашу текущую таблицу $HOMEраскладок в свою , чтобы переопределить defau:

    xmodmap -pke > ~/.Xmodmap
    
  2. Создайте или отредактируйте, ~/.xinitrcчтобы загрузить вашу конфигурацию:

    $EDITOR ~/.xinitrc
    
  3. Добавьте следующие строки

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

наслаждаться

Большая часть информации выше взята из статьи ArchWiki .

Эд Виллегас
источник
Существует проблема. Когда я нажимаю кнопку, отмечается «l». Я проверил его на xev, и он дал мне 46-значный код, который присваивается букве L l. Может быть, он не имеет ключевой код взять один.
Jhonnytunes
@Jhonnytunes. Проверьте правильность раскладки клавиатуры. Вы можете изменить свою модель, набрав "sudo dpkg-reinfigure keyboard-configuration".
Эд Виллегас
Все тот же боец. Я пробовал разные модели ThinkPad и ничего.
Jhonnytunes
Кстати, мой ThinkPad является E530c и не появляется в списке клавиатуры.
Jhonnytunes
Если это ваша раскладка клавиатуры, возможно, клавиша рядом с «Удалить» на самом деле «Контекстное меню» (функция, которую вы ищете). В противном случае перенастройте другой ключ или обратитесь непосредственно к рабочему столу Lenovo, какой вариант выбрать.
Эд Виллегас
12

Я нашел здесь, что с помощью: shift+ F10открывает контекстное меню.

Я знаю, что это не лучшее решение, но я подумал, что это может помочь для временного использования!

PS: у меня тоже e530c, и я протестировал это на Debian 7 (Wheezy).

Bahax
источник
3

Я наконец-то нашел способ сделать это после часов испытаний и провалов: D

Прежде всего, установите xautomation:

sudo apt-get install xautomation

Затем перейдите на вкладку «Ярлыки» раздела «Клавиатура» в системных настройках Ubuntu. Сначала перейдите к записи «Снимки экрана» и переназначьте действия на другую клавишу или отключите их, если хотите. Я заменил клавишу PrtSc (Print) черной кнопкой Thinkpad (Launch1).

Теперь перейдите в раздел Custom Shortcuts и добавьте ярлык. Назовите его как хотите, например, Меню. В поле Command вставьте это:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

Работа сделана! Работает как чудо;)

Даниал Бехзади
источник
2

Это помогло мне. Для меня код клавиши «PrtSc» на моем ThinkPad 107. Я нашел это с помощью инструмента «xev» в Ubuntu.

xmodmap -e "keycode  107 = Menu"

Это временное изменение.

Вы можете сделать это постоянным, добавив эту команду в / etc / profile, и она будет выполняться при каждой загрузке, и это будет постоянное изменение.

Нулевой указатель
источник
1

Недавно я приобрел Lenovo E550, и у меня возникла та же проблема, я решил ее, используя xte(из xautomation) вместе с xmodmap.

Почему другие ответы не будут работать полностью?

  1. Ответ @Ed Villegas (ни @Null Pointer ) не будет работать, потому что некоторые клавиши, расположенные над числовой частью, сами по себе не являются уникальными ( например, клавиша блокировки связана с комбинацией Super+ L). Когда xevиспользуется , чтобы попытаться найти код ключа ключ замка он возвращает как Superи Lкоды клавиш, вы просто должны интерпретировать xevвыходной построчно.

  2. Для @Bahax и @John Finegan : Shift+ F10является клавишей контекстного меню, она не работает во всех приложениях и не предоставляет те же функции, что и Menu. Если вы выберете файл в проводнике и нажмете Menuконтекстное меню, чтобы сам файл появился во всплывающем окне , этого не произойдет с комбинацией Shift+ F10, вместо этого появится контекстное меню для окна.

  3. @Danial Behzadi использует схожий подход к людям из 2-го пункта, но, связав комбинацию клавиш с одной клавишей с помощью симулятора нажатия клавиш, он свяжет клавишу с Shift+ F10и даст тот же результат.

Ответ, который работает

Важно учитывать, что клавиша, которой нет на клавиатуре ThinkPad, - это Menu(то есть ее имя), она показана на следующем рисунке:

Клавиша меню

Хотя ключ отсутствует, его код должен существовать на вашем компьютере, его можно найти, распечатав таблицу кодов ключей, с помощью xmodmap -pke | grep Menuкоторой вы получите что-то вроде:

вывод xmodmap

Имея это в виду, установите xautomation(чтобы использовать xteдля симуляции нажатия клавиш), как в @Danial Behzadi :

sudo apt-get install xautomation

И создайте пользовательский ярлык, в Триггере нажмите клавишу, которую вы хотите использовать в качестве ярлыка, и Actionвставьте xte 'key Menu'. Подать заявку и проверить.

Hans
источник