Skip to content

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’:

bash
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)
mod3
mod4
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.