Data.pas
上传用户:wen198501
上传日期:2013-04-01
资源大小:335k
文件大小:7k
源码类别:

输入法编程

开发平台:

Delphi

  1.  {******************************************************}
  2.  {                                                      }
  3.  {    Copyright (c) 1990-1999 Microsoft Corporation     }
  4.  {                                                      }
  5.  {    Module Name:  Data.c ->>  Data.pas                }
  6.  {                                                      }
  7.  {    Translator:  Liu_mazi@126.com, 2005-11-15         }
  8.  {                                                      }
  9.  {******************************************************}
  10. unit Data;
  11. {$I Define.Inc}
  12. interface
  13. uses Windows, ImmDev, ImeDefs;
  14. const
  15.   SKLayout: array[0..NumsSK-1, 0..MAXSOFTKEYS*2-1] of Char =
  16.   (
  17.     ' 0123456789abcdefghijklmnopqrstuvwxyz;=,-./`[\]'',
  18.     '                     κχυμγνξοθπρ  ωψι  αδλεηφβτζσ                      ',
  19.     '                     лъшнвопржстуьызиагмдёщбчецф  э  юя  й  кх',
  20.     ' ㄦㄉ    ㄓ    ㄚㄞㄢㄇㄖㄏㄎㄍㄑㄕㄘㄛㄨㄜㄠㄩㄙㄟㄣㄆㄐㄋㄔㄧㄒㄊ  ㄗㄈㄤ  ㄝ  ㄡㄥㄅ        ',
  21.     '                     ē  ǔěǎè  īǒíǐìǘǖò  āàé  óùáúōū    ǚ  ǜü  ê      ',
  22.     '   ぃぅぇぉかきくけこなもむぬすねのはつひふへゅゃってさせにそちめしみたまほ  ょんゎをぁと  ゐゑ',
  23.     ' ケィゥヴェォカヵキクナモムヌスネノハツヒフヘュャッテサセニソチメシミタマホコョヶヮヲァトンヰヱ',
  24.     ' ˉ,、;:?!…—·〔(【〈“〉《》∶「」『[)"'‘”〕々‖】’〗~〖』¨]ˇ{}。`〃|.',
  25.     ' ⅪⅡⅢⅣⅤⅥⅦⅧⅨⅩ㈠⑸⑶㈢⒊㈣㈤㈥⒏㈦㈧㈨⑺⑹⒐⒑⒈⒋㈡⒌⒎⑷⒉⑵⒍⑴㈩  ⑻Ⅻ⑼⑽Ⅰ        ',
  26.     '   ≡≠=≤≥<>≮≯∧⊙∠∑-∏∪∩∫∈  ∵∽≌∮∝±×∨÷  ⌒+∥/⊥∴    ∷√  ≈∞      ',
  27.     ' ¤°′″$£¥‰%℃百  毫万二亿兆吉七太拍艾    八九○三千四六微一厘五分      ¢      十      ',
  28.     ' ┄┍┎┏┐┑┒┓  ─┬╀┾┮┞┯┰┱┣┲┳  ╂╁  │├┟┭┠┢┿┝┽┡┼    ╃┈    ┌┆  ┊  ',
  29.     '                     ■^@▲☆※→←◇↑↓〓 ̄_◆□§★△○◎\№&●#                      '
  30.   );
  31.   SKLayoutS: array[0..NumsSK-1, 0..MAXSOFTKEYS*2-1] of Char =
  32.   (
  33.     ' )!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZ:+<_>?~{|}"',
  34.     '                      ΚΧΥΜΓΝΞΟΘΠΡ  ΩΨΙ  ΑΔΛΕΗΦΒΤΖΣ                      ',
  35.     '                      ЛЪШНВОПРЖСТУЬЫЗИАГМДЁЩБЧЕЦФ  Э  ЮЯ  Й  КХ',
  36.     '                                                                                                ',
  37.     '                                                                                                ',
  38.     '    いうえおがぎぐげごぱろるぷずぺぽぼづびぶべゆや  でざぜぴぞぢれじりだらぼ  よ  わ  あど      ',
  39.     '  ゲイウ  エオガ  ギグパロルプズペポバヅビブベユヤ  デザゼピゾヂレジリダラボゴヨ  ワ  アド      ',
  40.     '                                                                                                ',
  41.     '                      ①⒂⒀③⒔④⑤⑥⒙⑦⑧⑨⒄⒃⒚⒛⒒⒕②⒖⒘⒁⒓⑿⒗⑾⑩  ⒅  ⒆⒇          ',
  42.     '                                                                                                ',
  43.     '                      佰      贰      柒          扒玖零叁仟肆陆  壹  伍                拾      ',
  44.     '  ┅┕┖┗┘┙┚┛  ━┴╈╆┶┦┷┸┹┫┺┻  ╊╉  ┃┤┧┵┨┪╇┥╅┩╄    ╋┉    └┇  ┋  ',
  45.     '                                                                                                '
  46.   );
  47. var
  48.   sImeG: TImeG;
  49.   sImeL: TImeL;
  50. var
  51.   uStartComp: uInt = 0;
  52.   uOpenCand: uInt = 0;
  53.   uCaps: uInt = 0;
  54.   SaTC_Trace: DWord;
  55. var
  56.   szUIClassName: array[0..CLASS_LEN] of Char;
  57.   szCompClassName: array[0..CLASS_LEN] of Char;
  58.   szCandClassName: array[0..CLASS_LEN] of Char;
  59.   szStatusClassName: array[0..CLASS_LEN] of Char;
  60.   szCMenuClassName: array[0..CLASS_LEN] of Char;
  61.   szSoftkeyMenuClassName: array[0..CLASS_LEN] of Char;
  62. const
  63.   szHandCursor: PChar = 'Hand';
  64.   szChinese: PChar = 'Chinese';
  65.   szEnglish: PChar = 'English';
  66. var
  67.   szImeName: array[0..MAX_PATH] of Char;
  68.   szImeRegName: array[0..MAX_PATH] of Char;
  69. const
  70.   szCode: PChar = 'Code';
  71.   szEudc: PChar = 'Eudc';
  72.   szFullShape: PChar = 'FullShape';
  73.   szHalfShape: PChar = 'HalfShape';
  74.   szSymbol: PChar = 'Symbol';
  75.   szNoSymbol: PChar = 'NoSymbol';
  76.   szNone: PChar = 'None';
  77.   szSoftKBD: PChar = 'SoftKBD';
  78.   szNoSoftKBD: PChar = 'NoSoftKBD';
  79.   szDigit: PChar = '01234567890';
  80.   szCandInf: PChar = '   数字键';
  81.   szTrace: PChar = '光标跟随';
  82.   szWarnTitle: PChar = '警告';
  83.   szErrorTitle: PChar = '错误';
  84. const
  85.   szRegIMESetting: PChar = 'Control PanelInput Method';
  86.   szPara: PChar = 'Parallel Distance';
  87.   szPerp: PChar = 'Perpendicular Distance';
  88.   szParaTol: PChar = 'Parallel Tolerance';
  89.   szPerpTol: PChar = 'Perpendicular Tolerance';
  90.   // decide UI offset base on escapement
  91. const
  92.   ncUIEsc: array[0..3] of TNearCaret =
  93.   (
  94.     (iLogFontFacX:  0; iLogFontFacY: 1; iParaFacX:  1; iPerpFacX:  0; iParaFacY:  0; iPerpFacY: 1), // 0
  95.     (iLogFontFacX:  1; iLogFontFacY: 0; iParaFacX:  0; iPerpFacX:  1; iParaFacY:  1; iPerpFacY: 0), // 900
  96.     (iLogFontFacX:  0; iLogFontFacY: 0; iParaFacX: -1; iPerpFacX:  0; iParaFacY:  0; iPerpFacY: 1), // 1800
  97.     (iLogFontFacX: -1; iLogFontFacY: 0; iParaFacX:  0; iPerpFacX: -1; iParaFacY: -1; iPerpFacY: 0)  // 2700
  98.   );
  99.   // decide another UI offset base on escapement
  100. const
  101.   ncAltUIEsc: array[0..3] of TNearCaret =
  102.   (
  103.     (iLogFontFacX: 0; iLogFontFacY: 0; iParaFacX:  1; iPerpFacX:  0; iParaFacY:  0; iPerpFacY: -1), // 0
  104.     (iLogFontFacX: 0; iLogFontFacY: 0; iParaFacX:  0; iPerpFacX: -1; iParaFacY:  1; iPerpFacY:  0), // 900
  105.     (iLogFontFacX: 0; iLogFontFacY: 0; iParaFacX: -1; iPerpFacX:  0; iParaFacY:  0; iPerpFacY: -1), // 1800
  106.     (iLogFontFacX: 0; iLogFontFacY: 0; iParaFacX:  0; iPerpFacX:  1; iParaFacY: -1; iPerpFacY:  0)  // 2700
  107.   );
  108.   // decide input rectangle base on escapement
  109. const
  110.   ptInputEsc: array[0..3] of TPoint =
  111.   (
  112.     (X:  1; Y:  1),  // 0
  113.     (X:  1; Y: -1),  // 900
  114.     (X:  1; Y:  1),  // 1800
  115.     (X: -1; Y:  1)   // 2700
  116.   );
  117.   // decide another input rectangle base on escapement
  118. const
  119.   ptAltInputEsc: array[0..3] of TPoint =
  120.   (
  121.     (X:  1; Y: -1),  // 0
  122.     (X: -1; Y: -1),  // 900
  123.     (X:  1; Y: -1),  // 1800
  124.     (X:  1; Y:  1)   // 2700
  125.   );
  126. var
  127.   VirtKey48Map: array[0..47] of Byte =
  128.   (
  129.     $20, $30, $31, $32, $33, $34, $35, $36, $37, $38,
  130.     $39, $41, $42, $43, $44, $45, $46, $47, $48, $49,
  131.     $4a, $4b, $4c, $4d, $4e, $4f, $50, $51, $52, $53,
  132.     $54, $55, $56, $57, $58, $59, $5a, $ba, $bb, $bc,
  133.     $bd, $be, $bf, $c0, $db, $dc, $dd, $de
  134.   );
  135. implementation
  136. end.