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 */