1 /////////////////////////////////////////////////////////////////// 2 // // 3 // File format : // 4 // // 5 // Comments with a ; in column 1 // 6 // Empty Lines ignored // 7 // The words are separated by a space, a tab, or a plus ("+") // 8 // // 9 // First a [GLOBAL] section : // 10 // [GLOBAL] // 11 // VK_F1 112 // 12 // . // 13 // . // 14 // [END_GLOBAL] // 15 // // 16 // The GLOBAL section defines the names of the keys // 17 // and the virtual key code they have. // 18 // If you repeat a name you'll overwrite the code. // 19 // You can name the keys anything you like // 20 // The Virtual key nymber must be in Decimal // 21 // After the number you can put anything : it is ignored // 22 // Here you must put ALL the keys you'll use in the // 23 // other sections. // 24 // // 25 // Then the emulations sections : // 26 // // 27 // [SCO_ANSI] // 28 // // 29 // VK_F1 \027[M or // 30 // VK_F1 ^[[M or // 31 // VK_F1 SHIFT ^[[W etc // 32 // . // 33 // . // 34 // [SCO_ANSI_END] // 35 // // 36 // There are three parts : // 37 // a) the key name // 38 // b) the shift state // 39 // here you put compination of the words : // 40 // // 41 // RIGHT_ALT // 42 // LEFT_ALT // 43 // RIGHT_CTRL // 44 // LEFT_CTRL // 45 // SHIFT // 46 // NUMLOCK // 47 // SCROLLLOCK // 48 // CAPSLOCK // 49 // ENHANCED // 50 // APP_KEY // 51 // c) the assigned string : // 52 // you can use the ^ for esc (^[ = 0x1b) // 53 // \ and a three digit decimal number // 54 // (\027) // 55 // You can't use the NULL !!! // 56 // Also (for the moment) you can't use spaces // 57 // in the string : everything after the 3rd word is // 58 // ignored - use unsderscore instead. // 59 // // 60 // for example : // 61 // // 62 // VK_F4 SHIFT+LEFT_ALT \0274m^[[M = 0x1b 4 m 0x1b [ M // 63 // VK_F1 RIGHT_CTRL This_is_ctrl_f1 // 64 // // 65 // You may have as many sections as you like // 66 // If you repeat any section (even the GLOBAL) you'll overwrite // 67 // the common parts. // 68 // // 69 /////////////////////////////////////////////////////////////////// 70 71 #pragma once 72 73 //#include "keytrans.h" 74 //#include "tcharmap.h" 75 76 // AVS 77 typedef TArrayAsVector<string> stringArray; 78 79 class TMapLoader { 80 public: 81 TMapLoader(KeyTranslator &RefKeyTrans, TCharmap &RefCharmap): 82 KeyTrans(RefKeyTrans), Charmap(RefCharmap) {} 83 ~TMapLoader() {} 84 85 // If called more than once the new map replaces the old one. 86 // load with a different KeysetName to change keysets 87 // Return 0 on error 88 int Load(const char * filename, const char * szKeysetName); 89 90 void Display(); 91 private: 92 KeyTranslator &KeyTrans; 93 TCharmap &Charmap; 94 95 int LookForPart(stringArray& sa, const char* partType, const char* partName); 96 char* ParseKeyDef(const char* buf, WORD& vk_code, DWORD& control); 97 98 int LoadGlobal(string& buf); 99 int LoadKeyMap(string buf); 100 int LoadCharMap(string buf); 101 102 }; 103