Fixing wrong Shift+Numpad (keypad) behaviour in Emacs

I struggled for a about an hour today with S-kp-home trying to bind it to something that would work properly in emacs (i.e select the text between cursor and start of line) before I figured out that although the problem manifested itself in Emacs, it is really due to the way Xwindows maps the Shift+Home/End… keys on some laptops.

Problem:

Pressing the Shift+Home key combo should select the text from cursor position to beginning of current line.

Instead what happens is the Shift modifier is applied to the keypad key (Home/7 in my particular case) as if it were a normal key which results in this key combo (Shift-Home) being translated into ‘7’ or ‘Home’ depending on whether the NumLock is ON or OFF.

Solution:

1.For Gnome Users:

Go to System -> Preferences -> Keyboard -> Layouts -> Options -> Miscellaneous. Select the “works as in MS Windows” check box:
linux-fix-shift-numpad-keypad-behaviour
 

2.For KDE users:

Same setting is available in “Misc Compatibility Options”.

3.Generic solution for all other environments (incl XFCE):

3.1. Find your xorg.conf file. Typical locations would be:

/etc/X11/xorg.conf
/etc/xorg.conf
/usr/X11R6/lib/X11/xorg.conf

If none if the above exists on your system then just create an empty xorg.conf file in one of these places and edit it.

NOTE: Newer systems use xorg.conf.d directory with dynamic files instead of a xorg.conf file. These are usually in:

/etc/X11/xorg.conf.d

Look for this file:

/etc/X11/xorg.conf.d/01-keyboard-layout.conf

If none if the above exists on your system then just create an empty xorg.conf file in one of these places and edit it.

3.2. Add the following to the xorg.conf file:

Section "InputClass"  
  Option "XkbOptions" "numpad:microsoft" 
EndSection

– – – –
… by the way – to take a screenshot of the Gnome menu expanded you can use:

$ gnome-panel-screenshot --delay 5

This will delay the screenshot taking by 5 seconds which should give you enough time to navigate through the menus…

Leave a Reply

Your email address will not be published. Required fields are marked *