Linux - Serial Keyboard Configuration

I'm looking to attach a 101-key serial keyboard (DB9 interface) to a computer running CentOS 5.3.  The keyboard requires a 1200 bps interface.  I've been able to attach the keyboard using the inputattach utility with the ps2serkbd driver, but this does not map all the keys correctly.  I've also tried connecting the keyboard using xorg.conf, but I have not found ways to specify the options I need (port and baud rate) to make this work.  I would prefer to connect the keyboard so that it can be used outside of the xserver as well, in any case.  Is there any way to map keys after connecting with inputattach or to use a different driver (none that are currently referenced work) with inputattach that will map the keys correctly from the start?  I would also appreciate any knowledge as to how the keyboard is actually dealt with in Linux.
Who is Participating?
colinvannConnect With a Mentor Commented:
Hi there,

There is a command called loadkeys that loads the keymap for your console.

After a bit of reading I have found that on bootup, this command is normally used in conjunction with the /etc/sysconfig/keyboard file to load the specified keymap into the kernel.

From Redhat documentation I have found the following:
4.1.20. /etc/sysconfig/keyboard

The /etc/sysconfig/keyboard file controls the behavior of the keyboard. The following values may be used:

    * KEYBOARDTYPE="sun|pc" where sun means a Sun keyboard is attached on /dev/kbd, or pc means a PS/2 keyboard connected to a PS/2 port.
    * KEYTABLE="<file>", where <file> is the name of a keytable file.

      For example: KEYTABLE="us". The files that can be used as keytables start in /lib/kbd/keymaps/i386 and branch into different keyboard layouts from there, all labeled <file>.kmap.gz. The first file found beneath /lib/kbd/keymaps/i386 that matches the KEYTABLE setting is used.

So this tells me that you can change the keyboard mapping that is used at boot-up by finding the correct mappings file under /lib/kbd/keymaps/i386

There may be a sticker on the bottom of the keyboard that tells you what keytables you need to use. Its probably not going to be called a keytable, more likely a 'type' or something similar. From this info you could probably find the correct mapping.

You can also build your own keymap files through a process of finding the code that each key on your keyboard send to the system (by using the showkey command - I have found the -a switch the most useful) and mapping it to the key that you pressed.
This is from the loadkeys man page:
For many countries and keyboard types appropriate keymaps are available
       already,  and  a  command like `loadkeys uk' might do what you want. On
       the other hand, it is easy to construct one's own keymap. The user  has
       to tell what symbols belong to each key. She can find the keycode for a
       key by  use  of      showkey(1),  while  the  keymap  format  is  given  in
       keymaps(5) and can also be seen from the output of dumpkeys(1).

To get the format of a key map file type
 man keymaps 5

Or check out any of the keymap files under /lib/kbd/keymaps/i386/

It will probably be easier to alter an existing keymap file that to create one from scratch.

Hope that helps,
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.