Annotation of XNU/iokit/IOKit/hidsystem/IOHIKeyboardMapper.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: #ifndef _IOHIKEYBOARDMAPPER_H
        !            23: #define _IOHIKEYBOARDMAPPER_H
        !            24: 
        !            25: #include <IOKit/hidsystem/ev_keymap.h>
        !            26: 
        !            27: class IOHIKeyboard;
        !            28: 
        !            29: /*
        !            30:  * Key ip/down state is tracked in a bit list.  Bits are set
        !            31:  * for key-down, and cleared for key-up.  The bit vector and macros
        !            32:  * for it's manipulation are defined here.
        !            33:  */
        !            34: 
        !            35: typedef        UInt32 * kbdBitVector;
        !            36: 
        !            37: #define EVK_BITS_PER_UNIT      32
        !            38: #define EVK_BITS_MASK          31
        !            39: #define EVK_BITS_SHIFT         5       // 1<<5 == 32, for cheap divide
        !            40: 
        !            41: #define EVK_KEYDOWN(n, bits) \
        !            42:        (bits)[((n)>>EVK_BITS_SHIFT)] |= (1 << ((n) & EVK_BITS_MASK))
        !            43: 
        !            44: #define EVK_KEYUP(n, bits) \
        !            45:        (bits)[((n)>>EVK_BITS_SHIFT)] &= ~(1 << ((n) & EVK_BITS_MASK))
        !            46: 
        !            47: #define EVK_IS_KEYDOWN(n, bits) \
        !            48:        (((bits)[((n)>>EVK_BITS_SHIFT)] & (1 << ((n) & EVK_BITS_MASK))) != 0)
        !            49: 
        !            50: class IOHIKeyboardMapper : public OSObject
        !            51: {
        !            52:   OSDeclareDefaultStructors(IOHIKeyboardMapper);
        !            53: 
        !            54: private:
        !            55:   IOHIKeyboard *     _delegate;                 // KeyMap delegate
        !            56:   bool               _mappingShouldBeFreed;     // true if map can be IOFree'd
        !            57:   NXParsedKeyMapping _parsedMapping;            // current system-wide keymap
        !            58: 
        !            59: public:
        !            60:   static IOHIKeyboardMapper * keyboardMapper(
        !            61:                                         IOHIKeyboard * delegate,
        !            62:                                         const UInt8 *  mapping,
        !            63:                                         UInt32         mappingLength,
        !            64:                                         bool           mappingShouldBeFreed );
        !            65: 
        !            66:   virtual bool init(IOHIKeyboard * delegate,
        !            67:                     const UInt8 *  mapping,
        !            68:                     UInt32         mappingLength,
        !            69:                     bool           mappingShouldBeFreed);
        !            70:   virtual void free();
        !            71: 
        !            72:   virtual const UInt8 *   mapping();
        !            73:   virtual UInt32          mappingLength();
        !            74:   virtual bool                   serialize(OSSerialize *s) const;
        !            75: 
        !            76:   virtual void translateKeyCode(UInt8 key, bool keyDown, kbdBitVector keyBits);
        !            77: 
        !            78: private:
        !            79:   virtual bool parseKeyMapping(const UInt8 *        mapping,
        !            80:                                UInt32               mappingLength,
        !            81:                               NXParsedKeyMapping * parsedMapping) const;
        !            82: 
        !            83:   virtual void calcModBit(int bit, kbdBitVector keyBits);
        !            84:   virtual void doModCalc(int key, kbdBitVector keyBits);
        !            85:   virtual void doCharGen(int keyCode, bool down);
        !            86: };
        !            87: 
        !            88: #endif _IOHIKEYBOARDMAPPER_H
        !            89: 
        !            90: /*
        !            91:  * HISTORICAL NOTE:
        !            92:  *   The "delegate" object had to respond to the following protocol;
        !            93:  *   this protocol has since been merged into the IOHIKeyboard class.
        !            94:  *
        !            95:  * @protocol KeyMapDelegate
        !            96:  *
        !            97:  * - keyboardEvent     :(unsigned)eventType
        !            98:  *     flags   :(unsigned)flags
        !            99:  *     keyCode :(unsigned)keyCode
        !           100:  *     charCode:(unsigned)charCode
        !           101:  *     charSet :(unsigned)charSet
        !           102:  *     originalCharCode:(unsigned)origCharCode
        !           103:  *     originalCharSet:(unsigned)origCharSet;
        !           104:  * 
        !           105:  * - keyboardSpecialEvent:(unsigned)eventType
        !           106:  *     flags    :(unsigned)flags
        !           107:  *     keyCode :(unsigned)keyCode
        !           108:  *     specialty:(unsigned)flavor;
        !           109:  *
        !           110:  * - updateEventFlags:(unsigned)flags; // Does not generate events
        !           111:  *
        !           112:  * - (unsigned)eventFlags;             // Global event flags
        !           113:  * - (unsigned)deviceFlags;            // per-device event flags
        !           114:  * - setDeviceFlags:(unsigned)flags;   // Set device event flags
        !           115:  * - (bool)alphaLock;                  // current alpha-lock state
        !           116:  * - setAlphaLock:(bool)val;           // Set current alpha-lock state
        !           117:  * - (bool)charKeyActive;              // Is a character gen. key down?
        !           118:  * - setCharKeyActive:(bool)val;       // Note that a char gen key is down.
        !           119:  *
        !           120:  * @end
        !           121:  */

unix.superglobalmegacorp.com

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