Subversion Repositories Kolibri OS

Rev

Rev 1216 | Blame | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;Basic macros for use editbox                             ;
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. ed_width        equ [edi]               ;è¨à¨­  ª®¬¯®­¥­â 
  5. ed_left         equ [edi+4]             ;¯®«®¦¥­¨¥ ¯® ®á¨ å
  6. ed_top          equ [edi+8]             ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
  7. ed_color        equ [edi+12]            ;梥â ä®­  ª®¬¯®­¥­â 
  8. shift_color     equ [edi+16]            ;=0x6a9480 ¤«ï ¯à¨¬¥à  ¢®§ì¥¬ ¦¥«¥­ë© 梥⠡®ªá 
  9. ed_focus_border_color   equ [edi+20]    ;梥â à ¬ª¨ ª®¬¯®­¥­â 
  10. ed_blur_border_color    equ [edi+24]    ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
  11. ed_text_color   equ [edi+28]            ;梥â ⥪áâ 
  12. ed_max          equ [edi+32]                    ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
  13. ed_text         equ [edi+36]                    ;㪠§ â¥«ì ­  ¡ãä¥à
  14. ed_mouse_variable       equ [edi+40]    ; 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî ¤«ï ¡®ªá /£à㯯ë
  15. ed_flags        equ [edi+44]            ;ä« £¨
  16. bp_flags        equ [ebp+44]            ;¢ ­¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥­ 㪠§ â¥«ì åà ­¨âìáï ¢ ebp
  17. ed_size equ [edi+48]                    ;ª®«-¢® ᨬ¢®«®¢
  18. bp_size equ [ebp+48]                    ;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï  ¤à¥á æ¨¨ ¨á¯«ì§ã¥âáï ebp¡ edi § ­ïâ
  19. ed_pos  equ [edi+52]                    ;¯®§¨æ¨ï ªãàá®à 
  20. ed_offset       equ [edi+56]            ;ᬥ饭¨¥
  21. cl_curs_x       equ [edi+60]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® å
  22. cl_curs_y       equ [edi+64]            ;¯à¥¤ë¤ã饥 ª®®à¤¨­ â  ªãàá®à  ¯® ã
  23. ed_shift_pos    equ [edi+68]            ;¯®«®¦¥­¨¥ ªãàá®à 
  24. ed_shift_pos_old equ [edi+72]           ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 
  25.  
  26. ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
  27. ed_always_focus= 100000000000000b
  28. ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
  29. ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
  30. ed_shift_on_off=1111111111110111b
  31. ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
  32. ed_shift_off=   1111111111111011b
  33. ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
  34. ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
  35. ed_shift_cl=    1111111111100011b
  36. ed_shift_mcl=   1111111111111011b
  37. ed_left_fl=               100000b
  38. ed_right_fl=    1111111111011111b
  39. ed_offset_fl=            1000000b
  40. ed_offset_cl=   1111111110111111b
  41. ed_insert=              10000000b
  42. ed_insert_cl=   1111111101111111b
  43. ed_mouse_on =          100000000b
  44. ed_mous_adn_b=         100011000b
  45. ed_mouse_on_off=1111111011111111b
  46. ed_height=14 ; ¢ëá®â 
  47.  
  48.  
  49.  
  50. macro init_editbox
  51. {
  52. pushad
  53.         mcall
  54.  
  55. popad
  56. }
  57.  
  58.  
  59. macro use_editbox_draw
  60. {
  61. edit_box:
  62. .draw:
  63.         pushad
  64. ;--- à¨á㥬 à ¬ªã ---
  65.         mov     edi,dword [esp+36]
  66.         call    .draw_border            ; ”ã­ªæ¨ï áâ ¡¨«ì­ 
  67. .draw_bg_cursor_text:
  68. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
  69.         call    .check_offset           ;¢ëç¨á«¥­¨¥ ¯®§¨æ¨¨ ªãàá®à  áâ ¡¨«ì­ 
  70. ;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
  71.         call    .draw_bg                ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª à ¡®ç¥© ®¡« áâ¨
  72. ;---- à¨á㥬 ¢ë¤¥«¥­¨¥, ¯® shift ¥á«¨ ¥áâì
  73.         call    .draw_shift
  74. .draw_cursor_text:
  75. ;--- à¨á㥬 ªãàá®à ---
  76.         ;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
  77.         test    word ed_flags,ed_focus
  78.         jz      @f
  79.         call    .draw_cursor
  80. @@:
  81.         call    .draw_text
  82. ;        ret
  83. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  84. ;Ž¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å ä㭪権 ¨ ¯®áâ ®¡à ¡®â稪®¢;;
  85. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  86. .editbox_exit:
  87.         popad
  88.         ret 4
  89. }
  90.  
  91.  
  92. macro use_editbox_key
  93. {
  94. ;==========================================================
  95. ;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
  96. ;==========================================================
  97. edit_box_key:
  98. pushad
  99.         mov     edi,dword [esp+36]
  100.         test    word ed_flags,ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  101.         je      edit_box.editbox_exit
  102.         test    word ed_flags,ed_mouse_on
  103.         jne     edit_box.editbox_exit
  104.  
  105. ;à®¢¥àª  ­ ¦ â shift ?
  106.         call    edit_box_key.check_shift
  107. ;----------------------------------------------------------
  108. ;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
  109. ;----------------------------------------------------------
  110. use_key_process  backspase,delete,left,right,home,end,insert
  111. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  112. ;‡ £«ã誠 ­  ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢­¨§ â.¥. ¯à¨ ®¡­ à㦥­¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 
  113. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  114. use_key_no_process   up,down,esc,enter,tab,numl,capsl,scrolll
  115. ;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
  116. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  117. ;à®¢¥àª  ãáâ ­®¢«¥­ «¨ ä« £ ¯à¨ ª®â®à®¬ ­ã¦­® ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ ­ã¦­®¬ ¡®ªá¥ ¥á«¨ â ª®©­¥®¡å®¤¨¬®á⨠­¥â ­ã¦­® § ª®¬¥­â¨à®¢ âì ¬ ªà®á
  118. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  119. use_key_figures_only
  120. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  121. ;¯à®¢¥àª  ­  shift ¡ë« «¨ ­ ¦ â
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  123. are_key_shift_press
  124. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  125. ; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥ + ¤ «ì­¥©è ï ®¡à ¡®âª 
  126. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  127. are_key_cur_end
  128. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  129. ;Ž¡à ¡®âª  ª« ¢¨è insert,delete.backspase,home,end,left,right
  130. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  131. use_work_key
  132. }
  133.  
  134. macro use_editbox_mouse
  135. {
  136. ;==========================================================
  137. ;=== ®¡à ¡®âª  ¬ëè¨ =======================================
  138. ;==========================================================
  139. ;save for stdcall ebx,esi,edi,ebp
  140. edit_box_mouse:
  141. pushad
  142.         mov     edi,dword [esp+36]
  143. ;debug
  144. ;----------------------------------------------------------
  145. ;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
  146. ;----------------------------------------------------------
  147.         mcall   37,2
  148. ;----------------------------------------------------------
  149. ;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
  150. ;----------------------------------------------------------
  151.         test    eax,1
  152.         jnz     edit_box_mouse.mouse_left_button
  153.         and     word ed_flags,ed_mouse_on_off
  154.         mov     ebx,dword ed_mouse_variable
  155.         push    0
  156.         pop     dword [ebx]
  157. ;        mov     dword [ebx],ebx
  158.         jmp     edit_box.editbox_exit
  159. .mouse_left_button:
  160. ;----------------------------------------------------------
  161. ;--- ¡«®ª¨à®¢ª  ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ­¨¨ ­  ­¨å ªãàá®à 
  162. ;----------------------------------------------------------
  163.         mov     eax,dword ed_mouse_variable
  164.         push    dword [eax]
  165.         pop     eax
  166.         test    eax,eax
  167.         jz      @f
  168.         cmp     eax,edi
  169.         je      @f
  170.         jmp     edit_box_mouse._blur
  171. ;----------------------------------------------------------
  172. ;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® 0 â.¥ ¢á¥© ®¡« á⨠íªà ­ 
  173. ;----------------------------------------------------------
  174. @@:     mcall   37,1
  175. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  176. ;”ã­ªæ¨ï ®¡à ¡®âª¨  ¬ë誨 ¯®«ã祭¨¥ ª®®à¤¨­ â ¨ ¯à®¢¥àª  ¨å + ¢ë¤¥«¥­¨ï
  177. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  178. use_work_mouse
  179. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  180. ;Ž¡é¨¥ ä㭪樨 ®¡à ¡®âª¨
  181. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  182. use_general_func
  183. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  184. ;”㭪樨 ¤«ï à ¡®âë á key
  185. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  186. use_key_func
  187. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  188. ;”㭪樨 ¤«ï à ¡®âë á mouse
  189. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  190. use_mouse_func
  191. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  192. ;Bit mask from editbox
  193. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  194. }
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  219. ;­¨¦¥ à á¯®«®¦¥­ë ä㭪樨 ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì  «£®à¨â¬
  220. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  221. ;Œ ªà®á ¤«ï ¢ë¢®¤  ®á­®¢­ëå ä㭪権 ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬
  222. macro use_general_func
  223. {
  224. ;debug_func
  225. ;----------------------------------------------------------
  226. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ¢ë¤¥«¥­®© ç á⨠-----------------
  227. ;----------------------------------------------------------
  228. edit_box.draw_shift:
  229.         test    word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
  230.         jz      @f
  231.         mov     ebp,shift_color
  232.         mov     ebx,dword       ed_shift_pos
  233.         call    edit_box_key.sh_cl_
  234. @@:     ret
  235. ;----------------------------------------------------------
  236. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
  237. ;----------------------------------------------------------
  238. edit_box.draw_text:
  239. ;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
  240. ;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
  241.         call    edit_box.get_n
  242.         mov     esi,ed_size
  243.         mov     ebx,ed_offset
  244.         sub     esi,ebx
  245.         cmp     eax,esi
  246.         jae     @F
  247.         mov     esi,eax         ;çâ®¡ë ­¥ ¢ë室¨âì §  ¯à¥¤¥«ë íªà ­ 
  248. ;--- à¨á㥬 ⥪áâ ---                                            
  249. @@:     mov     eax,4
  250.         mov     ebx,ed_left
  251.         mov     edx,ed_offset
  252.         add     ebx,2
  253.         shl     ebx,16
  254.         add     ebx,ed_top
  255.         mov     ecx,ed_text_color
  256.         add     ebx,4
  257.         add     edx,ed_text
  258.         mcall
  259. ret
  260. ;----------------------------------------------------------
  261. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
  262. ;¢å®¤­ë¥ ¤ ­­ë¥
  263. ;eax
  264. ;edx - color
  265. ;----------------------------------------------------------
  266. ;¢å®¤ ⮫쪮 梥â edx
  267. edit_box.draw_bg:
  268.         mov     ebx,ed_left
  269.         add     ebx,1
  270.         mov     edx,ed_color
  271.         shl     ebx,16
  272.         add     ebx,ed_width
  273.         sub     ebx,1
  274. edit_box.draw_bg_eax:
  275.         mov     ecx,ed_top
  276.         mov     eax,13
  277.         add     ecx,1
  278.         shl     ecx,16
  279.         add     ecx,ed_height
  280.         dec     ecx
  281.         mcall  
  282. ret
  283. ;----------------------------------------------------------
  284. ;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨­¥ ª®¬¯®­¥­â 
  285. ;----------------------------------------------------------
  286. edit_box.get_n:
  287.         mov     eax,ed_width    ;¯®«ã祬 è¨à¨­ã ª®¬¯®­¥­â 
  288.         xor     edx,edx   ;१ã«ìâ â à á¯®«®£ ¥âáï ¢ ¯ à¥ edx:eax ¢ eax - ®áâ â®ª
  289.         sub     eax,4           ;¢ëç⨬ 4
  290.         mov     ebx,6           ;§ £à㧬¨ ¤¥«¨â¥«ì
  291.         div     ebx             ;à §¬¤¥«¨¬ ­  6
  292. ret
  293. ;----------------------------------------------------------
  294. ;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
  295. ;----------------------------------------------------------
  296. ;¢å®¤­ë¥ ebp- 梥â
  297. edit_box.clear_cursor:
  298.         mov     edx,ebp
  299.         mov     ebx,cl_curs_x
  300.         mov     ecx,cl_curs_y
  301.         jmp     edit_box.draw_curs
  302. edit_box.draw_cursor:
  303.         mov     edx,ed_text_color
  304.         mov     ebx,ed_pos
  305.         mov     ecx,ed_offset
  306.         sub     ebx,ecx
  307.  
  308.         lea     ebx,[ebx*2+ebx]
  309.         shl     ebx,1
  310.         ;imul   ebx,6
  311.         add     ebx,ed_left
  312.         mov     ecx,ed_top
  313.         inc     ebx
  314.         add     ecx,2
  315.         mov     ebp,ebx
  316.         shl     ebx,16
  317.         mov     bx,bp
  318.         mov     ebp,ecx
  319.        
  320.         shl     ecx,16
  321.         mov     cx,bp
  322.         add     ecx,ed_height-4
  323.        
  324.         mov     cl_curs_x,ebx
  325.         mov     cl_curs_y,ecx
  326. edit_box.draw_curs:              
  327.         mcall   38
  328. ret
  329. ;----------------------------------------------------------
  330. ;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
  331. ;----------------------------------------------------------
  332. edit_box.draw_border:
  333. ;--- 梥â à ¬ª¨ ---
  334.         test    word ed_flags,ed_focus
  335.         mov     edx,ed_focus_border_color
  336.         jne     @f
  337.         mov     edx,ed_blur_border_color
  338. @@:
  339. ;--- ᢥàåã ---
  340.         mov     eax,38
  341.         mov     ebx,ed_left
  342.         mov     ecx,ebx
  343.         shl     ebx,16
  344.         mov     bx,cx
  345.         add     ebx,ed_width
  346.         mov     ecx,ed_top
  347.         mov     esi,ecx
  348.         shl     ecx,16
  349.         mov     cx,si
  350.         mcall
  351. ;--- á­¨§ã ---
  352.         mov     esi,ecx
  353.         add     ecx,ed_height
  354.         mov     ebp,ecx
  355.         shl     ecx,16
  356.         mov     cx,bp
  357.         mcall
  358. ;--- á«¥¢  ---
  359.         mov     cx,si
  360.         mov     ebp,ebx
  361.         sub     ebx,ed_width
  362.         mcall
  363. ;--- á¯à ¢  ---
  364.         mov     ebx,ebp
  365.         shl     ebx,16
  366.         mov     bx,bp
  367.         mcall
  368. ret
  369. ;----------------------------------------------------------
  370. ;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
  371. ;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
  372. ;--- ¥á«¨ ᬥ饭¨¥ ¡ë«® ãáâ ­®¢ª  ä« £  ed_offset_cl ¨­ ç¥
  373. ; ¥á«¨ ­¨ç¥£® ­¥ ¨§¬¥­¨«®áì â® ¢ëáâ ¢«¥­¨¥ ed_offset_fl
  374. ; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï­¨ï ª®¬¯®­¥­â®¢ word ed_flags
  375. ;----------------------------------------------------------
  376. edit_box.check_offset:
  377. pushad
  378.         mov     ecx,ed_pos
  379.         mov     ebx,ed_offset
  380.         cmp     ebx,ecx
  381.         ja      edit_box.sub_8
  382.  
  383.         push    ebx
  384.         call    edit_box.get_n                  ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ à¥ ॣ¨áâ஢ edx:eax
  385.         pop     ebx
  386.         mov     edx,ebx
  387.         add     edx,eax         ;ed_offset+width editbox
  388.         inc     edx             ;­¥®¡å®¤¨¬® ¤«ï ­®¬ «ì­®£® ¯®«®¦¥­¨ï ªãàá®à  ¢ ªà ©­¥© «¥¢®© ¯®§¨æ¨¨
  389.         cmp     edx,ecx
  390.         ja      @f
  391.  
  392.         mov     edx,ed_size
  393.         cmp     edx,ecx
  394.         je      edit_box.add_end
  395.  
  396.         sub     edx,ecx
  397.         cmp     edx,8
  398.         jbe     edit_box.add_8
  399.         add     ebx,8
  400.         jmp     edit_box.chk_d
  401.  
  402. edit_box.sub_8:
  403.         cmp     ecx,0
  404.         je      edit_box.sub_min
  405.         cmp     ebx,8
  406.         jbe     edit_box.sub_min
  407.         sub     ebx,8   ;ebx=ed_offset
  408.         jmp     edit_box.chk_d
  409. edit_box.sub_min:
  410.         xor     ebx,ebx
  411.         jmp     edit_box.chk_d
  412.  
  413. edit_box.add_end:sub    edx,eax
  414.         mov     ebx,edx
  415.         jmp     edit_box.chk_d
  416. edit_box.add_8: add     ebx,edx
  417. edit_box.chk_d: mov     ed_offset,ebx
  418.         call    edit_box.draw_bg
  419.         and     word ed_flags,ed_offset_cl
  420. edit_ex
  421. @@:
  422.         or      word ed_flags,ed_offset_fl
  423. edit_ex
  424. }
  425.  
  426. macro use_key_func
  427. {
  428. ;Ž¡à ¡®âª  Shift ¤«ï á­ïâ¨ï ¢ë¤¥«¥­¨ï ­¥¨§¢¥áâ­®© ®¡« áâ¨
  429. edit_box_key.shift: ;;;;;;;SHIFT
  430.         test    word ed_flags,ed_shift
  431.         je      edit_box_key.f_exit
  432.  
  433. @@:     mov     ebp,shift_color
  434.         or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
  435.         mov     ebx,dword       ed_shift_pos
  436.         call    edit_box_key.sh_cl_
  437.         jmp     edit_box.draw_cursor_text
  438. ;;;;;;;;;;;;;;;;;;;;;
  439. edit_box_key.f_exit:    call   edit_box.check_offset
  440.         and     word ed_flags,ed_shift_cl
  441.         call    edit_box_key.enable_null
  442.         jmp     edit_box.draw_cursor_text
  443. edit_box_key.sh_cl_:
  444. ;;;;;;SHIFT end
  445. ;®¡à ¡®âª  ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥­¨¨ ¢ë¤¥«¥­¨ï
  446. ;¤«ï ®¡à ¡®âª¨ á­ïâ¨ï ¢ë¤¥«¥­¨ï
  447. ;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
  448.         mov     eax,dword       ed_pos
  449.         cmp     eax,ebx
  450.  
  451.         jae     edit_box_key.sh_n
  452.         push    eax  ;¬¥­ì襥 ¢ eax
  453.         push    ebx  ;¡®«ì襥
  454.         jmp     edit_box_key.sh_n1
  455.                      ;¥á«¨ ¨­ ç¥
  456. edit_box_key.sh_n:
  457.         push    ebx  
  458.         push    eax
  459. edit_box_key.sh_n1:
  460.         call    edit_box.check_offset
  461.         call    edit_box.get_n
  462.         mov     edx,eax ;size of ed_box
  463.         mov     ecx,ed_offset
  464.         add     eax,ecx ;eax = w_off= ed_offset+width
  465.         mov     edx,eax ;save
  466.         pop     ebx     ;¡®«ì襥
  467.         pop     eax     ;¬¥­ì襥
  468.  
  469.         cmp     eax,ecx         ;áà ¢­¥­¨¥ á ¬¥­ì襣® á offset.
  470.         jae     edit_box_key.f_f            ;¥á«¨ ¡®«ìè¥
  471.         xor     eax,eax
  472.         cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
  473.         jb      @f
  474.         sub     ebx,ecx
  475.         jmp     edit_box_key.nxt_f
  476. @@:     mov     ebx,edx
  477.         sub     ebx,ecx
  478.         jmp     edit_box_key.nxt_f
  479. edit_box_key.f_f:  
  480.         sub     eax,ecx
  481.         cmp     edx,ebx         ;cà ¢­¨¬ à §¬¥à w_off á ¡®«ì訬
  482.         jle     @f
  483.         sub     ebx,ecx
  484.         sub     ebx,eax
  485.         jmp     edit_box_key.nxt_f
  486. @@:
  487.         mov     ebx,edx
  488.         sub     ebx,ecx
  489.         sub     ebx,eax
  490. edit_box_key.nxt_f:
  491.         mov     edx,ebx
  492.         lea     ebx,[eax*2+eax]
  493.         shl     ebx,1
  494.         add     ebx,ed_left
  495.         inc     ebx
  496.         shl     ebx,16
  497.         lea     ecx,[edx*2+edx]
  498.         shl     ecx,1  
  499.         mov     bx,cx
  500.         inc     ebx
  501.         mov     edx,ebp;shift_color
  502.  
  503.         call    edit_box.draw_bg_eax
  504. @@:     call    edit_box_key.enable_null
  505.         ret
  506. ;;;;;;;;;;;;;;;;;;;;;
  507. ;“áâ ­®¢ª - á­ï⨥ ¢ë¤¥«¥­¨ï ¢ ®¤¨­ ᨬ¢®«
  508. ;;;;;;;;;;;;;;;;;;;;;
  509. edit_box_key.drw_sim:
  510.         mov     eax,dword       ed_pos
  511.         call    edit_box_key.draw_rectangle   ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª á § ¤ ­­ë¬ 梥⮬
  512.         jmp     @b
  513. ;;;;;;;;;;;;;;;;;;;;;
  514. ;”ãªæ¨ï ãáâ ­®¢ª¨ ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
  515. ;‹®£¨ª :
  516. ;;;;;;;;;;
  517. edit_box_key.draw_wigwag:
  518. ;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
  519.         mov     ebp,shift_color
  520.         call    edit_box.clear_cursor
  521.  
  522.         or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
  523.         mov     ebp,shift_color
  524.         mov     eax,dword       ed_pos
  525.         test    word ed_flags,ed_left_fl
  526.         jz      edit_box_key.low
  527.         jmp     @f
  528. ;;;;;;;;;;
  529. ;”ãªæ¨ï 㤠«¥­¨ï ¢ë¤¥«¥­¨ï ¯à¨ ¤¢¨¦¥­¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ­ ¦ â¨¨ shift
  530. ;‹®£¨ª :
  531. ;;;;;;;;;;
  532. edit_box_key.draw_wigwag_cl:
  533. ;äã­ªæ¨ï ãáâ ­®¢ª¨ ¯¥à¥¬¥­­ëå
  534.         mov     ebp,ed_color
  535.         call    edit_box.clear_cursor
  536.  
  537.         mov     ebp,ed_color
  538.         mov     eax,dword       ed_pos
  539.         test    word ed_flags,ed_left_fl
  540.         jz      edit_box_key.low
  541. @@:     call    edit_box_key.draw_rectangle  ;­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª § ªà è¨¢ ¥¬®© ®¡« áâ¨
  542.         ret
  543. edit_box_key.low:   dec     eax
  544.         jmp     @b
  545. ;¢å®¤­®© ¯ à ¬¥âà ebx - ed_pos
  546. edit_box_key.sh_first_sh:
  547.         test    word ed_flags,ed_shift
  548.         je      @f
  549.         mov     dword ed_shift_pos_old,ebx
  550.         test    word ed_flags,ed_shift_on
  551.         jne     @f
  552.         mov     dword ed_shift_pos,ebx
  553.         or      word ed_flags,ed_shift_on
  554. @@:     ret
  555. ;Ž¡à ¡®âª  ªà ©­¨å ¯®«®¦¥­¨© ¢ editbox ¯à¨ ­ ¦ â®¬ shift
  556. ;¯à®¨§¢®¤¨â á­ï⨥ ¢ë¤¥«¥­¨¥, ¥á«¨ ­¥â shift
  557. ;¨­ ç¥ ¢®®¡é¥ ¢ë室¨â
  558. edit_box_key.sh_st_of:
  559.         test    word ed_flags,ed_shift
  560.         jne     @f
  561.         test    word ed_flags,ed_shift_bac
  562.         je      @f
  563.         mov     ebp,ed_color
  564.         mov     ebx,dword       ed_shift_pos
  565.         call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
  566.         and     word ed_flags,ed_shift_cl ; ®ç¨á⪠ ®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥­¨¥
  567.         jmp     edit_box.draw_cursor_text
  568. @@:
  569.         and     word ed_flags,ed_shift_off
  570.         popad
  571.         ret     4
  572. ;¯à®¢¥àª  á®áâ®ï­¨ï shift ¡ë« «¨ ®­ ­ ¦ â à ­ìè¥?
  573. edit_box_key.sh_enable:
  574.         test    word ed_flags,ed_shift
  575.         jne     edit_box_key.sh_ext_en ;­ à¨á®¢ âì § ªà è¥­ë© ¯àאַ㣮«ì­¨ª
  576.  
  577.         test    word ed_flags,ed_shift_bac
  578.         je      @f
  579.         call    edit_box.check_offset
  580.  
  581.         mov     ebp,ed_color
  582.         mov     ebx,dword       ed_shift_pos
  583.         call    edit_box_key.sh_cl_  ;®ç¨á⪠ ¢ë¤¥«¥­®£® äà £¬¥­â 
  584.         call    edit_box_key.draw_wigwag_cl
  585.         and     word ed_flags,ed_shift_cl ; 1¢ à ­¥ ­ã¦­®
  586.         ret
  587.  
  588. @@:     mov     ebp,ed_color
  589.         call    edit_box.clear_cursor
  590.         call    edit_box.check_offset
  591.         ret
  592. edit_box_key.sh_ext_en:    
  593.         call    edit_box.check_offset
  594.         test    word ed_flags,ed_offset_fl
  595.         je      @f
  596. ;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
  597.         mov     eax,dword       ed_shift_pos
  598.         mov     ebx,dword       ed_pos
  599.         mov     ecx,dword       ed_shift_pos_old
  600. ;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
  601.         cmp     eax,ecx
  602.         je      edit_box_key.1_shem
  603.         jb      edit_box_key.smaller
  604.         cmp     ecx,ebx
  605.         ja      edit_box_key.1_shem
  606.         call    edit_box_key.draw_wigwag_cl ;clear
  607.         jmp     edit_box_key.sh_e_end
  608. edit_box_key.smaller:
  609.         cmp     ecx,ebx
  610.         jb      edit_box_key.1_shem
  611.         call    edit_box_key.draw_wigwag_cl ;clear
  612.         jmp     edit_box_key.sh_e_end
  613. ;alike  =
  614. edit_box_key.1_shem:        call   edit_box_key.draw_wigwag
  615. edit_box_key.sh_e_end:      and     word ed_flags,ed_shift_off
  616.         ret
  617. @@:     mov     ebp,shift_color
  618.         mov     ebx,dword       ed_shift_pos
  619.         call    edit_box_key.sh_cl_
  620.         jmp     edit_box_key.sh_e_end
  621. ;äã­ªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ­ ¦ â¨¨ home and end
  622. edit_box_key.sh_home_end:
  623.         mov     ebp,ed_color
  624.         call    edit_box.clear_cursor
  625.         test    word ed_flags,ed_shift_bac
  626.         je      @f
  627.         mov     ebp,ed_color
  628.         mov     ebx,dword       ed_shift_pos_old
  629.         call    edit_box_key.sh_cl_
  630.  
  631. @@:     test    word ed_flags,ed_shift
  632.         je      edit_box_key.sh_exit_ ;¢ë©â¨
  633.         mov     ebp,shift_color
  634.         mov     ebx,dword       ed_shift_pos
  635.         call    edit_box_key.sh_cl_
  636.         or      word ed_flags,ed_shift_bac ;ãáâ ­®¢ª  ä« £ , ¢ë¤¥«¥­­®© ®¡« áâ¨
  637.         jmp     edit_box_key.sh_e_end
  638. edit_box_key.sh_exit_:      
  639.         call    edit_box.check_offset
  640.         ret
  641. ;äã­ªæ¨ï ¢­¥á¥­¨ï 0 ¯®  ¤à¥áã ed_size+1
  642. edit_box_key.enable_null:
  643.         pusha
  644.         mov     eax,ed_size
  645.         mov     ebx,ed_text
  646.         test    eax,eax
  647.         add     eax,ebx
  648.         jne     @f
  649.         inc     eax
  650. @@:     xor     ebx,ebx
  651.         mov     [eax],bl
  652. edit_ex
  653. ;- 㤠«¥­¨¥ ᨬ¢®« 
  654. ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
  655. edit_box_key.del_char:
  656.         mov     esi,ed_text
  657.         test    word ed_flags,ed_shift_on
  658.         je      @f
  659.         mov     eax,dword ed_shift_pos
  660.         mov     ebx,esi
  661.         cmp     eax,ecx
  662.         jae     edit_box_key.dh_n
  663.  
  664.         mov     ed_pos,eax      ;çâ® ¡ë ­¥ ¡ë«® ã¡¥£ ­¨ï ªãàá®à 
  665.         mov     ebp,ecx
  666.         sub     ebp,eax
  667.         add     ebx,eax  ;eax ¬¥­ìè¥
  668.         sub     edx,ecx
  669.         add     esi,ecx
  670.  
  671.         mov     dword ed_shift_pos,ebp
  672.         jmp     edit_box_key.del_ch_sh
  673.                      ;¥á«¨ ¨­ ç¥
  674. edit_box_key.dh_n:  
  675.         mov     ebp,eax
  676.         sub     ebp,ecx
  677.         add     ebx,ecx
  678.         sub     edx,eax
  679.         add     esi,eax
  680.         mov     dword ed_shift_pos,ebp
  681.         jmp     edit_box_key.del_ch_sh
  682.  
  683. @@:     add     esi,ecx ;㪠§ â¥«ì + ᬥ饭¨¥ ª ॠ«ì­®¬ã ¡ãää¥àã
  684.         mov     ebx,esi
  685.         inc     esi
  686.         cld
  687.  
  688.         sub     edx,ecx
  689. edit_box_key.del_ch_sh:
  690.  
  691.         push    edi
  692.         mov     edi,ebx
  693. @@:
  694.         lodsb
  695.         stosb
  696.         dec edx
  697.         jns @b
  698.        
  699.         pop edi
  700.         ret
  701. ;¢ëç¨á«¨âì § ªà è¨¢ ¥¬ãî ®¡« áâì
  702. ;ᮣ« è¥­¨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size
  703. edit_box_key.clear_bg:
  704.         call    edit_box.get_n  ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨­ë ª®¬¯®­¥­â 
  705.         push    eax
  706.         mov     ebx,ed_offset
  707.         add     eax,ebx ;eax = w_off= ed_offset+width
  708.         mov     ebx,ebp ;ed_size
  709.        
  710.         cmp     eax,ebx
  711.         jb      @f
  712.         mov     eax,ed_pos
  713.         sub     ebx,eax
  714.         mov     ecx,ed_offset
  715.         sub     eax,ecx
  716.         jmp     edit_box_key.nxt
  717. @@:     mov     ebx,ed_pos
  718.         push    ebx
  719.         sub     eax,ebx
  720.         mov     ebx,eax ;It is don't optimal
  721.        
  722.         pop     eax     ;ed_pos
  723.         mov     ecx,ed_offset
  724.         sub     eax,ecx
  725. edit_box_key.nxt:
  726.         mov     ebp,eax  ;¯à®¢¥àª  ­  ¢ë室 § ªà è¨¢ ¥¬®© ®¡« á⨠§  ¯à¥¤¥«ë ¤«¨­ë
  727.         add     ebp,ebx
  728.         pop     edx
  729.         cmp     ebp,edx
  730.         je      @f
  731.         inc     ebx
  732.  
  733. @@:     mov     edx,ebx
  734.         lea     ebx,[eax*2+eax]
  735.         shl     ebx,1
  736.         add     ebx,ed_left
  737.         inc     ebx
  738.         shl     ebx,16
  739.         lea     ecx,[edx*2+edx]
  740.         shl     ecx,1  
  741.         mov     bx,cx
  742.         mov     edx,ed_color
  743.         call    edit_box.draw_bg_eax
  744.         ret
  745. ;;;;;;;;;;;;;;;;;;;
  746. ;;; Ž¡à ¡®âª  ¯à¨¬¨â¨¢®¢
  747. ;;;;;;;;;;;;;;;;;;;;
  748. ; à¨á®¢ âì ¯àאַ㣮«ì­¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp
  749. ;¢å®¤­ë¥ ¯ à ¬¥âàë:
  750. ;eax=dword ed_pos
  751. ;ebp=-梥â ed_color or shift_color
  752. edit_box_key.draw_rectangle:
  753.         mov     ecx,dword ed_offset
  754.         sub     eax,ecx
  755.         lea     ebx,[eax*2+eax]
  756.         shl     ebx,1
  757.         inc     ebx
  758.         add     ebx,ed_left
  759.         shl     ebx,16
  760.         add     ebx,6
  761.         mov     edx,ebp
  762.         call    edit_box.draw_bg_eax
  763.         ret
  764. ;;;;;;;;;;;;;;;;;;
  765. ;;à®¢¥àª  ­ ¦ â «¨ shift
  766. ;;;;;;;;;;;;;;;;;;
  767. edit_box_key.check_shift:
  768. pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
  769.         mcall   66,3
  770.         test    al,0x03
  771.         je      @f
  772.         or      word ed_flags,ed_shift   ;ãáâ ­®¢¨¬ ä« £
  773. @@:edit_ex
  774. }
  775. ;¬ ªà®á ª« ¢¨è ­  ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï
  776. macro use_key_process backspase,delete,left,right,home,end,insert
  777. {
  778. if backspase eq
  779. else
  780.         cmp     ah,8
  781.         jz      edit_box_key.backspace
  782. end if
  783. if delete eq
  784. else
  785.         cmp     ah,0xb6
  786.         jz      edit_box_key.delete
  787. end if
  788. if left eq
  789. else
  790.         cmp     ah,176
  791.         jz      edit_box_key.left
  792. end if
  793. if right eq
  794. else
  795.         cmp     ah,179
  796.         jz      edit_box_key.right
  797. end if
  798. if home eq
  799. else
  800.         cmp     ah,180
  801.         jz      edit_box_key.home
  802. end if
  803. if home eq
  804. else
  805.         cmp     ah,181
  806.         jz      edit_box_key.end
  807. end if
  808. if insert eq
  809. else
  810.         cmp     ah,185  ;insert
  811.         jz      edit_box_key.insert
  812. end if
  813. }
  814.  
  815. macro use_key_no_process  up,down,esc,enter,tab,numl,capsl,scrolll
  816. {
  817. if up eq
  818. else
  819.         cmp     ah,177
  820.         jz      edit_box.editbox_exit
  821. end if
  822. if down eq
  823. else
  824.         cmp     ah,178
  825.         jz      edit_box.editbox_exit
  826. end if
  827. if esc eq
  828. else
  829.         cmp     ah,27   ;ESC - ª« ¢¨è  ))
  830.         jz      edit_box.editbox_exit
  831. end if
  832. if enter eq
  833. else
  834.         cmp     ah,13   ;ENTER - ª« ¢¨è  ))
  835.         jz      edit_box.editbox_exit
  836. end if
  837. if tab eq
  838. else
  839.         cmp     ah,9   ;TAB - ª« ¢¨è  ))
  840.         jz      edit_box.editbox_exit
  841. end if
  842.  
  843. if numl eq
  844. else
  845.         cmp     ah,4   ;Num Lock - ª« ¢¨è  ))
  846.         jz      edit_box.editbox_exit
  847. end if
  848.  
  849. if capsl eq
  850. else
  851.         cmp     ah,2   ;Caps Lock - ª« ¢¨è  ))
  852.         jz      edit_box.editbox_exit
  853. end if
  854.  
  855. if scrolll eq
  856. else
  857.         cmp     ah,1   ;Scroll Lock - ª« ¢¨è  ))
  858.         jz      edit_box.editbox_exit
  859. end if
  860.  
  861. }
  862.  
  863. macro use_key_figures_only
  864. {
  865.         test    word ed_flags,ed_figure_only  ; ⮫쪮 æ¨äàë ?
  866.         jz      @f
  867.         cmp     ah,'0'
  868.         jb      edit_box.editbox_exit
  869.         cmp     ah,'9'
  870.         ja      edit_box.editbox_exit
  871. @@:
  872. }
  873. macro are_key_shift_press
  874. {
  875.         test    word ed_flags,ed_shift_on
  876.         je      @f
  877.         ;‚室­ë¥ ¤ ­­ë¥ edx=ed_size;ecx=ed_pos
  878.         push    eax
  879.         mov     edx,ed_size
  880.         mov     ecx, ed_pos
  881.         pusha
  882. ;;;;;;;;;;;;;;;;;;;;;
  883. ;clear input arrea
  884.         mov     ebp,ed_color
  885.         mov     ebx,dword       ed_shift_pos
  886.         call    edit_box_key.sh_cl_
  887.         mov     ebp,ed_size
  888.         call    edit_box_key.clear_bg
  889. ;;;;;;;;;;;;;;;;;;;;;
  890.         popa
  891.         call    edit_box_key.del_char
  892. ;;;;
  893.         mov     eax,dword ed_shift_pos
  894.         mov     ebx,ed_size
  895.         sub     ebx,eax
  896.         mov     ed_size,ebx
  897.         pop     eax
  898. @@:
  899. }
  900. macro are_key_cur_end
  901. {
  902.         mov     ecx,ed_size
  903.         mov     edx, ed_max
  904.         test    word ed_flags,ed_insert
  905.         jne     @f
  906.         cmp     ecx,edx
  907.         jae     edit_box.editbox_exit
  908. @@:     mov     ebx, ed_pos
  909.         cmp     ebx,edx
  910.         jl      @f ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­®
  911.         jmp     edit_box.editbox_exit
  912.  
  913. @@:     ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
  914.         mov     ecx,ed_size
  915.         push    edi eax
  916.         mov     ebp,edi
  917.         mov     esi,ed_text     ; “ª § â¥«ì ­  ¡ãä¥à
  918.                                 ;ã¤¥¬ à ¡®â âì á® áâப®©
  919.         add     esi,ecx         ;add ed_size ¤®¡ ¢¨¬ max size
  920.         mov     edi,esi
  921.  
  922.         cmp     ecx,ebx         ;…᫨ ã ­ á ¯®§¨æ¨ï ªãàá®à  = ⥪ã饬ã à §¬¥àã ­ ¯¥ç â ­­ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®­æ¥
  923.         je      edit_box_key.In_k
  924.  
  925.         test    dword bp_flags,ed_insert ;IF insert is enable  â.ª. edi ¨§¬¥­¥­  ¤à¥á㥬 ç¥à¥§ ebp
  926.         jne     edit_box_key.ins_v
  927. ;clear
  928. pusha
  929.         mov     edi,ebp
  930.         mov     ebp,ed_size
  931.         call    edit_box_key.clear_bg
  932. popa
  933.         sub     ecx,ebx         ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥­¨ï.
  934.         inc     edi             ;‘¬¥á⨬ ­ è¨ ᨬ¢®«ë ¢ ¯à ¢®
  935.         std
  936.         inc     ecx
  937.    @@:  
  938.         ;--------
  939.         lodsb
  940.         stosb
  941.         ;--------
  942.         loop    @b
  943. edit_box_key.In_k:  
  944.         cld
  945.         pop eax
  946.         mov al,ah
  947.         stosb
  948.         pop edi
  949. ; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
  950.         ; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
  951.         inc      dword ed_size
  952.         inc      dword ed_pos
  953.         call    edit_box_key.draw_all2
  954.         jmp     edit_box_key.shift
  955. }
  956. macro use_work_key
  957. {
  958. edit_box_key.insert: test   word ed_flags,ed_insert ;not    word ed_insert
  959.          je     @f
  960.          and    word ed_flags,ed_insert_cl
  961.  
  962.         jmp     edit_box.editbox_exit
  963. @@:
  964.         or      word ed_flags,ed_insert
  965.         jmp     edit_box.editbox_exit
  966. edit_box_key.ins_v:
  967. ;        dec     dword [ebp+48];ed_size    ;processing is insert
  968.         dec     dword bp_size
  969.         sub     esi,ecx
  970.         add     esi,ebx
  971.         mov     edi,esi
  972. ;clear
  973. pusha
  974.         mov     edi,ebp
  975.         mov     ebp,ed_pos
  976.         call    edit_box_key.clear_bg
  977. popa
  978.         jmp     edit_box_key.In_k
  979. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  980. edit_box_key.delete:        
  981.         mov     edx,ed_size
  982.         mov     ecx,ed_pos
  983.         cmp     edx,ecx
  984.         jg      edit_box_key.bac_del
  985.         test    word ed_flags,ed_shift_on
  986.         jne     edit_box_key.del_bac
  987.         popad
  988.         ret     4
  989. edit_box_key.bac_del:      
  990.         call    edit_box_key.del_char
  991.         jmp     edit_box_key.draw_all
  992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
  993. ;--- ­ ¦ â  ª« ¢¨è  backspace ---
  994. edit_box_key.backspace:
  995.         ; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
  996.         mov     ecx,ed_pos
  997.         test    ecx,ecx
  998.         jnz     edit_box_key.del_bac
  999.         test    word ed_flags,ed_shift_on
  1000.         jne     edit_box_key.bac_del
  1001.         popad
  1002.         ret     4
  1003.  
  1004. edit_box_key.del_bac:
  1005.         mov     edx,ed_size
  1006.         cmp     edx,ecx ;if ed_pos=ed_size
  1007.         je      @f
  1008.         dec     ecx
  1009.         call    edit_box_key.del_char
  1010. @@:     test    word ed_flags,ed_shift_on
  1011.         jne     edit_box_key.bac_del
  1012.         dec      dword ed_pos
  1013. edit_box_key.draw_all:
  1014.         push    edit_box_key.shift;.draw_cursor_text;eax
  1015.  
  1016.         test    word ed_flags,ed_shift_on
  1017.         je      @f
  1018.         mov     eax,dword ed_shift_pos
  1019.         mov     ebx,ed_size
  1020.         sub     ebx,eax
  1021.         mov     ed_size,ebx
  1022.  
  1023.         mov     ebp,ed_color
  1024.         call    edit_box.clear_cursor
  1025.         call    edit_box.check_offset
  1026.         call    edit_box.draw_bg
  1027.         ret
  1028. @@:     dec      dword ed_size
  1029.  
  1030. edit_box_key.draw_all2:
  1031.         and    word ed_flags,ed_shift_cl
  1032.         mov     ebp,ed_color
  1033.         call    edit_box.clear_cursor
  1034.         call    edit_box.check_offset
  1035.         mov     ebp,ed_size
  1036.         call    edit_box_key.clear_bg
  1037.         ret
  1038. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1039. ;--- ­ ¦ â  ª« ¢¨è  left ---
  1040. edit_box_key.left:  
  1041.         mov     ebx,ed_pos
  1042.         test    ebx,ebx
  1043.         jz      edit_box_key.sh_st_of
  1044.         or      word ed_flags,ed_left_fl
  1045.         call    edit_box_key.sh_first_sh
  1046.         dec      dword ed_pos
  1047.         call    edit_box_key.sh_enable
  1048.         jmp     edit_box.draw_cursor_text
  1049. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1050. ;--- ­ ¦ â  ª« ¢¨è  right ---
  1051. edit_box_key.right:
  1052.         mov     ebx,ed_pos
  1053.         cmp     ebx,ed_size
  1054.         je      edit_box_key.sh_st_of
  1055.         and     word ed_flags,ed_right_fl
  1056.         call    edit_box_key.sh_first_sh
  1057.         inc     dword  ed_pos
  1058.         call    edit_box_key.sh_enable
  1059.         jmp     edit_box.draw_cursor_text
  1060. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1061. edit_box_key.home:  
  1062.         mov     ebx,ed_pos
  1063.         test    ebx,ebx
  1064.         jz      edit_box_key.sh_st_of
  1065.         call    edit_box_key.sh_first_sh
  1066.         xor     eax,eax
  1067.         mov     ed_pos,eax
  1068.         call    edit_box_key.sh_home_end
  1069.         jmp     edit_box.draw_cursor_text
  1070. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1071. edit_box_key.end:  
  1072.         mov     ebx,ed_pos
  1073.         cmp     ebx,dword ed_size
  1074.         je      edit_box_key.sh_st_of
  1075.         call    edit_box_key.sh_first_sh
  1076.         mov     eax,ed_size
  1077.         mov     ed_pos,eax
  1078.         call    edit_box_key.sh_home_end
  1079.         jmp     edit_box.draw_cursor_text
  1080. }
  1081.  
  1082. macro use_mouse_func
  1083. {
  1084. ;----------------------------------------------------------
  1085. ;--- Ž¡à ¡®âª  .mouse_wigwag
  1086. ;----------------------------------------------------------
  1087. edit_box_mouse.mouse_wigwag:
  1088.         shr     eax,16
  1089.         or      word ed_flags,ed_shift_bac+ed_shift_on+ed_shift
  1090. ;;;;;;;;;;;;;;;;;;
  1091. ;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ª®£¤  ¯à®¨á室¨â ¢ë室 §  ¯à¥¤¥«ë editbox
  1092. ;;;;;;;;;;;;;;;;;;
  1093.         test    ax,0x8000
  1094.         jnz     edit_box_mouse.mleft
  1095.  
  1096.         mov     ebx,ed_left
  1097.         cmp     eax,ebx
  1098.         jb      edit_box_mouse.mleft
  1099.  
  1100.         add     ebx,ed_width
  1101.         cmp     eax,ebx
  1102.         ja      edit_box_mouse.mright
  1103.  
  1104.         sub     ebx,ed_width
  1105.  
  1106.         xor     edx,edx
  1107.         sub     eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨­ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨­ âë ¤® editbox ¯® ®á¨ å
  1108.         mov     ebx,6
  1109.         div     ebx
  1110. ;;;;;;;;;;;;;;;;;;
  1111. ;;¯à®æ¥¤ãà  ®¡à ¡®âª¨ ¯®«®¦¥­¨ï ¢ë¤¥«¥­­®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox
  1112. ;;;;;;;;;;;;;;;;;;
  1113. ;®«ã稫¨ ª®®à¤¨­ âë ¢ eax ¬ë誨, â.¥. ªã¤  ®­  ¯¥à¥¬¥á⨫ áì
  1114. ;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
  1115.         add     eax,ed_offset   ;¤®¡ ¢¨¬ ᬥ饭¨¥
  1116.         cmp     eax,dword ed_size       ;¥á«¨ ¢ë諨 §  ¯à¥¤¥«ë, â® ­¨ç¥£® ­¥ ¤¥« âì
  1117.         ja      edit_box_mouse.mwigvag
  1118. edit_box_mouse.mdraw:
  1119.         mov     dword   ed_pos,eax ;á®åà ­¨¬ ­®¢®¥ §­ ç¥­¨¥
  1120. ;¨á®¢ ­¨¥ § ªà è¥­ëå ¯àאַ㣮«ì­¨ª®¢ ¨ ®ç¨á⪠ ¨å
  1121.         mov     ecx,dword       ed_shift_pos
  1122.         mov     ebx,dword       ed_shift_pos_old
  1123.         mov     dword   ed_shift_pos_old,eax    ;¢­¥á¥¬ ­®¢®¥ §­ ç¥­¨¥ áâ à®© ¯®§¨æ¨¨ ªãàá®à 
  1124. ;¯à®¢¥àª  ¨ à¨á®¢ ­¨¥ § ªà è¥­ëå ®¡« á⥩
  1125.         cmp     ecx,ebx         ;¢ëïá­ï¥¬ ªã¤  ¡ë«® ¤¢¨¦¥­¨¥ ­  ®¤¨­ è £ ­ § ¤
  1126.         je      edit_box_mouse.m1_shem        ;¤¢¨¦¥­¨ï ­¥ ¡ë«® à ­¥¥
  1127.         jb      edit_box_mouse.msmaller       ;¤¢¨¦¥­¨¥ ¡ë«® ->
  1128.         cmp     ebx,eax         ;¤¢¨¦¥­¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤  ¤¢¨¦¥­¨¥ ¯à®¨á室¨â
  1129.         ja      edit_box_mouse.m1_shem        ;¥á«¨ ¡ë«® ¤¢¨¦¥­¨¥ <- â® ­ã¦­® § ªà á¨âì ®¡« áâì
  1130.         je      edit_box_mouse.mwigvag        ;¥á«¨ ¨§¬¥­¥­¨ï ­¥ ¡ë«®, â® ­¨ç¥£® ­¥ ¤¥« âì
  1131.         mov     ebp,ed_color    ;âã⠭㦭® ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old
  1132. ;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
  1133.         call    edit_box_key.sh_cl_
  1134.         jmp     edit_box_mouse.mwigvag
  1135. edit_box_mouse.msmaller:
  1136.         cmp     ebx,eax
  1137.         jb      edit_box_mouse.m1_shem
  1138.         mov     ebp,ed_color
  1139. ;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
  1140.         call    edit_box_key.sh_cl_
  1141.         jmp     edit_box_mouse.mwigvag
  1142. ;alike  =
  1143. edit_box_mouse.m1_shem:
  1144.         mov     ebp,shift_color
  1145. ;¢å®¤­ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos
  1146.         mov     ebx,ecx
  1147.         call    edit_box_key.sh_cl_
  1148.         jmp     edit_box_mouse.mwigvag
  1149. edit_box_mouse.mwigvag:
  1150.         and     word ed_flags,ed_shift_mcl
  1151.         jmp     edit_box.draw_cursor_text
  1152. ;       popa
  1153. ;       ret
  1154. edit_box_mouse.mleft:
  1155.         mov     eax,ed_pos
  1156.         cmp     eax,0                                        
  1157.         jbe      edit_box_mouse.mwigvag
  1158.         dec     eax
  1159.         call    edit_box.check_offset
  1160.         push    eax
  1161.         mov     ebx,ed_shift_pos
  1162.         mov     ebp,shift_color
  1163.         call    edit_box_key.sh_cl_
  1164.         pop     eax
  1165.         jmp     edit_box_mouse.mdraw
  1166. edit_box_mouse.mright:
  1167.         mov     eax,ed_pos
  1168.         mov     ebx,ed_size
  1169.         cmp     eax,ebx
  1170.         jae     edit_box_mouse.mwigvag
  1171.         inc     eax
  1172.         call    edit_box.check_offset
  1173.         mov     ebx,ed_shift_pos
  1174.         mov     ebp,shift_color
  1175.         push    eax
  1176.         call    edit_box_key.sh_cl_
  1177.         pop     eax
  1178.         jmp     edit_box_mouse.mdraw  
  1179. }
  1180.  
  1181. macro use_work_mouse
  1182. ;----------------------------------------------------------
  1183. ;--- € ­¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §­ë¥ áâ®à®­ë?
  1184. ;----------------------------------------------------------
  1185. {
  1186.         test    word ed_flags,ed_mouse_on
  1187.         jne     edit_box_mouse.mouse_wigwag
  1188. ;----------------------------------------------------------
  1189. ;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
  1190. ;----------------------------------------------------------
  1191.         mov     ebx,ed_top
  1192.         cmp     ax,bx
  1193.         jl      edit_box_mouse._blur;.mouse_end_no_focus
  1194.        
  1195.         add     ebx,ed_height
  1196.         cmp     ax,bx
  1197.         jg      edit_box_mouse._blur;.mouse_end_no_focus
  1198.  
  1199.         shr     eax,16
  1200.  
  1201.         mov     ebx,ed_left
  1202.         cmp     ax,bx
  1203.         jl      edit_box_mouse._blur;.mouse_end_no_focus
  1204.  
  1205.         add     ebx,ed_width
  1206.  
  1207.         cmp     ax,bx
  1208.         jg      edit_box_mouse._blur;.mouse_end_no_focus        
  1209.  
  1210. ;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
  1211.         push    eax
  1212.         mov     ebp,ed_color
  1213.         call    edit_box.clear_cursor
  1214.         pop     eax
  1215. edit_box_mouse._mvpos:
  1216.         xor     edx,edx
  1217.         sub     eax,ed_left
  1218.  
  1219.         mov     ebx,6
  1220.         div     bx
  1221.         add     eax,ed_offset
  1222.         cmp     eax,ed_size
  1223.         jna     edit_box_mouse._mshift
  1224.         mov     eax,ed_size
  1225.  
  1226. edit_box_mouse._mshift:
  1227. ;;;;;;;
  1228. ;;‘¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥­¨ï ¯® shift
  1229. ;;;;;;;
  1230.         test    word ed_flags,ed_shift_bac
  1231.         je      @f
  1232.         mov     ebp,dword       ed_color
  1233.         mov     ebx,dword ed_shift_pos
  1234.         push    eax
  1235.         call    edit_box_key.sh_cl_
  1236.         and     word ed_flags,ed_shift_bac_cl
  1237.         pop     eax
  1238. @@:    
  1239.         test    word ed_flags,ed_mouse_on
  1240.         jne     @f
  1241.        
  1242.         mov     dword ed_shift_pos,eax
  1243.         or      word  ed_flags,ed_mouse_on
  1244.         mov     dword ed_pos,eax
  1245.  
  1246. ;        mov     dword [mouse_flag],edi          ;ãáâ ­®¢¨¬ ¨¤¥­â¨ä¨ª â®à
  1247.  
  1248.         mov     ebx,dword ed_mouse_variable
  1249.         push    edi
  1250.         pop     dword [ebx]
  1251.  
  1252.  
  1253.  
  1254.  
  1255.         bts     word ed_flags,1                 ;ãáâ ­®¢ª  䮪ãá 
  1256.         jmp     edit_box_mouse.m_sh
  1257. @@:            
  1258.         cmp     eax,dword ed_shift_pos  ;¥á«¨ ¯®§¨æ¨¨ ­¥ ¨§¬¥­¨«¨áì
  1259.         je      edit_box.editbox_exit
  1260.         mov     ed_pos,eax
  1261.         mov     ebp,dword shift_color
  1262.         mov     ebx,dword ed_shift_pos
  1263.         call    edit_box_key.sh_cl_
  1264.         or      word ed_flags,ed_mous_adn_b     ;ãáâ ­®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on +
  1265. edit_box_mouse.m_sh:  
  1266.         call    edit_box.draw_text
  1267.         call    edit_box.draw_cursor
  1268. ;----------------------------------------------------------
  1269. ;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
  1270. ;----------------------------------------------------------
  1271.         jmp     edit_box_mouse.drc
  1272. edit_box_mouse._blur:
  1273.         test    word ed_flags,ed_always_focus
  1274.         jne     edit_box.editbox_exit
  1275.         btr     word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  1276.         jnc     edit_box.editbox_exit
  1277.  
  1278.         mov     ebp,ed_color
  1279.         call    edit_box.clear_cursor
  1280. edit_box_mouse.drc:   call    edit_box.draw_border
  1281.         jmp     edit_box.editbox_exit
  1282. }
  1283.  
  1284.  
  1285. ; Œ ªà®á ¢ë室 
  1286. macro edit_ex
  1287. {
  1288. popad          
  1289. ret
  1290. }
  1291. macro debug
  1292. {
  1293.         ;-----------  ®â« ¤ª 
  1294.         pushad
  1295. ;        mov     dword [ed_buffer.2],0
  1296. ;        mov     eax,edi
  1297.         mov eax,dword [ed_buffer.2]
  1298.         mov edi,ed_buffer.3
  1299.         call .str
  1300.         ;à¨á®¢ ­¨¥ ä®­ 
  1301.         mov eax,13
  1302.         mov ebx,178*65536+70
  1303.         mov ecx,28*65536+10
  1304.         xor edx,edx
  1305.         int 0x40
  1306.         ;¢ë¢®¤ §­ ç¥­¨ï ­  íªà ­
  1307.         mov eax,4
  1308.         mov ebx,180*65536+30
  1309.         mov ecx,0x10DDBBCC
  1310.         mov edx,ed_buffer.3
  1311.         mov esi,8
  1312.         int 0x40
  1313.         popad
  1314.         ;----------- ®â« ¤ª 
  1315. }
  1316. macro   debug_func
  1317. {
  1318. .str:
  1319.         mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  1320.          ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  1321.         cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  1322.         jb @f
  1323.         xor edx,edx  ;®ç¨áâ¨âì edx
  1324.         div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  1325.         push edx     ;¯®«®¦¨âì ¢ á⥪
  1326.         ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  1327.         call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  1328.         pop eax
  1329.         @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  1330.         ;sbb al,$69  ;- ç¥áâ­® ¤ ­­ ï ¨­áâàãªæ¨ï ¬¥­ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ­¥ §­ î ª ª íâ® à ¡®â ¥â
  1331.         ;das        ;¯®á«¥ ¤ ­­®© ª®¬ ­¤ë ª ª ¡ë ¯à®¨á室¨â 㬥­ì襭¨¥ al ­  66h  (¢ ª­¨£¥ ­ ¯¨á ­® ¤à㣮¥)
  1332.         or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  1333.         stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  1334.  
  1335.         ret         ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  1336. }
  1337.  
  1338. ed_struc_size=76
  1339. struc  edit_box width,left,top,color,shift_color,focus_border_color,\
  1340.        blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
  1341. {
  1342. .width dd width
  1343. .left dd left
  1344. .top dd top
  1345. .color dd color
  1346. .shift_color dd shift_color
  1347. .focus_border_color dd focus_border_color
  1348. .blur_border_color dd blur_border_color
  1349. .text_color dd text_color
  1350. .max dd max
  1351. .text dd text
  1352. .mouse_variable dd mouse_variable
  1353. .flags dd flags+0
  1354. .size dd size+0
  1355. .pos dd pos+0
  1356. .offset dd 0
  1357. .cl_curs_x dd 0
  1358. .cl_curs_y dd 0
  1359. .shift   dd 0
  1360. .shift_old   dd 0
  1361. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1362. ;Bit mask from editbox
  1363. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1364. ed_figure_only= 1000000000000000b   ;®¤­¨ ᨬ¢®«ë
  1365. ed_always_focus= 100000000000000b
  1366. ed_focus=                     10b   ;䮪ãá ¯à¨«®¦¥­¨ï
  1367. ed_shift_on=                1000b   ;¥á«¨ ­¥ ãáâ ­®¢«¥­ -§­ ç¨â ¢¯¥à¢ë¥ ­ ¦ â shift,¥á«¨ ¡ë« ãáâ ­®¢«¥­, §­ ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
  1368. ed_shift_on_off=1111111111110111b
  1369. ed_shift=                    100b   ;¢ª«îç ¥âáï ¯à¨ ­ ¦ â¨¨ ­  shift â.¥. ¥á«¨ ­ ¦¨¬ î
  1370. ed_shift_off=   1111111111111011b
  1371. ed_shift_bac=              10000b   ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥­®£® shift â.¥. ¯à¨ ãáâ ­®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥­¨¥
  1372. ed_shift_bac_cl=1111111111101111b   ;®ç¨á⪠ ¯à¨ 㤠«¥­¨¨ ¢ë¤¥«¥­¨ï
  1373. ed_shift_cl=    1111111111100011b
  1374. ed_shift_mcl=   1111111111111011b
  1375. ed_left_fl=               100000b
  1376. ed_right_fl=    1111111111011111b
  1377. ed_offset_fl=            1000000b
  1378. ed_offset_cl=   1111111110111111b
  1379. ed_insert=              10000000b
  1380. ed_insert_cl=   1111111101111111b
  1381. ed_mouse_on =          100000000b
  1382. ed_mous_adn_b=         100011000b
  1383. ed_mouse_on_off=1111111011111111b
  1384. ed_height=14 ; ¢ëá®â 
  1385.  
  1386. }
  1387.