Difference left/right super button

When I press my left Super key the gnome shell appears and when I press the right Super key it does not. Moreover pressing right Super + T does open a terminal at once, but when using left super I have to press the T twice, when I press the T only once it is similar to just pressing the T without holding Super left. This last point also occurs with other shortcuts that I defined (like Super+L, Super+E), but not with Super+Up/Down/Left/Right.

What I want is to press either Super key to get the gnome shell and to use either Super key in combination with T to open a terminal immediately (and similar with other shortcuts). I use Ubuntu 12.04 LTS and the gnome 3 shell.


Solution 1:

xmodmap solution

I think you can do this using xmodmap, a tool to modify keymaps. Since my keyboard does not have a right Super key I cannot confirm this solution, so please leave a comment if it doesn't work.
All steps are done in a terminal

Print the current modifier map
Run

xmodmap

This should print the current modifier map which should like something like this

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

The important line is the mod4 line, this line shows which key codes are mapped to the Super_L and Super_R key symbols.

Backup the key map
Before we change anything it is a good idea to backup the current key map, we can do this with

xmodmap -pke > ~/.xmodmap.orig

Now if anything goes wrong you can simply type

xmodmap ~/.xmodmap.orig

to restore your original key map. (If you made some serious mistakes and you cannot properly type anymore, a reboot also works)

Check current key map for the Super keys
Assuming that the Super keys have consecutive key codes (0x85 and 0x86 in this case) we can check the current mapping by running

xmodmap -pke | grep -wA1 $((0x85))

were of course you should change the 0x85 by the key code you have from your modifier map. This should give you

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

( the $((0x85)) converts the hexadecimal number to decimal)

Copy the behavior of the left Super to the right Super
As you can see from the previous step the right Super key has key code 134 but we want it to have the behaviour of the left Super key which has keycode 133. We can do this by remapping the key using

xmodmap -e "keycode 134 = Super_L NoSymbol Super_L"

Checking if it works
If you now do

xmodmap -pke | grep -wA1 $((0x85))

you should see

keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_L NoSymbol Super_L

meaning that both keys now have the same behavior. Also the modifier map should have changed on the line with mod4, we can check this by running

xmodmap | grep 'mod4'

which should give

mod4        Super_L (0x85),  Super_L (0x86),  Super_L (0xce),  Hyper_L (0xcf)

And of course the shortcuts which you mentioned should work too!

Make mapping persistent
If it works, you can make sure that these settings are automatically applied when you boot. Run

echo 'keycode 134 = Super_L NoSymbol Super_L' >> ~/.xmodmaprc

to store your custom key mapping in the file ~/.xmodmaprc. Run

echo 'xmodmap ~/.xmodmaprc' >> ~/.xsessionrc

to make sure the custom key map is executed when your window manager loads.