home *** CD-ROM | disk | FTP | other *** search
/ Prima Shareware 3 / DuCom_Prima-Shareware-3_cd1.bin / PROGRAMO / PASCAL / CZKEY / CZECH.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-01-15  |  2.9 KB  |  116 lines

  1. Unit Czech;
  2.  
  3. interface
  4.  
  5. Uses App, Drivers, Objects;
  6.  
  7. const CKbd   : Boolean = True;                     { Pouæít çeskou klávesnici }
  8.       SwapYZ : Boolean = False;                                 { Prohodit YZ }
  9.  
  10.       chNic   = 0;
  11.       chCarka = 1;
  12.       chHacek = 2;
  13.       chPrehl = 3;
  14.  
  15.       Prehl  : string[6]  = 'uoaUOA';
  16.       SPrehl : string[6]  = 'üöäÜÖÄ';
  17.       Carky  : string[16] = 'aeiouyrlAEIOUYRL';
  18.       SCarky : string[16] = 'áéíóúÿ¬ìÅÉïòù¥½è';
  19.       Hacky  : string[22] = 'cdelnorstuzCDELNORSTUZ';
  20.       SHacky : string[22] = 'çâêîñô⌐¿ƒûæÇàë£Ñº₧¢åªÆ';
  21.  
  22.  
  23. type PCApp = ^TCApp;
  24.      TCApp = object(TApplication)
  25.       HacCar : Byte;
  26.       constructor Init;
  27.       procedure GetEvent(var Event : TEvent); virtual;
  28.      end;
  29.  
  30. {----------------------------------------------------------}
  31.  
  32. implementation
  33.  
  34. constructor TCApp.Init;
  35. begin
  36.  inherited Init;
  37.  HacCar:=chNic;
  38.  SwapYZ:=True;
  39. end;
  40.  
  41. procedure TCApp.GetEvent(var Event : TEvent);
  42. var F : Char;
  43. begin
  44.  inherited GetEvent(Event);
  45.  if (Event.What=evKeyDown) and (CKbd=True) then
  46.   begin
  47.     F:=Event.CharCode;
  48.     if SwapYZ then
  49.      begin
  50.       case F of
  51.        'z' : F := 'y';
  52.        'Z' : F := 'Y';
  53.        'y' : F := 'z';
  54.        'Y' : F := 'Z';
  55.       end;
  56.      end;
  57.  
  58.     if (HacCar = chHacek) and (Pos(F,Hacky)<>0) then
  59.      begin
  60.       F:=SHacky[Pos(F,Hacky)];
  61.       HacCar:=chNic;
  62.      end;
  63.  
  64.     if (HacCar = chCarka) and (Pos(F,Carky)<>0)
  65.     then
  66.      begin
  67.       F:=SCarky[Pos(F,Carky)];
  68.       HacCar:=chNic;
  69.      end;
  70.  
  71.     if (HacCar = chPrehl) and (Pos(F,Prehl)<>0) then
  72.      begin
  73.       F:=SPrehl[Pos(F,Prehl)];
  74.       HacCar:=chNic;
  75.      end;
  76.  
  77.     case Event.KeyCode of
  78.        561   : F:='+'; 818   : F:='ê';
  79.        1075  : F:='¿'; 1332  : F:='ç';
  80.        1589  : F:='⌐'; 1846  : F:='æ';
  81.        2103  : F:='ÿ'; 2360  : F:='á';
  82.        2617  : F:='í'; 2864  : F:='é';
  83.        3117  : F:='='; 6747  : F:='ú';
  84.        7005  : F:=')'; 10043 : F:='û';
  85.        10279 : F:='¡'; 13100 : F:=',';
  86.        13358 : F:='.'; 13615 : F:='-';
  87.        545   : F:='1'; 832   : F:='2';
  88.        1059  : F:='3'; 1316  : F:='4';
  89.        1573  : F:='5'; 1886  : F:='6';
  90.        2086  : F:='7'; 2346  : F:='8';
  91.        2600  : F:='9'; 2857  : F:='0';
  92.        3167  : F:='%'; 6779  : F:='/';
  93.        7037  : F:='('; 10042 : F:='"';
  94.        10274 : F:='!'; 13116 : F:='?';
  95.        13374 : F:=':'; 13631 : F:='_';
  96.  
  97.        3389  : if HacCar<>chCarka then
  98.                  begin
  99.                   Event.What:=evNothing;
  100.                   HacCar:=chCarka;
  101.                  end;
  102.        3371  : if HacCar<>chHacek then
  103.                  begin
  104.                   Event.What:=evNothing;
  105.                   HacCar:=chHacek;
  106.                  end;
  107.        10592 : if HacCar<>chPrehl then
  108.                  begin
  109.                   Event.What:=evNothing;
  110.                   HacCar:=chPrehl;
  111.                  end;
  112.     end;
  113.    Event.CharCode:=F;
  114.   end;
  115. end;
  116. end.