Annotation of 43BSD/contrib/X/doc/Xlib/ch12d.t, revision 1.1.1.1

1.1       root        1: .NH 2
                      2: Keyboard Operations
                      3: .PP
                      4: X does not predefine the keyboard to be ascii characters.
                      5: It is often useful to know that the ``a'' key just went down,
                      6: or possibly that it just went back up.
                      7: Client programs are sent keyboard events,
                      8: which contain a ``keycode''
                      9: which assigns a number to each physical key on the
                     10: keyboard.
                     11: (For historical reasons, the keycodes are a superset of the DEC LK201 keyboard
                     12: keycodes.)
                     13: Client programs which want to deal with
                     14: ascii text will then have to convert the keycode into ascii
                     15: explicitly.
                     16: The transformation of keycode to ascii is arbitrary,
                     17: and facilities are provided to aid people in customizing the keyboard
                     18: layout to whatever they want.
                     19: Remember that keyboards often differ dramatically,
                     20: so writing code that presumes the existance of a particular key
                     21: not on the main part of the keyboard is fraught with portability
                     22: problems.
                     23: It may also be difficult to get key up events on certain X implementations
                     24: due to hardware or software restrictions.
                     25: .PP
                     26: Keyboard events are normally sent to the smallest enclosing window
                     27: which is interested in that type of event underneath the
                     28: mouse's position.
                     29: It is also possible to assign the keyboard `input focus' to a specific
                     30: window.
                     31: When the input focus is attached to a window,
                     32: keyboard events will go to  the client which has selected
                     33: input on that window rather than the window under the mouse.
                     34: .PP
                     35: WARNING:
                     36: Some implementations cannot support up events.
                     37: You should think seriously before designing software that takes
                     38: advantage of up events if you are concerned about wide portability,
                     39: though there are some applications that can exploit up events
                     40: to provide superior user interfaces.
                     41: You should also be VERY careful when selecting which keys may be used
                     42: in such applications.
                     43: It may be impossible
                     44: to guarantee the existance of a set of keys on all keyboard with the probable
                     45: exception of a-z, spacebar, and carriage return.
                     46: .FD
                     47: .IN "XFocusKeyboard"
                     48: .IN "Definitions" "XFocusKeyboard"
                     49: XFocusKeyboard (w)
                     50:        Window w;
                     51: .FN
                     52: .IN "Input Focus"
                     53: \fIXFocusKeyboard\fP designates a window as the `input focus' window.  If
                     54: the window that would normally receive a \fIKeyPressed\fP or \fIKeyReleased\fP
                     55: event is not the focus window or one of its descendents, the event will
                     56: be sent to the focus window instead.  
                     57: The events will go to whatever
                     58: client has selected input on the focus window;  in general, this may be
                     59: .IN "XFocusKeyboard"
                     60: a client other than the one which has called \fIXFocusKeyboard\fP.  For
                     61: instance, a window manager may allow the user to designate an arbitrary
                     62: window as the keyboard focus.
                     63: .LP
                     64: The root window is the default focus window.
                     65: If the focus window is
                     66: closed, the closest existing ancestor inherits the input focus.
                     67: .FD
                     68: .IN "Definitions" "XLookupMapping"
                     69: .IN "XLookupMapping"
                     70: .IN "Keycode to Ascii Conversion"
                     71: .IN "Keyboard" "Customization"
                     72: char *XLookupMapping(event, nbytes)
                     73:        XKeyPressedEvent *event;
                     74:        int *nbytes;
                     75: .FN
                     76: .PP
                     77: This function is very useful for mapping down events to counted
                     78: character strings (an array of characters and the length; the null
                     79: character is legitimate in this use.)
                     80: It returns a pointer to a static counted character string which must not be
                     81: touched by a client, and the number of bytes in the string.
                     82: .PP
                     83: This mapping is normally stored in the user's home directory in the
                     84: .IN "File" "$HOME/.Xkeymap"
                     85: .IN "File" "/usr/lib/Xkeymap.txt"
                     86: file ".Xkeymap".
                     87: If this file is not present, \fIXLookupMapping\fP
                     88: falls back to a built in table.
                     89: If no text is defined for that key, \fInbytes\fP will be zero.
                     90: The \fI~/.Xkeymap\fP file is produced by the \fIkeycomp(1)\fP program, 
                     91: which reads
                     92: a text file of keyboard mappings.  The file \fI/usr/lib/Xkeymap.txt\fP contains
                     93: a set of standard keyboard mappings.
                     94: The function performs normal interpretation of `shift' bits (meta, shift,
                     95: shift lock, control).
                     96: The user should strncpy the result if needed to his own storage if the
                     97: data must be modified.
                     98: .FD
                     99: .IN "Definitions" "XRebindCode"
                    100: .IN "XRebindCode"
                    101: .IN "Keyboard" "Customization"
                    102: XRebindCode(keycode, shiftbits, str, nbytes)
                    103:        unsigned int keycode;
                    104:        unsigned int shiftbits;
                    105:        char *str;
                    106:        int nbytes;
                    107: .FN
                    108: .PP
                    109: If you wish to rebind the keyboard, you can use this routine to change
                    110: (on a non-permanent basis) the binding of the keyboard.
                    111: Given a keycode,
                    112: the meta bits (or the \fIX*Masks\fP together to specify the bits
                    113: you wish to set), a string and the number of bytes in the string,
                    114: .IN "XLookupMapping"
                    115: subsequent calls to \fIXLookupMapping\fP will return the supplied string.
                    116: The string should be stored in static storage;
                    117: an automatic string may have been deallocated by the time it is needed.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.