1 ///////////////////////////////////////////////////////////////////
4 // Key translations - I.Ioannou (roryt@hol.gr) //
5 // Athens - Greece December 18, 1996 02:56am //
6 // Reads a .cfg file and keeps the key definitions //
7 // for the WIN32 console telnet //
8 // modified for alternate keymap swiching //
9 // by Andrey V. Smilianets (smile@head.aval.kiev.ua) //
10 // Kiev - Ukraine, December 1997. //
11 ///////////////////////////////////////////////////////////////////
13 // class KeyTranslator //
15 // Load : loads or replaces the keymap //
16 // TranslateKey : returns a char * to the key def //
17 // AddKeyDef : Changes or adds the key translation //
18 // DeleteKeyDef : Deletes a key def from the list //
19 ///////////////////////////////////////////////////////////////////
26 #define TOKEN_DELIMITERS " +\t" // The word's delimiters
28 // Ioannou 2 June 98: Borland needs them - quick hack
33 #endif // __BORLANDC__
35 // Maybe not portable, but this is for application cursor mode
36 // (Paul Brannan 5/27/98)
37 // Updated for correct precedence in tncon.cpp (Paul Brannan 12/9/98)
38 #define APP4_KEY 0x8000
39 #define APP3_KEY 0x4000
40 #define APP2_KEY 0x2000
41 #define APP_KEY 0x1000
43 /////////////////////////////////////////////////////////////
44 // class KeyTranslator //
45 // Load : loads or replaces the keymap //
46 // TranslateKey : returns a sz to the key def //
47 // AddKeyDef : Changes or adds the key translation //
48 // DeleteKeyDef : Deletes a key def from the list //
49 /////////////////////////////////////////////////////////////
52 friend class TMapLoader
; // FIX ME!! This isn't the best solution
55 ~KeyTranslator() { DeleteAllDefs(); }
57 int SwitchTo(int); // switch to selected keymap
58 int switchMap(TKeyDef
& tk
);
60 // Returns a pointer to the string that should be printed.
61 // Should return NULL if there is no translation for the key.
62 const char *TranslateKey(WORD wVirtualKeyCode
, DWORD dwControlKeyState
);
64 // Changes or adds the key translation associated with
65 // wVirtualScanCode and dwControlKeyState.
66 // Return 1 on success.
67 int AddKeyDef(WORD wVirtualKeyCode
, DWORD dwControlKeyState
, char *lpzKeyDef
);
68 int AddKeyDef(WORD wVirtualKeyCode
, DWORD dwControlKeyState
, tn_ops op
);
70 // Delete a key translation
71 int DeleteKeyDef(WORD wVirtualKeyCode
, DWORD dwControlKeyState
);
73 // Paul Brannan 8/28/98
74 void set_ext_mode(DWORD mode
) {ext_mode
|= mode
;}
75 void unset_ext_mode(DWORD mode
) {ext_mode
&= ~mode
;}
76 void clear_ext_mode() {ext_mode
= 0;}
77 DWORD
get_ext_mode() {return ext_mode
;}
80 DWORD
Fix_ControlKeyState(char *);
81 char* Fix_Tok(char *);
82 DWORD ext_mode
; // Paul Brannan 8/28/98
84 TArrayAsVector
<KeyMap
> mapArray
;
85 TArrayAsVector
<TKeyDef
> globals
;
87 void DeleteAllDefs(void);
88 int AddGlobalDef(WORD wVirtualKeyCode
, char*lpzKeyDef
);
89 int LookOnGlobal(char* vkey
);
90 DWORD
GetGlobalCode(int i
) {return globals
[i
].GetCodeKey();}
92 int currentKeyMap
, mainKeyMap
; // AVS