I just purchased a Lenovo thinkpad and I am so proud of everything in it. It feels just as rock solid as the Linux kernel :P.
The problem is that Lenovo decided to remove the context menu key that is the key that does the right click stuff. They replaced it by a print screen key. My keyboard has its numeric part with some buttons above it. There is a magnifying glass key that I would like to remap to open the context menu or be the right click key. Is it possible to do this?
I've tried searching for other related questions but I only found Q&As on how to add options to the Nautilus context menu. I want to to map a physical key of my keyboard to open this menu. Just like before. It also appears that Dell is dropping this key in their inspiron keyboard. I dont know whats going on since I use the keyboard more than mouse.
Thanks in advance.
It's a little bit complicated but you can do it. Follow these steps:
Detect keycode
Run
xev
to detect the keycode:Press the key you want to reconfigure. The output in the terminal will show you the
keycode
(be careful, might have several).Test mapping
Set new mapping temporarily, for me it's
keycode 107
:If the key behave as expected, you can save the config.
Save your config
Save your current keymap table to your
$HOME
, to override the defau:Create or edit
~/.xinitrc
to load your configuration:Add following lines
Enjoy
Most of the information above comes from ArchWiki article.
I found here that using: shift+F10 opens the context menu.
I know it's not the best solution but I thought it could help for temporary use!
P.S: I have e530c too, and I tested this on Debian 7 (Wheezy).
This did the trick for me. For me the keycode for "PrtSc" button on my thinkpad is 107. I found that by "xev" tool in ubuntu.
This is a temporary change.
You can make this permanent by adding this command to /etc/profile and it will execute everytime you boot and it will be a permanent change.
I recently acquired a Lenovo E550 and had the same problem, I solved it by using
xte
(fromxautomation
) along withxmodmap
.Why the other answers won't work entirely?
@Ed Villegas (nor @Null Pointer) answer won't work because some of the keys located above the numeric part are not unique keys by themself (e.g. the lock key is related to the Super+L combination). When
xev
is used to try to find the lock key keycode it returns both the Super and the L keycodes, you just have to interpret thexev
output line by line.For @Bahax and @John Finegan: Shift+F10 is a context menu key, it doesn't work in all the applications and it doesn't provide the same functions as Menu. If you select a file in the file explorer and press Menu the context menu for the file itself should pop-up, this does not happen with the Shift+F10 combination, it would provide a context menu for the window instead.
@Danial Behzadi takes a similar approach to the people in the 2nd item, but linking the keyboard combination to one key through a keystroke simulator, it will link the key to the Shift+F10 and provide the same result.
The answer that works
It is important to take into account that the key that is not present in the ThinkPad keyboard is the Menu (that is it's name), it is shown in the following picture:
Although the key is not present, it's keycode should exist in your computer, you can find it by printing the keycode table with
xmodmap -pke | grep Menu
which should give you something like:With that in mind, install
xautomation
(in order to usexte
for keystroke simulations) like in @Danial Behzadi answer:And create a custom shortcut, in the Trigger press the key that you want to be the shortcut, and in the
Action
pastexte 'key Menu'
. Apply and test.I finally found the way to do this after hours of tests and fails :D
First of all install xautomation:
Then head to the Shortcut tab of Keyboard section in Ubuntu System Settings. First go to Screenshots entry and remap the actions to another key or disable them if you want. I replaced PrtSc(Print) key by the Thinkpad black button (Launch1).
Now go to Custom Shortcuts section and add a shortcut. name it whatever you like, e.g. Menu. In Command field insert this:
The work is done! It's working like a miracle ;)
The following finally worked for me!
I'm have had the same problem with my Huawei Matebook 14 where the menu key is missing. Although I show how to map the menu operation to the right control (as I personally don't use it), this instruction works for any button.
The method works permanently.
Full guide (steps):
Know the key code you want to bind Menu command to. Execute :
then press your button and remember the code. E.g. I want my
Right control
to call the context menu. I press it, and get the code:105
.Modify the keycodes configuration file:
Note: you need to do this as a super user.
Optional but highly recommended! Make a backup of the configuration file:
Open the file to edit:
Find a line with the original mapping (in my case,
<RCTL> = 105;
), comment it and add the new mapping of the menu command to the desired key (in my case,<MENU> = 105;
)save and close the file.
Logout/login (reboot) and enjoy!
for gnome-shell, one just needs to edit this file: /usr/share/X11/xkb/symbols/pc. and then reboot.
Tested on ubuntu 20.10
Steps
Find menu key
$ xmodmap -pk | grep "Menu"
$ xdotool key Menu
$ xdotool key XF86MenuKB
Set the shortcut
xdotool key Menu
PS: install required packages if not already installed
My solution for the Gnome3 shell (on Ubuntu 20.04) using
xte
orxdotool
:In system settings -> keyboard shortcuts, I create a custom shortcut:
or:
That I assign to the
Print
key.Importantly, I have to include the command to release the key that triggers the command, (in this case the
Print
key).If I want to assign a combination like
Shift+Print
, the--clearmodifiers
option ofxdotool
does the same for any modifiers (Shift
,Ctrl
, etc.).Notes:
In the Unity shell (on Ubuntu 16.04), the keyup and modifiers part was not necessary, but in the Gnome3 shell (on Ubuntu 20.04), the shortcut will not work without it.
Unlike using
xmodmap
, this persists after suspend.Extension: Combination with xmodmap
I noticed that the xdotool command sometimes behaves in unexpected ways. E.g. while renaming a file in Nemo file manager, it will not show the context menu and cancel renaming.
So I followed @Ed Villegas' answer to create an
xmodmap
configuration that is run on startup. To reactivate the remapping after suspend, I changed my keyboard shortcut (still assigned to thePrint
key) to execute:In this way, the first use of the
Print
key after suspend will emulate the menu key using xdotool, while after that, it will be remapped to the menu key.