This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: NT kernel keymap hack


>Does anybody know of an NT kernel hack that switches the caps-lock key
>with the control key (that lies under the shift key on most machines
>these days)?  I just can't adjust to the idea that the control key
>should be so inaccessible.  I'm an Emacs/bash bigot, and I like using
>the control key a lot.


sure, enjoy (author is unknown). on my system, i totally disabled CAPS LOCK,
so both
keys act like CONTROL key

my system (caps -> ctrl) has this setting:
00 00 00 00 - 00 00 00 00 - 02 00 00 00 - 1d 00 3a 00 - 00 00 00 00

=== cut ===
Add this value:
HKEY_LOCAL_MACHINE
  \System
    \CurrentControlSet
      \Control
        \KeyBoard Layout
          \Scancode Map

It's a binary value that lets you map keystrokes in the low-level keyboard
drivers in NT.  As a result you don't have to worry about applications
bypassing mappings that you've done at a higher level (i.e. it just works).


Here's the format of the value:
        DWORD:  0x00000000      header
        DWORD:  0x00000000      header
        DWORD:  length (in DWORDs) of remaining data, including terminating
DWORD
        DWORD:  mapping 1
        ...
        DWORD:  mapping n
        DWORD:  0x00000000      terminating null DWORD

Each mapping DWORD  has two parts: the input scancode, and an output
scancode.  To map scancode 0x1d (left control) to scancode 0x3a (caps
lock), you want a value of 0x003a001d.  Note that this does not swap the
keys.  Using just this mapping value, both the left control and the caps
lock key will behave as caps-lock.  To swap, you also need to map 0x3a to
0x1d, using 0x001d003a.  So, the complete registry value you'd use to swap
left-control and caps-lock is:

        00 00 00 00 00 00 00 00 03 00 00 00 1d 00 3a 00 3a 00 1d 00 00 00 00
00

This works on NT 4.0, I don't know about 3.51.  This registry value is
system wide, and can't be made user-specific.  It also only takes affect on
reboot.
=== cut ===



-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]