Annotation of qemu/roms/openbios/drivers/kbd.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * <kbd.h>
        !             3:  *
        !             4:  * Open Hack'Ware BIOS generic keyboard management definitions.
        !             5:  *
        !             6:  *  Copyright (c) 2005 Jocelyn Mayer
        !             7:  *
        !             8:  *   This program is free software; you can redistribute it and/or
        !             9:  *   modify it under the terms of the GNU General Public License V2
        !            10:  *   as published by the Free Software Foundation
        !            11:  *
        !            12:  *   This program is distributed in the hope that it will be useful,
        !            13:  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14:  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            15:  *   GNU General Public License for more details.
        !            16:  *
        !            17:  *   You should have received a copy of the GNU General Public License
        !            18:  *   along with this program; if not, write to the Free Software
        !            19:  *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
        !            20:  */
        !            21: 
        !            22: #if !defined (__OHW_KBD_H__)
        !            23: #define __OHW_KBD_H__
        !            24: typedef struct kbd_t kbd_t;
        !            25: typedef struct keymap_t keymap_t;
        !            26: struct kbd_t {
        !            27:     uint32_t mod_state;
        !            28:     /* Modifier state
        !            29:      *                0x00 kk ll rr
        !            30:      *                   |  |  |  |
        !            31:      * Not used for now -+  |  |  |
        !            32:      * Locks ---------------+  |  |
        !            33:      * Left modifiers ---------+  |
        !            34:      * Right modifiers -----------+
        !            35:      */
        !            36:     int nb_keys;
        !            37:     const keymap_t *keymap;
        !            38:     const char **sequences;
        !            39: };
        !            40: 
        !            41: /* Modifiers */
        !            42: typedef enum {
        !            43:     KBD_MOD_SHIFT   = 0x01,
        !            44:     KBD_MOD_CTRL    = 0x02,
        !            45:     KBD_MOD_ALT     = 0x04,
        !            46:     KBD_MOD_CMD     = 0x08,
        !            47:     KBD_MOD_OPT     = 0x10,
        !            48: } kbd_modifiers;
        !            49: 
        !            50: /* Locks */
        !            51: typedef enum {
        !            52:     KBD_LCK_CAPS    = 0x01,
        !            53:     KBD_LCK_NUM     = 0x02,
        !            54:     KBD_LCK_SCROLL  = 0x04,
        !            55: } kbd_locks;
        !            56: 
        !            57: /* Lock shifts */
        !            58: typedef enum {
        !            59:     KBD_SH_NONE     = -1,
        !            60:     KBD_SH_CAPS     = 0,
        !            61:     KBD_SH_NUML     = 1,
        !            62:     KBD_SH_SCRL     = 2,
        !            63: } kbd_lck_shifts;
        !            64: 
        !            65: enum {
        !            66:     KBD_TYPE_REGULAR  = 0 << 24,
        !            67:     KBD_TYPE_LMOD     = 1 << 24,
        !            68:     KBD_TYPE_RMOD     = 2 << 24,
        !            69:     KBD_TYPE_LOCK     = 3 << 24,
        !            70:     KBD_TYPE_SEQUENCE = 4 << 24,
        !            71: };
        !            72: 
        !            73: #define KBD_SEQUENCE(sequence) (KBD_TYPE_SEQUENCE | (sequence))
        !            74: 
        !            75: #define KBD_MOD_MAP(mod) \
        !            76: KBD_SH_NONE, { (mod), (mod), (mod), (mod), (mod), (mod), (mod), (mod), \
        !            77:                (mod), (mod), (mod), (mod), (mod), (mod), (mod), (mod), \
        !            78:                (mod), (mod), (mod), (mod), (mod), (mod), (mod), (mod), \
        !            79:                (mod), (mod), (mod), (mod), (mod), (mod), (mod), (mod), }
        !            80: #define KBD_MOD_MAP_LSHIFT KBD_MOD_MAP(KBD_TYPE_LMOD | KBD_MOD_SHIFT)
        !            81: #define KBD_MOD_MAP_RSHIFT KBD_MOD_MAP(KBD_TYPE_RMOD | (KBD_MOD_SHIFT << 8))
        !            82: #define KBD_MOD_MAP_LCTRL  KBD_MOD_MAP(KBD_TYPE_LMOD | KBD_MOD_CTRL)
        !            83: #define KBD_MOD_MAP_RCTRL  KBD_MOD_MAP(KBD_TYPE_RMOD | (KBD_MOD_CTRL << 8))
        !            84: #define KBD_MOD_MAP_LALT   KBD_MOD_MAP(KBD_TYPE_LMOD | KBD_MOD_ALT)
        !            85: #define KBD_MOD_MAP_RALT   KBD_MOD_MAP(KBD_TYPE_RMOD | (KBD_MOD_ALT << 8))
        !            86: #define KBD_MOD_MAP_LCMD   KBD_MOD_MAP(KBD_TYPE_LMOD | KBD_MOD_CMD)
        !            87: #define KBD_MOD_MAP_RCMD   KBD_MOD_MAP(KBD_TYPE_RMOD | (KBD_MOD_CMD << 8))
        !            88: #define KBD_MOD_MAP_LOPT   KBD_MOD_MAP(KBD_TYPE_LMOD | KBD_MOD_OPT)
        !            89: #define KBD_MOD_MAP_ROPT   KBD_MOD_MAP(KBD_TYPE_RMOD | (KBD_MOD_OPT << 8))
        !            90: #define KBD_MOD_MAP_CAPS   KBD_MOD_MAP(KBD_TYPE_LOCK | (KBD_LCK_CAPS << 16))
        !            91: #define KBD_MOD_MAP_NUML   KBD_MOD_MAP(KBD_TYPE_LOCK | (KBD_LCK_NUML << 16))
        !            92: #define KBD_MOD_MAP_SCROLL KBD_MOD_MAP(KBD_TYPE_LOCK | (KBD_LCK_SCRL << 16))
        !            93: #define KBD_MAP_NONE KBD_MOD_MAP(-1)
        !            94: 
        !            95: /* Keymap definition */
        !            96: struct keymap_t {
        !            97:     /* Set the lock which applies to this key (if any) */
        !            98:     int lck_shift;
        !            99:     /* Key translations */
        !           100:     uint32_t trans[32];
        !           101: };
        !           102: 
        !           103: void *kbd_new (int len);
        !           104: int kbd_set_keymap (kbd_t *kbd, int nb_keys, const keymap_t *keymap,
        !           105:                    const char **sequences);
        !           106: int kbd_translate_key (kbd_t *kbd, int keycode, int up_down, char *sequence);
        !           107: 
        !           108: #endif /* !defined (__OHW_KBD_H__) */

unix.superglobalmegacorp.com

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