4.4 General Notes on Using NumLock for the PF1 Key on Unix Systems

Making the physical NumLock key available for use in the EDT Emulation requires some modification to the default X Window settings. Since the keycode assignments vary from system to system, some investigation is needed to see how to do this on a particular system.

You will need to look at the output generated by xmodmap invoked with the "-pm" switch. For example, on Red Hat GNU/Linux 5.2 on a PC, we get the following output when running ‘xmodmap -pm’:

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

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x6d)
mod1        Alt_L (0x40),  Alt_R (0x71)
mod2        Num_Lock (0x4d)
mod5        Scroll_Lock (0x4e)

Note that Num_Lock is assigned to the modifier ‘mod2’. This is what hides Num_Lock from being seen by Emacs.

Now, ‘xmodmap -pke’ yields:

keycode  77 = Num_Lock Pointer_EnableKeys
keycode  96 = F12

So, in Red Hat GNU/Linux 5.2 on a PC, Num_Lock generates keycode 77. The following steps are taken:

  1. clear the assignment of Num_Lock to mod2;
  2. swap the keycodes assigned to F12 and Num_Lock;
  3. assign Num_Lock back to mod2.

The .xmodmaprc file looks like this:

! File:  .xmodmaprc
! Set up PC keypad under GNU/Linux for the Emacs EDT Emulation
clear  mod2
keycode  77 = F12
keycode  96 = Num_Lock Pointer_EnableKeys
add mod2 = Num_Lock

So, after executing ‘xmodmap .xmodmaprc’, a press of the physical F12 key looks like a Num_Lock keypress to X. Also, a press of the physical NumLock key looks like a press of the F12 key to X.

Now, edt-mapper.el will see ‘f12’ when the physical NumLock key is pressed, allowing the NumLock key to be used as the EDT PF1 (GOLD) key.