home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / utility / misc / ckbd_13 / doc / tech_doc / ckbd.h next >
Text File  |  1994-03-23  |  8KB  |  195 lines

  1. /************************************************************************/
  2. /*                                                                      */
  3. /*  CKBD.H: Composed Characters KeyBoard Driver                         */
  4. /*                                                                      */
  5. /*  Interface def's                                                     */
  6. /*                                                                      */
  7. /*                                                                      */
  8. /*  16-mar-1994, Pascal Fellerich                                       */
  9. /************************************************************************/
  10.  
  11.  
  12. /* Cookie - Kennung */
  13. #define CKBD  0x434B4244L
  14.  
  15. /* OpCodes: */
  16. #define IDENTIFY    0
  17. #define EXTKEY      1
  18. #define COMPOSE     2
  19. #define ALT_NNN     3
  20. #define CKEYTBL     4
  21. #define CBIOSKEYS   5
  22. #define DEADKEY     6
  23. #define MOUSE_CFG   7
  24.  
  25. /* 'mode' Übergabeparameter */
  26. #define INQUIRE     -1
  27. #define OFF         0
  28. #define ON          1
  29. #define SET         2
  30.  
  31. #define DEC_MODE        0   /* bitmapped stuff */
  32. #define MULTICHAR_MODE  2
  33. #define ORDER_SENSITIVE 4
  34.  
  35. #define KBD_MAP        1
  36. #define COMPOSE_MAP    2
  37.  
  38.  
  39. /*---------------------- typedefs: ----------------------------*/
  40.  
  41. /* cookie jar interface call */
  42. typedef long cdecl interface(int opcode, ...);
  43.  
  44. /* im Hauptprogramm folgenden Zeiger deklarieren und initialisieren */
  45. /* interface    *ckbd;    */
  46.  
  47. /* ein Compose-Tabelleneintrag */
  48. typedef struct {
  49.     char    primary,
  50.             secondary,
  51.             composed;
  52.     char    reserved;
  53. } Comptab_entry;
  54.  
  55. /* extended keytab */
  56. typedef struct {
  57.     char            *unshift;
  58.     char            *shift;
  59.     char            *caps;
  60.     Comptab_entry   *compose;
  61.     char            *name;
  62. } XKEYTAB;
  63.  
  64. /* Mouse speeder control struct */
  65. typedef struct {
  66.     struct {
  67.         unsigned resvd    :13;
  68.         unsigned lefthand :1;       /* Button map change!?        */
  69.         unsigned unused   :1;       /* old feature, removed...    */
  70.         unsigned activity :1;       /* Speeder ON/OFF             */
  71.     } switches;
  72.     short       polynomial[4];      /* speeder polynomial         */
  73.     short       rotation;           /* rotation in degrees        */
  74.     short       ratio;              /* X:Y ratio * 256!           */
  75.     short       mouse_rez;          /* M.resolution in dpi (100)  */
  76.     short       screen_rez;         /* screen rez in dpi   ( 72)  */
  77. } MSPEEDER_SETUP;
  78.  
  79.  
  80. /*----- Funktionsmakros für SETUP-Funktionen: */
  81. #define Identify()                  (char*)ckbd(IDENTIFY)
  82. #define Extkey(mode)                ckbd(EXTKEY, (int)(mode))
  83. #define Compose(mode)               ckbd(COMPOSE, (int)(mode))
  84. #define Alt_nnn(mode)               ckbd(ALT_NNN, (int)(mode))
  85. #define Ckeytbl(us, sh, cp, cc, na) ckbd(CKEYTBL, (us), (sh), (cp), (cc), (na))
  86. #define Cbioskeys(mode)             ckbd(CBIOSKEYS, mode)
  87. #define Deadkey(mode, ptr)          ckbd(DEADKEY, (int)mode, (char *)(ptr))
  88. #define Mouse_cfg(mode, ptr)        ckbd(MOUSE_CFG, (int)mode, (MSPEEDER_SETUP *)mdata);
  89.  
  90. /*
  91. *
  92. * Funktionsdeklarationen für SETUP-Funktionen:
  93. *
  94. * Der COOKIE enthält *ckbd();
  95. * C-Deklaration: cdecl long ckbd(int opcode, ...);
  96. *
  97. * Werte/Bezeichner für opcode, ZUGEHÖRIGE weitere Parameter:
  98. *   0  IDENTIFY     gibt in d0 einen Zeiger auf einen C-type ASCIIstring zurück
  99. *
  100. *   1  EXTKEY       schaltet EXTKEY-Modus ein/aus bzw. fragt akt. Status ab
  101. *         long ckbd(EXTKEY, int mode);
  102. *         mode:     -1 (INQUIRE), 0 (OFF), 1 (ON)
  103. *         return:   vorheriger Wert
  104. *
  105. *   2  COMPOSE      schaltet COMPOSE-Modus ein/aus bzw fragt akt. Status ab
  106. *         long ckbd(COMPOSE, int mode);
  107. *         mode:     -1 (INQUIRE)
  108. *                   >=0: BITMAPPED:  0/1
  109. *                       bit #0:     OFF/ON
  110. *                       bit #1:     DEC/MULTICHAR MODE
  111. *                       bit #2:     ORDER SENSITIVE NO/YES
  112. *         return:   vorheriger Wert
  113. *
  114. *   3  ALT_NNN      verwaltet die MSDOS-ALT-ASCII Funktion.
  115. *         long ckbd(ALT_NNN, int mode);
  116. *         mode:     -1 (INQUIRE), 0 (OFF), 1 (ON)
  117. *         return:   vorheriger Wert
  118. *
  119. *   4  CKEYTBL      verwaltet die Tastaturtabellen.
  120. *         long ckbd(CKEYTBL, char *unshift, char *shift, char *caps,
  121. *                                                       char *compose );
  122. *         unshift, shift, caps: Zeiger auf die entsprechenden Tabellen
  123. *                   (siehe XBIOS Keytbl !!!!)
  124. *         compose:  Zeiger auf die Compose-Tabelle.
  125. *         return:   Zeiger auf  struct {
  126. *                                   char    *unshift;
  127. *                                   char    *shift;
  128. *                                   char    *caps;
  129. *                                   comptab *compose;
  130. *                               } XKEYTAB;
  131. *                   darin ist comptab *:
  132. *                                   struct {
  133. *                                       char    primary;
  134. *                                       char    secondary;
  135. *                                       char    composed;
  136. *                                       char    flags;
  137. *                                   } comptab[];
  138. *         Bemerkung: wenn ein Zeiger den Wert 0 oder -1 besitzt, dann wird
  139. *                   dieser Wert intern nicht verändert.
  140. *                   Die vier Tabellen werden in einen internen Puffer kopiert,
  141. *                   der Aufrufer braucht die Tabellen also nicht selbst im
  142. *                   Speicher zu behalten.
  143. *
  144. *   5 CBIOSKEYS     setzt die Originaltabellen wieder ein oder schaltet
  145. *                   zwischen den Tabellen hin und her
  146. *         int ckbd(CBIOSKEYS, switch);
  147. *         switch:   -1  INQUIRE
  148. *                   >=0: bitmapped.
  149. *                   bit #0: keyboard translation table - SET: use loaded -
  150. *                   bit #1: compose tables             - SET: use loaded -
  151. *         return:  last setup value.
  152. *
  153. *
  154. *   6 DEADKEY       kontrolliert die Toten Tasten...
  155. *         long ckbd(DEADKEY, short mode, char *deadkeys)
  156. *         mode:     -1 (INQUIRE), 0 (OFF), 1 (ON), 2 (SETUP)
  157. *         return:   0/1 für OFF/ON
  158. *                   Wenn char* deadkeys gültig ist bei INQUIRE werden
  159. *                   die Deadkeys in diesen String geschrieben.
  160. *
  161. *
  162. * Mouse speeder config
  163. * --------------------
  164. *
  165. *   7 MOUSE_CFG:    stellt die Mausbeschleuniger-Parameter ein
  166. *         int ckbd(MOUSE_CFG, int mode, MSPEEDER_SETUP *mdata);
  167. *         mode: WORD,
  168. *               -1: INQUIRE, fill out MSPEEDER_SETUP structure if ptr set!
  169. *                0: OFF - deactivate Speeder
  170. *                1: ON  - activate Speeder
  171. *                2: SET - install new params
  172. *         return: zeiger auf MSPEEDER_SETUP-Struktur mit den aktiven Daten
  173. *
  174. *         Kontrollstruktur:
  175. *         typedef struct {
  176. *             struct {
  177. *                 unsigned resvd    :13;
  178. *                 unsigned lefthand :1;       /* Button map change!?        */
  179. *                 unsigned unused   :1;       /* old feature, removed...    */
  180. *                 unsigned activity :1;       /* Speeder ON/OFF             */
  181. *             } switches;
  182. *             short       polynomial[4];      /* speeder polynomial         */
  183. *             short       rotation;           /* rotation in degrees        */
  184. *             short       ratio;              /* X:Y ratio * 256!           */
  185. *             short       mouse_rez;          /* M.resolution in dpi (100)  */
  186. *             short       screen_rez;         /* screen rez in dpi   ( 72)  */
  187. *         } MSPEEDER_SETUP;
  188. *
  189. *         Die Polynomfaktoren und X-Y-Ratio Werte sind (int)(float_val*256)
  190. *
  191. */
  192.  
  193. /* eof */
  194.  
  195.