keytrans.h
上传用户:tigerk9
上传日期:2020-03-10
资源大小:237k
文件大小:4k
源码类别:

Telnet客户端

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////
  2. //                                                               //
  3. //                                                               //
  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. ///////////////////////////////////////////////////////////////////
  12. //                                                               //
  13. //                class KeyTranslator                            //
  14. //                                                               //
  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. ///////////////////////////////////////////////////////////////////
  20. #ifndef __KEYTRANS_H
  21. #define __KEYTRANS_H
  22. #include "tkeydef.h"
  23. #include "tkeymap.h"
  24. #define TOKEN_DELIMITERS " +t" // The word's delimiters
  25. // Ioannou 2 June 98:  Borland needs them - quick hack
  26. #ifdef __BORLANDC__
  27. #define bool BOOL
  28. #define true TRUE
  29. #define false FALSE
  30. #endif //  __BORLANDC__
  31. // Maybe not portable, but this is for application cursor mode
  32. // (Paul Brannan 5/27/98)
  33. // Updated for correct precedence in tncon.cpp (Paul Brannan 12/9/98)
  34. #define APP4_KEY 0x8000
  35. #define APP3_KEY 0x4000
  36. #define APP2_KEY 0x2000
  37. #define APP_KEY 0x1000
  38. /////////////////////////////////////////////////////////////
  39. //                class KeyTranslator                      //
  40. //  Load          : loads or replaces the keymap           //
  41. //  TranslateKey  : returns a sz to the key def            //
  42. //  AddKeyDef     : Changes or adds the key translation    //
  43. //  DeleteKeyDef  : Deletes a key def from the list        //
  44. /////////////////////////////////////////////////////////////
  45. class KeyTranslator {
  46. friend class TMapLoader; // FIX ME!!  This isn't the best solution
  47. public:
  48.     KeyTranslator();
  49.     ~KeyTranslator() { DeleteAllDefs(); }
  50.     int  SwitchTo(int); // switch to selected keymap
  51. int switchMap(TKeyDef& tk);
  52.     // Returns a pointer to the string that should be printed.
  53.     // Should return NULL if there is no translation for the key.
  54.     const char *TranslateKey(WORD wVirtualKeyCode, DWORD dwControlKeyState);
  55.     // Changes or adds the key translation associated with
  56.     // wVirtualScanCode and dwControlKeyState.
  57.     // Return 1 on success.
  58.     int AddKeyDef(WORD wVirtualKeyCode, DWORD dwControlKeyState, char *lpzKeyDef);
  59. int AddKeyDef(WORD wVirtualKeyCode, DWORD dwControlKeyState, tn_ops op);
  60.     // Delete a key translation
  61. int DeleteKeyDef(WORD wVirtualKeyCode, DWORD dwControlKeyState);
  62. // Paul Brannan 8/28/98
  63. void set_ext_mode(DWORD mode) {ext_mode |= mode;}
  64. void unset_ext_mode(DWORD mode) {ext_mode &= ~mode;}
  65. void clear_ext_mode() {ext_mode = 0;}
  66. DWORD get_ext_mode() {return ext_mode;}
  67. private:
  68. DWORD     Fix_ControlKeyState(char *);
  69. char*     Fix_Tok(char *);
  70. DWORD ext_mode; // Paul Brannan 8/28/98
  71. TArrayAsVector<KeyMap> mapArray;
  72. TArrayAsVector<TKeyDef> globals;
  73. void      DeleteAllDefs(void);
  74. int       AddGlobalDef(WORD wVirtualKeyCode, char*lpzKeyDef);
  75. int   LookOnGlobal(char* vkey);
  76. DWORD   GetGlobalCode(int i) {return globals[i].GetCodeKey();}
  77. int currentKeyMap, mainKeyMap; // AVS
  78. };
  79. #endif // __KEYTRANS_H