1 #ifndef DEVICES_KEYMAP_H 2 #define DEVICES_KEYMAP_H 3 4 /* 5 keymap.library/resource include 6 7 Copyright © 2002-2007 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_NODES_H 11 # include <exec/nodes.h> 12 #endif 13 14 #ifndef EXEC_LISTS_H 15 # include <exec/lists.h> 16 #endif 17 18 #ifndef EXEC_RESIDENT_H 19 #include <exec/resident.h> 20 #endif 21 22 #ifndef DOS_DOS_H 23 #include <dos/dos.h> 24 #endif 25 26 #pragma pack(2) 27 28 29 struct KeyMap 30 { 31 UBYTE *km_LoKeyMapTypes; 32 ULONG *km_LoKeyMap; 33 UBYTE *km_LoCapsable; 34 UBYTE *km_LoRepeatable; 35 UBYTE *km_HiKeyMapTypes; 36 ULONG *km_HiKeyMap; 37 UBYTE *km_HiCapsable; 38 UBYTE *km_HiRepeatable; 39 }; 40 41 struct KeyMapNode 42 { 43 struct Node kn_Node; 44 struct KeyMap kn_KeyMap; 45 }; 46 47 #pragma pack(4) 48 49 struct ExtendedKeyMapNode 50 { 51 struct Node ekn_Node; 52 struct KeyMap ekn_KeyMap; 53 BPTR ekn_Seglist; 54 struct Resident *ekn_Resident; 55 APTR ekn_Future0; /* keep 0 for now */ 56 }; 57 58 #pragma pack(2) 59 60 struct KeyMapResource 61 { 62 struct Node kr_Node; 63 struct List kr_List; 64 }; 65 66 67 /* Keymap types */ 68 69 #define KC_NOQUAL 0 70 #define KC_VANILLA 7 71 72 #define KCB_SHIFT 0 73 #define KCF_SHIFT (1<<KCB_SHIFT) 74 #define KCB_ALT 1 75 #define KCF_ALT (1<<KCB_ALT) 76 #define KCB_CONTROL 2 77 #define KCF_CONTROL (1<<KCB_CONTROL) 78 #define KCB_DOWNUP 3 79 #define KCF_DOWNUP (1<<KCB_DOWNUP) 80 81 #define KCB_DEAD 5 82 #define KCF_DEAD (1<<KCB_DEAD) 83 84 #define KCB_STRING 6 85 #define KCF_STRING (1<<KCB_STRING) 86 87 #define KCB_NOP 7 88 #define KCF_NOP (1<<KCB_NOP) 89 90 91 /* Dead prefix-bytes */ 92 93 #define DPB_MOD 0 94 #define DPF_MOD (1<<DPB_MOD) 95 #define DPB_DEAD 3 96 #define DPF_DEAD (1<<DPB_DEAD) 97 98 99 #define DP_2DINDEXMASK 0x0f 100 #define DP_2DFACSHIFT 4 101 102 103 #pragma pack() 104 105 struct UCS4_ConvTable 106 { 107 UWORD FirstChar; 108 UWORD LastChar; 109 CONST_APTR ConvTable; /* Either pointer to UBYTE or ULONG */ 110 }; 111 112 struct UCS4_CharsetCode 113 { 114 ULONG UCS4; 115 ULONG CharsetCode; 116 }; 117 118 struct UCS4_CharsetConvTable 119 { 120 CONST struct UCS4_CharsetCode *Mapping; /* An optional array, terminated with { 0, 0 } entry */ 121 #if __STDC_VERSION__ >= 199901L 122 struct UCS4_ConvTable ConvTables[]; 123 #elif defined(__GNUC__) 124 struct UCS4_ConvTable ConvTables[0]; 125 #else 126 # error Compiler does not support zero-length arrays. 127 #endif 128 }; 129 130 #endif /* DEVICES_KEYMAP_H */