You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
563 lines
14 KiB
563 lines
14 KiB
/* |
|
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__ */ |
|
|
|
|