diff options
Diffstat (limited to 'common/quicktime_win32/Keyboards.h')
| -rw-r--r-- | common/quicktime_win32/Keyboards.h | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/common/quicktime_win32/Keyboards.h b/common/quicktime_win32/Keyboards.h new file mode 100644 index 0000000..876deab --- /dev/null +++ b/common/quicktime_win32/Keyboards.h @@ -0,0 +1,563 @@ +/* + File: Keyboards.h + + Contains: Keyboard API. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1997-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __KEYBOARDS__ +#define __KEYBOARDS__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __CFBASE__ +#include <CFBase.h> +#endif + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +/*----------------------------------------------------------------------------------*/ +/* Keyboard API constants */ +/*----------------------------------------------------------------------------------*/ +/* Keyboard API Trap Number. Should be moved to Traps.i */ +enum { + _KeyboardDispatch = 0xAA7A +}; + +/* Gestalt selector and values for the Keyboard API */ +enum { + gestaltKeyboardsAttr = FOUR_CHAR_CODE('kbds'), + gestaltKBPS2Keyboards = 1, + gestaltKBPS2SetIDToAny = 2, + gestaltKBPS2SetTranslationTable = 4 +}; + +/* Keyboard API Error Codes */ +/* + I stole the range blow from the empty space in the Allocation project but should + be updated to the officially registered range. +*/ +enum { + errKBPS2KeyboardNotAvailable = -30850, + errKBIlligalParameters = -30851, + errKBFailSettingID = -30852, + errKBFailSettingTranslationTable = -30853, + errKBFailWritePreference = -30854 +}; + + +/* + * PhysicalKeyboardLayoutType + * + * Summary: + * Physical keyboard layout types indicate the physical keyboard + * layout. They are returned by the KBGetLayoutType API. + */ +typedef UInt32 PhysicalKeyboardLayoutType; +enum { + + /* + * A JIS keyboard layout type. + */ + kKeyboardJIS = FOUR_CHAR_CODE('JIS '), + + /* + * An ANSI keyboard layout type. + */ + kKeyboardANSI = FOUR_CHAR_CODE('ANSI'), + + /* + * An ISO keyboard layout type. + */ + kKeyboardISO = FOUR_CHAR_CODE('ISO '), + + /* + * An unknown physical keyboard layout type. + */ + kKeyboardUnknown = kUnknownType /* '????'*/ +}; + + +/*----------------------------------------------------------------------------------*/ +/* Keyboard API types */ +/*----------------------------------------------------------------------------------*/ + + + +/*----------------------------------------------------------------------------------*/ +/* Keyboard API routines */ +/*----------------------------------------------------------------------------------*/ + +#if CALL_NOT_IN_CARBON +/* + * KBInitialize() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBInitialize(void) THREEWORDINLINE(0x303C, 0x0000, 0xAA7A); + + +/* + * KBSetupPS2Keyboard() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBSetupPS2Keyboard( + SInt16 keyboardType, + SInt8 * alternativeTable) THREEWORDINLINE(0x303C, 0x0001, 0xAA7A); + + +/* + * KBGetPS2KeyboardID() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBGetPS2KeyboardID(SInt16 * keyboardType) THREEWORDINLINE(0x303C, 0x0002, 0xAA7A); + + +/* + * KBIsPS2KeyboardConnected() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( Boolean ) +KBIsPS2KeyboardConnected(void) THREEWORDINLINE(0x303C, 0x0003, 0xAA7A); + + +/* + * KBIsPS2KeyboardEnabled() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( Boolean ) +KBIsPS2KeyboardEnabled(void) THREEWORDINLINE(0x303C, 0x0004, 0xAA7A); + + +/* + * KBGetPS2KeyboardAttributes() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( SInt32 ) +KBGetPS2KeyboardAttributes(void) THREEWORDINLINE(0x303C, 0x0005, 0xAA7A); + + +/* + * KBSetKCAPForPS2Keyboard() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBSetKCAPForPS2Keyboard(Handle kcapHandle) THREEWORDINLINE(0x303C, 0x0006, 0xAA7A); + + +/* + * KBSetupPS2KeyboardFromLayoutType() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBSetupPS2KeyboardFromLayoutType(OSType layoutType) THREEWORDINLINE(0x303C, 0x0008, 0xAA7A); + + +/* + * KBGetPS2KeyboardLayoutType() + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API( OSErr ) +KBGetPS2KeyboardLayoutType(OSType * layoutType) THREEWORDINLINE(0x303C, 0x0009, 0xAA7A); + + +#endif /* CALL_NOT_IN_CARBON */ + +/* + * KBGetLayoutType() + * + * Summary: + * Returns the physical keyboard layout type. + * + * Parameters: + * + * iKeyboardType: + * The keyboard type ID. LMGetKbdType(). + * + * Availability: + * Non-Carbon CFM: in KeyboardsLib 1.0 and later + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSType ) +KBGetLayoutType(SInt16 iKeyboardType) THREEWORDINLINE(0x303C, 0x0007, 0xAA7A); + + + +/* + * KeyboardLayoutRef + * + * Summary: + * The opaque keyboard layout contains information about a keyboard + * layout. It is used with the keyboard layout APIs. + * + * Discussion: + * KeyboardLayoutRef APIs follow CoreFoundation function naming + * convention. You mustn't release any references you get from APIs + * named "Get." + */ +typedef struct OpaqueKeyboardLayoutRef* KeyboardLayoutRef; + +/* + * KeyboardLayoutPropertyTag + * + * Summary: + * Keyboard layout property tags specify the value you want to + * retrieve. They are used with the KLGetKeyboardLayoutProperty API. + */ +typedef UInt32 KeyboardLayoutPropertyTag; +enum { + + /* + * The keyboard layout data (const void *). It is used with the + * KeyTranslate API. + */ + kKLKCHRData = 0, + + /* + * The keyboard layout data (const void *). It is used with the + * UCKeyTranslate API. + */ + kKLuchrData = 1, + + /* + * The keyboard layout identifier (SInt32). + */ + kKLIdentifier = 2, + + /* + * The keyboard layout icon (IconRef). + */ + kKLIcon = 3, + + /* + * The localized keyboard layout name (CFStringRef). + */ + kKLLocalizedName = 4, + + /* + * The keyboard layout name (CFStringRef). + */ + kKLName = 5, + + /* + * The keyboard layout group identifier (SInt32). + */ + kKLGroupIdentifier = 6, + + /* + * The keyboard layout kind (SInt32). + */ + kKLKind = 7 +}; + + +/* + * KeyboardLayoutKind + * + * Summary: + * Keyboard layout kinds indicate available keyboard layout formats. + */ +typedef SInt32 KeyboardLayoutKind; +enum { + + /* + * Both KCHR and uchr formats are available. + */ + kKLKCHRuchrKind = 0, + + /* + * Only KCHR format is avaiable. + */ + kKLKCHRKind = 1, + + /* + * Only uchr format is available. + */ + kKLuchrKind = 2 +}; + + +/* + * KeyboardLayoutIdentifier + * + * Summary: + * Keyboard layout identifiers specify particular keyboard layouts. + */ +typedef SInt32 KeyboardLayoutIdentifier; +enum { + kKLUSKeyboard = 0 +}; + +/* iterate keyboard layouts*/ + +/* + * KLGetKeyboardLayoutCount() + * + * Summary: + * Returns the number of keyboard layouts. + * + * Parameters: + * + * oCount: + * On exit, the number of keyboard layouts + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetKeyboardLayoutCount(CFIndex * oCount); + + +/* + * KLGetKeyboardLayoutAtIndex() + * + * Summary: + * Retrieves the keyboard layout at the given index. + * + * Parameters: + * + * iIndex: + * The index of the keyboard layout to retrieve. If the index is + * outside the index space of the keyboard layouts (0 to N-1 + * inclusive, where N is the count of the keyboard layouts), the + * behavior is undefined. + * + * oKeyboardLayout: + * On exit, the keyboard layout with the given index. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetKeyboardLayoutAtIndex( + CFIndex iIndex, + KeyboardLayoutRef * oKeyboardLayout); + + +/* NOTE: "Indexed" is a wrong name, please use "AtIndex"...*/ +/* + * KLGetIndexedKeyboardLayout() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetIndexedKeyboardLayout( + CFIndex iIndex, + KeyboardLayoutRef * oKeyboardLayout); + + +/* get keyboard layout info*/ + +/* + * KLGetKeyboardLayoutProperty() + * + * Summary: + * Retrives property value for the given keyboard layout and tag. + * + * Parameters: + * + * iKeyboardLayout: + * The keyboard layout to be queried. If this parameter is not a + * valid KeyboardLayoutRef, the behavior is undefined. + * + * iPropertyTag: + * The property tag. + * + * oValue: + * On exit, the property value for the given keyboard layout and + * tag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetKeyboardLayoutProperty( + KeyboardLayoutRef iKeyboardLayout, + KeyboardLayoutPropertyTag iPropertyTag, + const void ** oValue); + + +/* get keyboard layout with identifier or name*/ + +/* + * KLGetKeyboardLayoutWithIdentifier() + * + * Summary: + * Retrieves the keyboard layout with the given identifier. + * + * Discussion: + * For now, the identifier is in the range of SInt16 which is + * compatible with the Resource Manager resource ID. However, it + * will become an arbitrary SInt32 value at some point, so do not + * assume it is in SInt16 range or falls into the "script range" of + * the resource IDs. + * + * Parameters: + * + * iIdentifier: + * The keyboard layout identifier. + * + * oKeyboardLayout: + * On exit, the keyboard layout with the given identifier. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetKeyboardLayoutWithIdentifier( + SInt32 iIdentifier, + KeyboardLayoutRef * oKeyboardLayout); + + +/* + * KLGetKeyboardLayoutWithName() + * + * Summary: + * Retrieves the keyboard layout with the given name. + * + * Parameters: + * + * iName: + * The keyboard layout name. + * + * oKeyboardLayout: + * On exit, the keyboard layout with the given name. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetKeyboardLayoutWithName( + CFStringRef iName, + KeyboardLayoutRef * oKeyboardLayout); + + +/* get/set current keyboard layout of the current group identifier*/ + +/* + * KLGetCurrentKeyboardLayout() + * + * Summary: + * Retrieves the current keyboard layout. + * + * Parameters: + * + * oKeyboardLayout: + * On exit, the current keyboard layout. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLGetCurrentKeyboardLayout(KeyboardLayoutRef * oKeyboardLayout); + + +/* + * KLSetCurrentKeyboardLayout() + * + * Summary: + * Sets the current keyboard layout. + * + * Parameters: + * + * iKeyboardLayout: + * The keyboard layout. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +KLSetCurrentKeyboardLayout(KeyboardLayoutRef iKeyboardLayout); + + + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __KEYBOARDS__ */ + |