Subversion Repositories Kolibri OS

Rev

Rev 1547 | Rev 4263 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1547 Rev 1728
1
;
1
;
2
;   ZKEY. Version 0.5.
2
;   ZKEY. Version 0.5.
3
;   Virtual keyboard for KolibriOS.
3
;   Virtual keyboard for KolibriOS.
4
;
4
;
5
;   Author:         Asper
5
;   Author:         Asper
6
;   Date of issue:  26.08.2009
6
;   Date of issue:  26.08.2009
7
;   Compiler:       FASM
7
;   Compiler:       FASM
8
;   Target:         KolibriOS
8
;   Target:         KolibriOS
9
;
9
;
10
 
10
 
11
use32
11
use32
12
	org	0x0
12
	org	0x0
13
 
13
 
14
	db	'MENUET00'	; 8 byte id
14
	db	'MENUET00'	; 8 byte id
15
	dd	38		; required os
15
	dd	38		; required os
16
	dd	STARTAPP	; program start
16
	dd	STARTAPP	; program start
17
	dd	I_END		; program image size
17
	dd	I_END		; program image size
18
	dd	0x100000	; required amount of memory
18
	dd	0x100000	; required amount of memory
19
	dd	0x00000000	; reserved=no extended header
19
	dd	0x00000000	; reserved=no extended header
20
 
20
 
21
include "aspAPI.inc"
21
include "ASPAPI.INC"
22
 
22
 
23
N_KEYCOLOR equ 0x00677889 ; Normal button color
23
N_KEYCOLOR equ 0x00677889 ; Normal button color
24
C_KEYCOLOR equ 0x00344556 ; Control button color
24
C_KEYCOLOR equ 0x00344556 ; Control button color
25
L_KEYCOLOR equ 0x00258778 ; Lock button color
25
L_KEYCOLOR equ 0x00258778 ; Lock button color
26
TEXTCOLOR  equ 0x00FFFFFF ; Button caption color
26
TEXTCOLOR  equ 0x00FFFFFF ; Button caption color
27
 
27
 
28
 
28
 
29
STARTAPP:
29
STARTAPP:
30
	mov	ecx, 1	   ; to send scancodes.
30
	mov	ecx, 1	   ; to send scancodes.
31
	call	set_keyboard_mode
31
	call	set_keyboard_mode
32
 
32
 
33
	call	reload_ascii_keymap
33
	call	reload_ascii_keymap
34
	call	draw_window
34
	call	draw_window
35
	jmp	get_zkey_window_slot_number
35
	jmp	get_zkey_window_slot_number
36
 
36
 
37
draw_window:
37
draw_window:
38
  test	 byte [red_type], 1
38
  test	 byte [red_type], 1
39
  jnz	 @f
39
  jnz	 @f
40
  test	 byte [red_type], 2
40
  test	 byte [red_type], 2
41
  jnz	 .draw_switch_button
41
  jnz	 .draw_switch_button
42
  start_draw_window 100,370,600,210,0x04224466,labelt, 35;labellen-labelt
42
  start_draw_window 100,370,600,210,0x04224466,labelt, 35;labellen-labelt
43
 
43
 
44
  stdcall draw_button, 15,50,23,20,2,N_KEYCOLOR,keyText,3,TEXTCOLOR		; Esc
44
  stdcall draw_button, 15,50,23,20,2,N_KEYCOLOR,keyText,3,TEXTCOLOR		; Esc
45
 
45
 
46
  stdcall draw_button, 70,50,23,20,3,N_KEYCOLOR,keyText+3,2,TEXTCOLOR	; F1
46
  stdcall draw_button, 70,50,23,20,3,N_KEYCOLOR,keyText+3,2,TEXTCOLOR	; F1
47
  stdcall draw_button, 95,50,23,20,4,N_KEYCOLOR,keyText+5,2,TEXTCOLOR	; F2
47
  stdcall draw_button, 95,50,23,20,4,N_KEYCOLOR,keyText+5,2,TEXTCOLOR	; F2
48
  stdcall draw_button, 120,50,23,20,5,N_KEYCOLOR,keyText+7,2,TEXTCOLOR	; F3
48
  stdcall draw_button, 120,50,23,20,5,N_KEYCOLOR,keyText+7,2,TEXTCOLOR	; F3
49
  stdcall draw_button, 145,50,23,20,6,N_KEYCOLOR,keyText+9,2,TEXTCOLOR	; F4
49
  stdcall draw_button, 145,50,23,20,6,N_KEYCOLOR,keyText+9,2,TEXTCOLOR	; F4
50
 
50
 
51
  stdcall draw_button, 183,50,23,20,7,N_KEYCOLOR,keyText+11,2,TEXTCOLOR ; F5
51
  stdcall draw_button, 183,50,23,20,7,N_KEYCOLOR,keyText+11,2,TEXTCOLOR ; F5
52
  stdcall draw_button, 208,50,23,20,8,N_KEYCOLOR,keyText+13,2,TEXTCOLOR ; F6
52
  stdcall draw_button, 208,50,23,20,8,N_KEYCOLOR,keyText+13,2,TEXTCOLOR ; F6
53
  stdcall draw_button, 233,50,23,20,9,N_KEYCOLOR,keyText+15,2,TEXTCOLOR ; F7
53
  stdcall draw_button, 233,50,23,20,9,N_KEYCOLOR,keyText+15,2,TEXTCOLOR ; F7
54
  stdcall draw_button, 258,50,23,20,10,N_KEYCOLOR,keyText+17,2,TEXTCOLOR ; F8
54
  stdcall draw_button, 258,50,23,20,10,N_KEYCOLOR,keyText+17,2,TEXTCOLOR ; F8
55
 
55
 
56
  stdcall draw_button, 296,50,23,20,11,N_KEYCOLOR,keyText+19,2,TEXTCOLOR ; F9
56
  stdcall draw_button, 296,50,23,20,11,N_KEYCOLOR,keyText+19,2,TEXTCOLOR ; F9
57
  stdcall draw_button, 321,50,23,20,12,N_KEYCOLOR,keyText+21,3,TEXTCOLOR ; F10
57
  stdcall draw_button, 321,50,23,20,12,N_KEYCOLOR,keyText+21,3,TEXTCOLOR ; F10
58
  stdcall draw_button, 346,50,23,20,13,N_KEYCOLOR,keyText+24,3,TEXTCOLOR ; F11
58
  stdcall draw_button, 346,50,23,20,13,N_KEYCOLOR,keyText+24,3,TEXTCOLOR ; F11
59
  stdcall draw_button, 371,50,23,20,14,N_KEYCOLOR,keyText+27,3,TEXTCOLOR ; F12
59
  stdcall draw_button, 371,50,23,20,14,N_KEYCOLOR,keyText+27,3,TEXTCOLOR ; F12
60
@@:
60
@@:
61
  stdcall draw_button, 15,80,23,20,15,N_KEYCOLOR,ascii_keymap+41,1,TEXTCOLOR ;keyText+30,2,TEXTCOLOR     ; ~ð
61
  stdcall draw_button, 15,80,23,20,15,N_KEYCOLOR,ascii_keymap+41,1,TEXTCOLOR ;keyText+30,2,TEXTCOLOR     ; ~ð
62
  stdcall draw_button, 40,80,23,20,16,N_KEYCOLOR,ascii_keymap+2,1,TEXTCOLOR ;keyText+32,2,TEXTCOLOR      ; 1!
62
  stdcall draw_button, 40,80,23,20,16,N_KEYCOLOR,ascii_keymap+2,1,TEXTCOLOR ;keyText+32,2,TEXTCOLOR      ; 1!
63
  stdcall draw_button, 65,80,23,20,17,N_KEYCOLOR,ascii_keymap+3,1,TEXTCOLOR ;keyText+34,2,TEXTCOLOR      ; 2@
63
  stdcall draw_button, 65,80,23,20,17,N_KEYCOLOR,ascii_keymap+3,1,TEXTCOLOR ;keyText+34,2,TEXTCOLOR      ; 2@
64
  stdcall draw_button, 90,80,23,20,18,N_KEYCOLOR,ascii_keymap+4,1,TEXTCOLOR ;keyText+36,2,TEXTCOLOR      ; 3#
64
  stdcall draw_button, 90,80,23,20,18,N_KEYCOLOR,ascii_keymap+4,1,TEXTCOLOR ;keyText+36,2,TEXTCOLOR      ; 3#
65
  stdcall draw_button, 115,80,23,20,19,N_KEYCOLOR,ascii_keymap+5,1,TEXTCOLOR ;keyText+38,2,TEXTCOLOR     ; 4$
65
  stdcall draw_button, 115,80,23,20,19,N_KEYCOLOR,ascii_keymap+5,1,TEXTCOLOR ;keyText+38,2,TEXTCOLOR     ; 4$
66
  stdcall draw_button, 140,80,23,20,20,N_KEYCOLOR,ascii_keymap+6,1,TEXTCOLOR ;keyText+40,2,TEXTCOLOR     ; 5%
66
  stdcall draw_button, 140,80,23,20,20,N_KEYCOLOR,ascii_keymap+6,1,TEXTCOLOR ;keyText+40,2,TEXTCOLOR     ; 5%
67
  stdcall draw_button, 165,80,23,20,21,N_KEYCOLOR,ascii_keymap+7,1,TEXTCOLOR ;keyText+42,2,TEXTCOLOR     ; 6^
67
  stdcall draw_button, 165,80,23,20,21,N_KEYCOLOR,ascii_keymap+7,1,TEXTCOLOR ;keyText+42,2,TEXTCOLOR     ; 6^
68
  stdcall draw_button, 190,80,23,20,22,N_KEYCOLOR,ascii_keymap+8,1,TEXTCOLOR ;keyText+44,2,TEXTCOLOR     ; 7&
68
  stdcall draw_button, 190,80,23,20,22,N_KEYCOLOR,ascii_keymap+8,1,TEXTCOLOR ;keyText+44,2,TEXTCOLOR     ; 7&
69
  stdcall draw_button, 215,80,23,20,23,N_KEYCOLOR,ascii_keymap+9,1,TEXTCOLOR ;keyText+46,2,TEXTCOLOR     ; 8*
69
  stdcall draw_button, 215,80,23,20,23,N_KEYCOLOR,ascii_keymap+9,1,TEXTCOLOR ;keyText+46,2,TEXTCOLOR     ; 8*
70
  stdcall draw_button, 240,80,23,20,24,N_KEYCOLOR,ascii_keymap+10,1,TEXTCOLOR ;keyText+48,2,TEXTCOLOR    ; 9(
70
  stdcall draw_button, 240,80,23,20,24,N_KEYCOLOR,ascii_keymap+10,1,TEXTCOLOR ;keyText+48,2,TEXTCOLOR    ; 9(
71
  stdcall draw_button, 265,80,23,20,25,N_KEYCOLOR,ascii_keymap+11,1,TEXTCOLOR ;keyText+50,2,TEXTCOLOR    ; 0)
71
  stdcall draw_button, 265,80,23,20,25,N_KEYCOLOR,ascii_keymap+11,1,TEXTCOLOR ;keyText+50,2,TEXTCOLOR    ; 0)
72
  stdcall draw_button, 290,80,23,20,26,N_KEYCOLOR,ascii_keymap+12,1,TEXTCOLOR ;keyText+52,2,TEXTCOLOR    ; -_
72
  stdcall draw_button, 290,80,23,20,26,N_KEYCOLOR,ascii_keymap+12,1,TEXTCOLOR ;keyText+52,2,TEXTCOLOR    ; -_
73
  stdcall draw_button, 315,80,23,20,27,N_KEYCOLOR,ascii_keymap+13,1,TEXTCOLOR ;keyText+54,2,TEXTCOLOR    ; =+
73
  stdcall draw_button, 315,80,23,20,27,N_KEYCOLOR,ascii_keymap+13,1,TEXTCOLOR ;keyText+54,2,TEXTCOLOR    ; =+
74
  stdcall draw_button, 340,80,23,20,28,N_KEYCOLOR,ascii_keymap+43,1,TEXTCOLOR ;keyText+56,2,TEXTCOLOR    ; \|
74
  stdcall draw_button, 340,80,23,20,28,N_KEYCOLOR,ascii_keymap+43,1,TEXTCOLOR ;keyText+56,2,TEXTCOLOR    ; \|
75
  stdcall draw_button, 365,80,30,20,29,N_KEYCOLOR,keyText+58,4,TEXTCOLOR ; bksp
75
  stdcall draw_button, 365,80,30,20,29,N_KEYCOLOR,keyText+58,4,TEXTCOLOR ; bksp
76
 
76
 
77
  stdcall draw_button, 15 ,103,33,20,30,N_KEYCOLOR,keyText+62,3,TEXTCOLOR	; Tab
77
  stdcall draw_button, 15 ,103,33,20,30,N_KEYCOLOR,keyText+62,3,TEXTCOLOR	; Tab
78
  stdcall draw_button, 50 ,103,23,20,31,N_KEYCOLOR,ascii_keymap+16,1,TEXTCOLOR ;keyText+65,2,TEXTCOLOR   ; Q‰
78
  stdcall draw_button, 50 ,103,23,20,31,N_KEYCOLOR,ascii_keymap+16,1,TEXTCOLOR ;keyText+65,2,TEXTCOLOR   ; Q‰
79
  stdcall draw_button, 75 ,103,23,20,32,N_KEYCOLOR,ascii_keymap+17,1,TEXTCOLOR ;keyText+67,2,TEXTCOLOR   ; W–
79
  stdcall draw_button, 75 ,103,23,20,32,N_KEYCOLOR,ascii_keymap+17,1,TEXTCOLOR ;keyText+67,2,TEXTCOLOR   ; W–
80
  stdcall draw_button, 100,103,23,20,33,N_KEYCOLOR,ascii_keymap+18,1,TEXTCOLOR ;keyText+69,2,TEXTCOLOR   ; E“
80
  stdcall draw_button, 100,103,23,20,33,N_KEYCOLOR,ascii_keymap+18,1,TEXTCOLOR ;keyText+69,2,TEXTCOLOR   ; E“
81
  stdcall draw_button, 125,103,23,20,34,N_KEYCOLOR,ascii_keymap+19,1,TEXTCOLOR ;keyText+71,2,TEXTCOLOR   ; RŠ
81
  stdcall draw_button, 125,103,23,20,34,N_KEYCOLOR,ascii_keymap+19,1,TEXTCOLOR ;keyText+71,2,TEXTCOLOR   ; RŠ
82
  stdcall draw_button, 150,103,23,20,35,N_KEYCOLOR,ascii_keymap+20,1,TEXTCOLOR ;keyText+73,2,TEXTCOLOR   ; T…
82
  stdcall draw_button, 150,103,23,20,35,N_KEYCOLOR,ascii_keymap+20,1,TEXTCOLOR ;keyText+73,2,TEXTCOLOR   ; T…
83
  stdcall draw_button, 175,103,23,20,36,N_KEYCOLOR,ascii_keymap+21,1,TEXTCOLOR ;keyText+75,2,TEXTCOLOR   ; Y
83
  stdcall draw_button, 175,103,23,20,36,N_KEYCOLOR,ascii_keymap+21,1,TEXTCOLOR ;keyText+75,2,TEXTCOLOR   ; Y
84
  stdcall draw_button, 200,103,23,20,37,N_KEYCOLOR,ascii_keymap+22,1,TEXTCOLOR ;keyText+77,2,TEXTCOLOR   ; Uƒ
84
  stdcall draw_button, 200,103,23,20,37,N_KEYCOLOR,ascii_keymap+22,1,TEXTCOLOR ;keyText+77,2,TEXTCOLOR   ; Uƒ
85
  stdcall draw_button, 225,103,23,20,38,N_KEYCOLOR,ascii_keymap+23,1,TEXTCOLOR ;keyText+79,2,TEXTCOLOR   ; I˜
85
  stdcall draw_button, 225,103,23,20,38,N_KEYCOLOR,ascii_keymap+23,1,TEXTCOLOR ;keyText+79,2,TEXTCOLOR   ; I˜
86
  stdcall draw_button, 250,103,23,20,39,N_KEYCOLOR,ascii_keymap+24,1,TEXTCOLOR ;keyText+81,2,TEXTCOLOR   ; O™
86
  stdcall draw_button, 250,103,23,20,39,N_KEYCOLOR,ascii_keymap+24,1,TEXTCOLOR ;keyText+81,2,TEXTCOLOR   ; O™
87
  stdcall draw_button, 275,103,23,20,40,N_KEYCOLOR,ascii_keymap+25,1,TEXTCOLOR ;keyText+83,2,TEXTCOLOR   ; P‡
87
  stdcall draw_button, 275,103,23,20,40,N_KEYCOLOR,ascii_keymap+25,1,TEXTCOLOR ;keyText+83,2,TEXTCOLOR   ; P‡
88
  stdcall draw_button, 300,103,23,20,41,N_KEYCOLOR,ascii_keymap+26,1,TEXTCOLOR ;keyText+85,3,TEXTCOLOR   ; [{•
88
  stdcall draw_button, 300,103,23,20,41,N_KEYCOLOR,ascii_keymap+26,1,TEXTCOLOR ;keyText+85,3,TEXTCOLOR   ; [{•
89
  stdcall draw_button, 325,103,23,20,42,N_KEYCOLOR,ascii_keymap+27,1,TEXTCOLOR ;keyText+88,3,TEXTCOLOR   ; ]}š
89
  stdcall draw_button, 325,103,23,20,42,N_KEYCOLOR,ascii_keymap+27,1,TEXTCOLOR ;keyText+88,3,TEXTCOLOR   ; ]}š
90
  stdcall draw_button, 350,103,45,43,43,N_KEYCOLOR,keyText+91,5,TEXTCOLOR	; Enter
90
  stdcall draw_button, 350,103,45,43,43,N_KEYCOLOR,keyText+91,5,TEXTCOLOR	; Enter
91
 
91
 
92
  stdcall draw_button, 15 ,126,43,20,44,L_KEYCOLOR,keyText+96 ,4,TEXTCOLOR	; lock
92
  stdcall draw_button, 15 ,126,43,20,44,L_KEYCOLOR,keyText+96 ,4,TEXTCOLOR	; lock
93
  stdcall draw_button, 60 ,126,23,20,45,N_KEYCOLOR,ascii_keymap+30,1,TEXTCOLOR ;keyText+100,2,TEXTCOLOR  ; A”
93
  stdcall draw_button, 60 ,126,23,20,45,N_KEYCOLOR,ascii_keymap+30,1,TEXTCOLOR ;keyText+100,2,TEXTCOLOR  ; A”
94
  stdcall draw_button, 85 ,126,23,20,46,N_KEYCOLOR,ascii_keymap+31,1,TEXTCOLOR ;keyText+102,2,TEXTCOLOR  ; S›
94
  stdcall draw_button, 85 ,126,23,20,46,N_KEYCOLOR,ascii_keymap+31,1,TEXTCOLOR ;keyText+102,2,TEXTCOLOR  ; S›
95
  stdcall draw_button, 110,126,23,20,47,N_KEYCOLOR,ascii_keymap+32,1,TEXTCOLOR ;keyText+104,2,TEXTCOLOR  ; D‚
95
  stdcall draw_button, 110,126,23,20,47,N_KEYCOLOR,ascii_keymap+32,1,TEXTCOLOR ;keyText+104,2,TEXTCOLOR  ; D‚
96
  stdcall draw_button, 135,126,23,20,48,N_KEYCOLOR,ascii_keymap+33,1,TEXTCOLOR ;keyText+106,2,TEXTCOLOR  ; F€
96
  stdcall draw_button, 135,126,23,20,48,N_KEYCOLOR,ascii_keymap+33,1,TEXTCOLOR ;keyText+106,2,TEXTCOLOR  ; F€
97
  stdcall draw_button, 160,126,23,20,49,N_KEYCOLOR,ascii_keymap+34,1,TEXTCOLOR ;keyText+108,2,TEXTCOLOR  ; G
97
  stdcall draw_button, 160,126,23,20,49,N_KEYCOLOR,ascii_keymap+34,1,TEXTCOLOR ;keyText+108,2,TEXTCOLOR  ; G
98
  stdcall draw_button, 185,126,23,20,50,N_KEYCOLOR,ascii_keymap+35,1,TEXTCOLOR ;keyText+110,2,TEXTCOLOR  ; H
98
  stdcall draw_button, 185,126,23,20,50,N_KEYCOLOR,ascii_keymap+35,1,TEXTCOLOR ;keyText+110,2,TEXTCOLOR  ; H
99
  stdcall draw_button, 210,126,23,20,51,N_KEYCOLOR,ascii_keymap+36,1,TEXTCOLOR ;keyText+112,2,TEXTCOLOR  ; JŽ
99
  stdcall draw_button, 210,126,23,20,51,N_KEYCOLOR,ascii_keymap+36,1,TEXTCOLOR ;keyText+112,2,TEXTCOLOR  ; JŽ
100
  stdcall draw_button, 235,126,23,20,52,N_KEYCOLOR,ascii_keymap+37,1,TEXTCOLOR ;keyText+114,2,TEXTCOLOR  ; K‹
100
  stdcall draw_button, 235,126,23,20,52,N_KEYCOLOR,ascii_keymap+37,1,TEXTCOLOR ;keyText+114,2,TEXTCOLOR  ; K‹
101
  stdcall draw_button, 260,126,23,20,53,N_KEYCOLOR,ascii_keymap+38,1,TEXTCOLOR ;keyText+116,2,TEXTCOLOR  ; L„
101
  stdcall draw_button, 260,126,23,20,53,N_KEYCOLOR,ascii_keymap+38,1,TEXTCOLOR ;keyText+116,2,TEXTCOLOR  ; L„
102
  stdcall draw_button, 285,126,23,20,54,N_KEYCOLOR,ascii_keymap+39,1,TEXTCOLOR ;keyText+118,3,TEXTCOLOR  ; ;:†
102
  stdcall draw_button, 285,126,23,20,54,N_KEYCOLOR,ascii_keymap+39,1,TEXTCOLOR ;keyText+118,3,TEXTCOLOR  ; ;:†
103
  stdcall draw_button, 310,126,23,20,55,N_KEYCOLOR,ascii_keymap+40,1,TEXTCOLOR ;keyText+121,3,TEXTCOLOR  ; '"
103
  stdcall draw_button, 310,126,23,20,55,N_KEYCOLOR,ascii_keymap+40,1,TEXTCOLOR ;keyText+121,3,TEXTCOLOR  ; '"
104
 
104
 
105
  stdcall draw_button, 15 ,149,53,20,56,C_KEYCOLOR,keyText+124,5,TEXTCOLOR	; Shift
105
  stdcall draw_button, 15 ,149,53,20,56,C_KEYCOLOR,keyText+124,5,TEXTCOLOR	; Shift
106
  stdcall draw_button, 70 ,149,23,20,57,N_KEYCOLOR,ascii_keymap+44,1,TEXTCOLOR ;keyText+129,2,TEXTCOLOR  ; ZŸ
106
  stdcall draw_button, 70 ,149,23,20,57,N_KEYCOLOR,ascii_keymap+44,1,TEXTCOLOR ;keyText+129,2,TEXTCOLOR  ; ZŸ
107
  stdcall draw_button, 95 ,149,23,20,58,N_KEYCOLOR,ascii_keymap+45,1,TEXTCOLOR ;keyText+131,2,TEXTCOLOR  ; X—
107
  stdcall draw_button, 95 ,149,23,20,58,N_KEYCOLOR,ascii_keymap+45,1,TEXTCOLOR ;keyText+131,2,TEXTCOLOR  ; X—
108
  stdcall draw_button, 120,149,23,20,59,N_KEYCOLOR,ascii_keymap+46,1,TEXTCOLOR ;keyText+133,2,TEXTCOLOR  ; C‘
108
  stdcall draw_button, 120,149,23,20,59,N_KEYCOLOR,ascii_keymap+46,1,TEXTCOLOR ;keyText+133,2,TEXTCOLOR  ; C‘
109
  stdcall draw_button, 145,149,23,20,60,N_KEYCOLOR,ascii_keymap+47,1,TEXTCOLOR ;keyText+135,2,TEXTCOLOR  ; VŒ
109
  stdcall draw_button, 145,149,23,20,60,N_KEYCOLOR,ascii_keymap+47,1,TEXTCOLOR ;keyText+135,2,TEXTCOLOR  ; VŒ
110
  stdcall draw_button, 170,149,23,20,61,N_KEYCOLOR,ascii_keymap+48,1,TEXTCOLOR ;keyText+137,2,TEXTCOLOR  ; Bˆ
110
  stdcall draw_button, 170,149,23,20,61,N_KEYCOLOR,ascii_keymap+48,1,TEXTCOLOR ;keyText+137,2,TEXTCOLOR  ; Bˆ
111
  stdcall draw_button, 195,149,23,20,62,N_KEYCOLOR,ascii_keymap+49,1,TEXTCOLOR ;keyText+139,2,TEXTCOLOR  ; N’
111
  stdcall draw_button, 195,149,23,20,62,N_KEYCOLOR,ascii_keymap+49,1,TEXTCOLOR ;keyText+139,2,TEXTCOLOR  ; N’
112
  stdcall draw_button, 220,149,23,20,63,N_KEYCOLOR,ascii_keymap+50,1,TEXTCOLOR ;keyText+141,2,TEXTCOLOR  ; Mœ
112
  stdcall draw_button, 220,149,23,20,63,N_KEYCOLOR,ascii_keymap+50,1,TEXTCOLOR ;keyText+141,2,TEXTCOLOR  ; Mœ
113
  stdcall draw_button, 245,149,23,20,64,N_KEYCOLOR,ascii_keymap+51,1,TEXTCOLOR ;keyText+143,3,TEXTCOLOR  ; ,<
113
  stdcall draw_button, 245,149,23,20,64,N_KEYCOLOR,ascii_keymap+51,1,TEXTCOLOR ;keyText+143,3,TEXTCOLOR  ; ,<
114
  stdcall draw_button, 270,149,23,20,65,N_KEYCOLOR,ascii_keymap+52,1,TEXTCOLOR ;keyText+146,3,TEXTCOLOR  ; .>ž
114
  stdcall draw_button, 270,149,23,20,65,N_KEYCOLOR,ascii_keymap+52,1,TEXTCOLOR ;keyText+146,3,TEXTCOLOR  ; .>ž
115
  stdcall draw_button, 295,149,23,20,66,N_KEYCOLOR,ascii_keymap+53,1,TEXTCOLOR ;keyText+149,2,TEXTCOLOR  ; /?
115
  stdcall draw_button, 295,149,23,20,66,N_KEYCOLOR,ascii_keymap+53,1,TEXTCOLOR ;keyText+149,2,TEXTCOLOR  ; /?
116
 
116
 
117
  test	  byte [red_type], 1
117
  test	  byte [red_type], 1
118
  jnz	  @f
118
  jnz	  @f
119
  stdcall draw_button, 320,149,75,20,67,C_KEYCOLOR,keyText+151,5,TEXTCOLOR	; Shift
119
  stdcall draw_button, 320,149,75,20,67,C_KEYCOLOR,keyText+151,5,TEXTCOLOR	; Shift
120
 
120
 
121
  stdcall draw_button, 15 ,172,30,20,68,C_KEYCOLOR,keyText+156,4,TEXTCOLOR	; Ctrl
121
  stdcall draw_button, 15 ,172,30,20,68,C_KEYCOLOR,keyText+156,4,TEXTCOLOR	; Ctrl
122
  stdcall draw_button, 47 ,172,30,20,69,C_KEYCOLOR,keyText+160,3,TEXTCOLOR	; Win
122
  stdcall draw_button, 47 ,172,30,20,69,C_KEYCOLOR,keyText+160,3,TEXTCOLOR	; Win
123
  stdcall draw_button, 79 ,172,30,20,70,C_KEYCOLOR,keyText+163,3,TEXTCOLOR	; Alt
123
  stdcall draw_button, 79 ,172,30,20,70,C_KEYCOLOR,keyText+163,3,TEXTCOLOR	; Alt
124
  stdcall draw_button, 111,172,156,20,71,N_KEYCOLOR,keyText+166,1,TEXTCOLOR	;  Space
124
  stdcall draw_button, 111,172,156,20,71,N_KEYCOLOR,keyText+166,1,TEXTCOLOR	;  Space
125
  stdcall draw_button, 269,172,30,20,72,C_KEYCOLOR,keyText+167,3,TEXTCOLOR	; Alt
125
  stdcall draw_button, 269,172,30,20,72,C_KEYCOLOR,keyText+167,3,TEXTCOLOR	; Alt
126
  stdcall draw_button, 301,172,30,20,73,C_KEYCOLOR,keyText+170,3,TEXTCOLOR	; Win
126
  stdcall draw_button, 301,172,30,20,73,C_KEYCOLOR,keyText+170,3,TEXTCOLOR	; Win
127
  stdcall draw_button, 333,172,30,20,74,C_KEYCOLOR,keyText+173,3,TEXTCOLOR	; [=]
127
  stdcall draw_button, 333,172,30,20,74,C_KEYCOLOR,keyText+173,3,TEXTCOLOR	; [=]
128
  stdcall draw_button, 365,172,30,20,75,C_KEYCOLOR,keyText+176,4,TEXTCOLOR	; Ctrl
128
  stdcall draw_button, 365,172,30,20,75,C_KEYCOLOR,keyText+176,4,TEXTCOLOR	; Ctrl
129
 
129
 
130
  stdcall draw_button, 405,50 ,23,20,76,N_KEYCOLOR,keyText+180,3,TEXTCOLOR	; psc
130
  stdcall draw_button, 405,50 ,23,20,76,N_KEYCOLOR,keyText+180,3,TEXTCOLOR	; psc
131
  stdcall draw_button, 430,50 ,23,20,77,L_KEYCOLOR,keyText+183,3,TEXTCOLOR	; slk
131
  stdcall draw_button, 430,50 ,23,20,77,L_KEYCOLOR,keyText+183,3,TEXTCOLOR	; slk
132
  stdcall draw_button, 455,50 ,23,20,78,N_KEYCOLOR,keyText+186,3,TEXTCOLOR	; brk
132
  stdcall draw_button, 455,50 ,23,20,78,N_KEYCOLOR,keyText+186,3,TEXTCOLOR	; brk
133
  stdcall draw_button, 405,80 ,23,20,79,N_KEYCOLOR,keyText+189,3,TEXTCOLOR	; Ins
133
  stdcall draw_button, 405,80 ,23,20,79,N_KEYCOLOR,keyText+189,3,TEXTCOLOR	; Ins
134
  stdcall draw_button, 430,80 ,23,20,80,N_KEYCOLOR,keyText+192,2,TEXTCOLOR	; Hm
134
  stdcall draw_button, 430,80 ,23,20,80,N_KEYCOLOR,keyText+192,2,TEXTCOLOR	; Hm
135
  stdcall draw_button, 455,80 ,23,20,81,N_KEYCOLOR,keyText+194,3,TEXTCOLOR	; Pup
135
  stdcall draw_button, 455,80 ,23,20,81,N_KEYCOLOR,keyText+194,3,TEXTCOLOR	; Pup
136
  stdcall draw_button, 405,103 ,23,20,82,N_KEYCOLOR,keyText+197,3,TEXTCOLOR	; Del
136
  stdcall draw_button, 405,103 ,23,20,82,N_KEYCOLOR,keyText+197,3,TEXTCOLOR	; Del
137
  stdcall draw_button, 430,103 ,23,20,83,N_KEYCOLOR,keyText+200,3,TEXTCOLOR	; End
137
  stdcall draw_button, 430,103 ,23,20,83,N_KEYCOLOR,keyText+200,3,TEXTCOLOR	; End
138
  stdcall draw_button, 455,103 ,23,20,84,N_KEYCOLOR,keyText+203,3,TEXTCOLOR	; Pdn
138
  stdcall draw_button, 455,103 ,23,20,84,N_KEYCOLOR,keyText+203,3,TEXTCOLOR	; Pdn
139
  stdcall draw_button, 430,149,23,20,85,C_KEYCOLOR,keyText+206,1,TEXTCOLOR	; ^
139
  stdcall draw_button, 430,149,23,20,85,C_KEYCOLOR,keyText+206,1,TEXTCOLOR	; ^
140
  stdcall draw_button, 405,172,23,20,86,C_KEYCOLOR,keyText+207,1,TEXTCOLOR	; v
140
  stdcall draw_button, 405,172,23,20,86,C_KEYCOLOR,keyText+207,1,TEXTCOLOR	; v
141
  stdcall draw_button, 430,172,23,20,87,C_KEYCOLOR,keyText+208,1,TEXTCOLOR	; <
141
  stdcall draw_button, 430,172,23,20,87,C_KEYCOLOR,keyText+208,1,TEXTCOLOR	; <
142
  stdcall draw_button, 455,172,23,20,88,C_KEYCOLOR,keyText+209,2,TEXTCOLOR	;  >
142
  stdcall draw_button, 455,172,23,20,88,C_KEYCOLOR,keyText+209,2,TEXTCOLOR	;  >
143
 
143
 
144
  stdcall draw_button, 488,80 ,23,20,89,L_KEYCOLOR,keyText+211,3,TEXTCOLOR	; nlk
144
  stdcall draw_button, 488,80 ,23,20,89,L_KEYCOLOR,keyText+211,3,TEXTCOLOR	; nlk
145
  stdcall draw_button, 513,80 ,23,20,90,N_KEYCOLOR,keyText+214,1,TEXTCOLOR	; /
145
  stdcall draw_button, 513,80 ,23,20,90,N_KEYCOLOR,keyText+214,1,TEXTCOLOR	; /
146
  stdcall draw_button, 538,80 ,23,20,91,N_KEYCOLOR,keyText+215,1,TEXTCOLOR	; *
146
  stdcall draw_button, 538,80 ,23,20,91,N_KEYCOLOR,keyText+215,1,TEXTCOLOR	; *
147
  stdcall draw_button, 563,80 ,23,20,92,N_KEYCOLOR,keyText+216,1,TEXTCOLOR	; -
147
  stdcall draw_button, 563,80 ,23,20,92,N_KEYCOLOR,keyText+216,1,TEXTCOLOR	; -
148
  stdcall draw_button, 488,103 ,23,20,93,N_KEYCOLOR,keyText+217,1,TEXTCOLOR	; 7
148
  stdcall draw_button, 488,103 ,23,20,93,N_KEYCOLOR,keyText+217,1,TEXTCOLOR	; 7
149
  stdcall draw_button, 513,103 ,23,20,94,N_KEYCOLOR,keyText+218,1,TEXTCOLOR	; 8
149
  stdcall draw_button, 513,103 ,23,20,94,N_KEYCOLOR,keyText+218,1,TEXTCOLOR	; 8
150
  stdcall draw_button, 538,103 ,23,20,95,N_KEYCOLOR,keyText+219,1,TEXTCOLOR	; 9
150
  stdcall draw_button, 538,103 ,23,20,95,N_KEYCOLOR,keyText+219,1,TEXTCOLOR	; 9
151
  stdcall draw_button, 488,126,23,20,96,N_KEYCOLOR,keyText+220,1,TEXTCOLOR	; 4
151
  stdcall draw_button, 488,126,23,20,96,N_KEYCOLOR,keyText+220,1,TEXTCOLOR	; 4
152
  stdcall draw_button, 513,126,23,20,97,N_KEYCOLOR,keyText+221,1,TEXTCOLOR	; 5
152
  stdcall draw_button, 513,126,23,20,97,N_KEYCOLOR,keyText+221,1,TEXTCOLOR	; 5
153
  stdcall draw_button, 538,126,23,20,98,N_KEYCOLOR,keyText+222,1,TEXTCOLOR	; 6
153
  stdcall draw_button, 538,126,23,20,98,N_KEYCOLOR,keyText+222,1,TEXTCOLOR	; 6
154
  stdcall draw_button, 488,149,23,20,99,N_KEYCOLOR,keyText+223,1,TEXTCOLOR	; 1
154
  stdcall draw_button, 488,149,23,20,99,N_KEYCOLOR,keyText+223,1,TEXTCOLOR	; 1
155
  stdcall draw_button, 513,149,23,20,100,N_KEYCOLOR,keyText+224,1,TEXTCOLOR	; 2
155
  stdcall draw_button, 513,149,23,20,100,N_KEYCOLOR,keyText+224,1,TEXTCOLOR	; 2
156
  stdcall draw_button, 538,149,23,20,101,N_KEYCOLOR,keyText+225,1,TEXTCOLOR	; 3
156
  stdcall draw_button, 538,149,23,20,101,N_KEYCOLOR,keyText+225,1,TEXTCOLOR	; 3
157
  stdcall draw_button, 488,172,48,20,102,N_KEYCOLOR,keyText+226,1,TEXTCOLOR	; 0
157
  stdcall draw_button, 488,172,48,20,102,N_KEYCOLOR,keyText+226,1,TEXTCOLOR	; 0
158
  stdcall draw_button, 538,172,23,20,103,N_KEYCOLOR,keyText+227,1,TEXTCOLOR	; .
158
  stdcall draw_button, 538,172,23,20,103,N_KEYCOLOR,keyText+227,1,TEXTCOLOR	; .
159
  stdcall draw_button, 563,103 ,23,43,104,N_KEYCOLOR,keyText+228,1,TEXTCOLOR	; +
159
  stdcall draw_button, 563,103 ,23,43,104,N_KEYCOLOR,keyText+228,1,TEXTCOLOR	; +
160
  stdcall draw_button, 563,149,23,43,105,N_KEYCOLOR,keyText+229,3,TEXTCOLOR	; Ent
160
  stdcall draw_button, 563,149,23,43,105,N_KEYCOLOR,keyText+229,3,TEXTCOLOR	; Ent
161
 
161
 
162
 .draw_switch_button:
162
 .draw_switch_button:
163
  mov	eax, 6
163
  mov	eax, 6
164
  mul	byte [keyboard_mode]
164
  mul	byte [keyboard_mode]
165
  add	eax, SwitchText
165
  add	eax, SwitchText
166
  stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR	 ; Scan/ASCII switch
166
  stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR	 ; Scan/ASCII switch
167
@@:
167
@@:
168
 .draw_indicators_area:
168
 .draw_indicators_area:
169
  call lights_on
169
  call lights_on
170
 
170
 
171
  mov	byte [red_type], 0
171
  mov	byte [red_type], 0
172
  end_draw_window
172
  end_draw_window
173
ret
173
ret
174
 
174
 
175
get_zkey_window_slot_number:
175
get_zkey_window_slot_number:
176
	mov	eax, 18
176
	mov	eax, 18
177
	mov	ebx, 7
177
	mov	ebx, 7
178
	int	0x40
178
	int	0x40
179
	mov	[zkey_window], eax
179
	mov	[zkey_window], eax
180
set_event_mask:
180
set_event_mask:
181
	mov	eax, 40
181
	mov	eax, 40
182
	mov	ebx, 39
182
	mov	ebx, 39
183
	int	0x40
183
	int	0x40
184
 
184
 
185
still:
185
still:
186
	call	get_receiver_window_slot_number
186
	call	get_receiver_window_slot_number
187
 
187
 
188
 
188
 
189
	mov	eax, 10 	      ; Wait for an event in the queue.
189
	mov	eax, 10 	      ; Wait for an event in the queue.
190
	int	0x40
190
	int	0x40
191
 
191
 
192
	cmp	al,1		      ; redraw request ?
192
	cmp	al,1		      ; redraw request ?
193
	jz	red
193
	jz	red
194
	cmp	al,2		      ; key in buffer ?
194
	cmp	al,2		      ; key in buffer ?
195
	jz	key
195
	jz	key
196
	cmp	al,3		      ; button in buffer ?
196
	cmp	al,3		      ; button in buffer ?
197
	jz	button
197
	jz	button
198
 
198
 
199
	jmp	still
199
	jmp	still
200
 
200
 
201
red:
201
red:
202
	call	draw_window
202
	call	draw_window
203
	jmp	still
203
	jmp	still
204
 
204
 
205
key:
205
key:
206
	mov	eax, 2
206
	mov	eax, 2
207
	int	0x40
207
	int	0x40
208
 
208
 
209
;        push    ax
209
;        push    ax
210
	call	get_control_keys_state
210
	call	get_control_keys_state
211
	cmp	[locks], ax
211
	cmp	[locks], ax
212
	je	@f
212
	je	@f
213
 
213
 
214
      .reload:
214
      .reload:
215
	call	reload_ascii_keymap
215
	call	reload_ascii_keymap
216
	mov	byte [red_type], 1
216
	mov	byte [red_type], 1
217
	call	draw_window
217
	call	draw_window
218
       @@:
218
       @@:
219
;        pop     dx
219
;        pop     dx
220
;        jmp     button.select_key_code
220
;        jmp     button.select_key_code
221
	jmp	still
221
	jmp	still
222
 
222
 
223
button:
223
button:
224
	mov	eax, 17 	    ; Get pressed button code
224
	mov	eax, 17 	    ; Get pressed button code
225
	int	0x40
225
	int	0x40
226
	cmp	ah, 1		    ; Test x button
226
	cmp	ah, 1		    ; Test x button
227
	je	close_app
227
	je	close_app
228
 
228
 
229
	cmp	ah, 106 	    ; Test Scan/ASCII switch button
229
	cmp	ah, 106 	    ; Test Scan/ASCII switch button
230
	jne	.keyboard_keys
230
	jne	.keyboard_keys
231
	mov	cl, 1
231
	mov	cl, 1
232
	sub	cl, byte [keyboard_mode]
232
	sub	cl, byte [keyboard_mode]
233
	call	set_keyboard_mode
233
	call	set_keyboard_mode
234
	mov	byte [red_type], 2
234
	mov	byte [red_type], 2
235
	jmp	red
235
	jmp	red
236
 
236
 
237
      .keyboard_keys:
237
      .keyboard_keys:
238
	cmp	ah, 2		    ; Test if pressed buttons
238
	cmp	ah, 2		    ; Test if pressed buttons
239
	jb	still		    ; is a ZKEY keyboard key...
239
	jb	still		    ; is a ZKEY keyboard key...
240
	cmp	ah, 106
240
	cmp	ah, 106
241
	jnb	still		    ; ...so, if not then still,
241
	jnb	still		    ; ...so, if not then still,
242
	mov	[butt], ah	    ; if yes then save pressed button ID
242
	mov	[butt], ah	    ; if yes then save pressed button ID
243
      .test_slot:
243
      .test_slot:
244
	mov	eax, [zkey_window]		; Test is receiver ZKEY window
244
	mov	eax, [zkey_window]		; Test is receiver ZKEY window
245
	mov	ecx, [receiver_window]
245
	mov	ecx, [receiver_window]
246
	cmp	eax, ecx
246
	cmp	eax, ecx
247
	je	still				; if yes still.
247
	je	still				; if yes still.
248
      .activate_receiver_window:
248
      .activate_receiver_window:
249
	mov	eax, 18
249
	mov	eax, 18
250
	mov	ebx, 3
250
	mov	ebx, 3
251
	int	0x40
251
	int	0x40
252
 
252
 
253
      call reload_ascii_keymap
253
      call reload_ascii_keymap
254
 
254
 
255
      .read_key_scancode:
255
      .read_key_scancode:
256
	xor	edx, edx
256
	xor	edx, edx
257
	movzx	si, byte [butt] 		; Read scan code of the key from the table.
257
	movzx	si, byte [butt] 		; Read scan code of the key from the table.
258
	sub	si, 2
258
	sub	si, 2
259
	mov	dl, [keyCodes+si]		; Set dl = scancode of the key corresponding to the pressed button.
259
	mov	dl, [keyCodes+si]		; Set dl = scancode of the key corresponding to the pressed button.
260
	cmp	dl, 0xA0
260
	cmp	dl, 0xA0
261
	jb	.select_key_code		; If not extended key then select ascii or scan to send and then send it to the receiver.
261
	jb	.select_key_code		; If not extended key then select ascii or scan to send and then send it to the receiver.
262
 
262
 
263
	cmp	dl, 0xA6			; Test if it's extended2 key
263
	cmp	dl, 0xA6			; Test if it's extended2 key
264
	jne	.read_ext_key			; if not go to prepare to send simply extended key.
264
	jne	.read_ext_key			; if not go to prepare to send simply extended key.
265
	mov	dl, 0xE1			; Send extended2 scancode...
265
	mov	dl, 0xE1			; Send extended2 scancode...
266
	call	send_key
266
	call	send_key
267
	mov	dl, 0x1D			; ...and extended scancode,
267
	mov	dl, 0x1D			; ...and extended scancode,
268
	call	send_key			;
268
	call	send_key			;
269
	mov	dl, [keyCodes.ext2]		; (There is only one ext2 key - 'Break')
269
	mov	dl, [keyCodes.ext2]		; (There is only one ext2 key - 'Break')
270
	jmp	.send_key_code				; so... send it's normal scan code.
270
	jmp	.send_key_code				; so... send it's normal scan code.
271
      .read_ext_key:
271
      .read_ext_key:
272
	sub	dl, 0xA0			; Read extended key scan code from the table.
272
	sub	dl, 0xA0			; Read extended key scan code from the table.
273
	movzx	si, dl
273
	movzx	si, dl
274
	mov	dl, [keyCodes.ext+si]
274
	mov	dl, [keyCodes.ext+si]
275
     .send_ext:
275
     .send_ext:
276
	push	dx				; Send extended scancode to the receiver's window.
276
	push	dx				; Send extended scancode to the receiver's window.
277
	mov	dl, 0xE0
277
	mov	dl, 0xE0
278
	call	send_key
278
	call	send_key
279
	pop	dx
279
	pop	dx
280
;        jmp     .send_key_code
280
;        jmp     .send_key_code
281
      .select_key_code: 		; Select what to send ASCII or scan.
281
      .select_key_code: 		; Select what to send ASCII or scan.
282
	cmp	[keyboard_mode], 0	; Test if ZKEY must send ASCII.
282
	cmp	[keyboard_mode], 0	; Test if ZKEY must send ASCII.
283
	jne	.send_key_code
283
	jne	.send_key_code
284
 
284
 
285
;        mov     esi, ext0               ; Set esi to the beginning of the ext0 table.
285
;        mov     esi, ext0               ; Set esi to the beginning of the ext0 table.
286
	and	edx, 0x7F
286
	and	edx, 0x7F
287
;      @@:
287
;      @@:
288
;        cmp     dl, byte [esi]
288
;        cmp     dl, byte [esi]
289
;        je      .send_key_code
289
;        je      .send_key_code
290
;        inc     esi
290
;        inc     esi
291
;        cmp     esi, ext0end
291
;        cmp     esi, ext0end
292
;        jng     @b
292
;        jng     @b
293
      .read_ascii:
293
      .read_ascii:
294
	mov	dl, byte [ascii_keymap+edx]	; Read ASCII from the keymap table.
294
	mov	dl, byte [ascii_keymap+edx]	; Read ASCII from the keymap table.
295
      .send_key_code:
295
      .send_key_code:
296
	call	send_key		; Finally send the key to the receiver's window.
296
	call	send_key		; Finally send the key to the receiver's window.
297
      .wait:
297
      .wait:
298
	mov	eax, 5
298
	mov	eax, 5
299
	mov	ebx, 1			; Wait 0.01 second.
299
	mov	ebx, 1			; Wait 0.01 second.
300
	int	0x40
300
	int	0x40
301
      .activate_zkey_window:
301
      .activate_zkey_window:
302
	mov	eax, 18
302
	mov	eax, 18
303
	mov	ebx, 3
303
	mov	ebx, 3
304
	mov	ecx, [zkey_window]
304
	mov	ecx, [zkey_window]
305
	int	0x40
305
	int	0x40
306
 
306
 
307
	jmp	still
307
	jmp	still
308
 
308
 
309
 
309
 
310
close_app:
310
close_app:
311
    mov  eax,-1 		 ; close this program
311
    mov  eax,-1 		 ; close this program
312
    int  0x40
312
    int  0x40
313
 
313
 
314
 
314
 
315
;**********************************
315
;**********************************
316
;*  input: ecx = type of mode     *
316
;*  input: ecx = type of mode     *
317
;**********************************
317
;**********************************
318
 
318
 
319
set_keyboard_mode:
319
set_keyboard_mode:
320
	mov	eax, 66
320
	mov	eax, 66
321
	mov	ebx, 1	   ; Set keyboard mode
321
	mov	ebx, 1	   ; Set keyboard mode
322
	int	0x40
322
	int	0x40
323
	mov	[keyboard_mode], cl
323
	mov	[keyboard_mode], cl
324
ret
324
ret
325
 
325
 
326
get_control_keys_state:    ; This routine works only in Scan keyboard mode.
326
get_control_keys_state:    ; This routine works only in Scan keyboard mode.
327
	mov	eax, 66
327
	mov	eax, 66
328
	mov	ebx, 3
328
	mov	ebx, 3
329
	int	0x40
329
	int	0x40
330
ret
330
ret
331
 
331
 
332
 
332
 
333
;**********************************
333
;**********************************
334
;*  input: ecx = type of map      *
334
;*  input: ecx = type of map      *
335
;**********************************
335
;**********************************
336
 
336
 
337
get_keyboard_map:
337
get_keyboard_map:
338
	mov	eax, 26
338
	mov	eax, 26
339
	mov	ebx, 2
339
	mov	ebx, 2
340
	mov	edx, ascii_keymap
340
	mov	edx, ascii_keymap
341
	int	0x40
341
	int	0x40
342
ret
342
ret
343
 
343
 
344
 
344
 
345
reload_ascii_keymap:
345
reload_ascii_keymap:
346
	call	get_control_keys_state
346
	call	get_control_keys_state
347
	mov	ecx, 1
347
	mov	ecx, 1
348
 
348
 
349
	test	ax, 3				; Shift pressed ?
349
	test	ax, 3				; Shift pressed ?
350
	jnz	 @f
350
	jnz	 @f
351
	test	ax, 0x40			; Caps  Lock  on ?
351
	test	ax, 0x40			; Caps  Lock  on ?
352
	jz	.load_ascii_keymap
352
	jz	.load_ascii_keymap
353
      @@:
353
      @@:
354
	mov	ecx, 2
354
	mov	ecx, 2
355
      .load_ascii_keymap:
355
      .load_ascii_keymap:
356
	call	get_keyboard_map
356
	call	get_keyboard_map
357
  ret
357
  ret
358
 
358
 
359
 
359
 
360
 
360
 
361
get_receiver_window_slot_number:
361
get_receiver_window_slot_number:
362
	mov	eax, 18
362
	mov	eax, 18
363
	mov	ebx, 7
363
	mov	ebx, 7
364
	int	0x40
364
	int	0x40
365
	mov	ebx, [zkey_window]
365
	mov	ebx, [zkey_window]
366
	cmp	eax, ebx
366
	cmp	eax, ebx
367
	je	@f
367
	je	@f
368
	mov	[receiver_window], eax
368
	mov	[receiver_window], eax
369
      @@:
369
      @@:
370
  ret
370
  ret
371
 
371
 
372
;************************************
372
;************************************
373
;*  input: edx = code of the key    *
373
;*  input: edx = code of the key    *
374
;************************************
374
;************************************
375
 
375
 
376
send_key:
376
send_key:
377
	mov	eax, 72
377
	mov	eax, 72
378
	mov	ebx, 1
378
	mov	ebx, 1
379
	mov	ecx, 2
379
	mov	ecx, 2
380
	int	0x40
380
	int	0x40
381
  ret
381
  ret
382
 
382
 
383
lights_on:
383
lights_on:
384
   bar 491,51,95,15,0			   ; indicators area
384
   bar 491,51,95,15,0			   ; indicators area
385
   rectangle 490,50,96,16,TEXTCOLOR
385
   rectangle 490,50,96,16,TEXTCOLOR
386
 
386
 
387
   call    get_control_keys_state
387
   call    get_control_keys_state
388
   mov	   [locks], ax
388
   mov	   [locks], ax
389
   test ax, 0x40
389
   test ax, 0x40
390
   jz @f
390
   jz @f
391
   ;stdcall bar, 532, 53, 10, 11, 0x0000FF00
391
   ;stdcall bar, 532, 53, 10, 11, 0x0000FF00
392
   bar 532, 53, 10, 11, 0x0000FF00
392
   bar 532, 53, 10, 11, 0x0000FF00
393
 @@:
393
 @@:
394
   test ax, 0x80
394
   test ax, 0x80
395
   jz @f
395
   jz @f
396
   ;stdcall bar, 500, 53, 10, 11, 0x0000FF00
396
   ;stdcall bar, 500, 53, 10, 11, 0x0000FF00
397
   bar 500, 53, 10, 11, 0x0000FF00
397
   bar 500, 53, 10, 11, 0x0000FF00
398
 @@:
398
 @@:
399
   test ax, 0x100
399
   test ax, 0x100
400
   jz @f
400
   jz @f
401
   ;stdcall bar, 565, 53, 10, 11, 0x0000FF00
401
   ;stdcall bar, 565, 53, 10, 11, 0x0000FF00
402
   bar 565, 53, 10, 11, 0x0000FF00
402
   bar 565, 53, 10, 11, 0x0000FF00
403
 @@:
403
 @@:
404
ret
404
ret
405
 
405
 
406
; DATA AREA
406
; DATA AREA
407
 
407
 
408
; Application Title
408
; Application Title
409
labelt		db	'ZKEY v.0.5 - keyboard for KolibriOS'
409
labelt		db	'ZKEY v.0.5 - keyboard for KolibriOS'
410
labellen:
410
labellen:
411
 
411
 
412
SwitchText db ' ASCII SCAN '
412
SwitchText db ' ASCII SCAN '
413
 
413
 
414
;Button names
414
;Button names
415
keyText db 'EscF1F2F3F4F5F6F7F8F9F10F11F12'
415
keyText db 'EscF1F2F3F4F5F6F7F8F9F10F11F12'
416
	db '~ð1!2@3#4$5%6^7&8*9(0)-_=+\|bksp'
416
	db '~ð1!2@3#4$5%6^7&8*9(0)-_=+\|bksp'
417
	db 'TabQ‰W–E“RŠT…YUƒI˜O™P‡{[•}]šEnter'
417
	db 'TabQ‰W–E“RŠT…YUƒI˜O™P‡{[•}]šEnter'
418
	db 'lockA”S›D‚F€GHJŽK‹L„;:†''"'
418
	db 'lockA”S›D‚F€GHJŽK‹L„;:†''"'
419
	db 'ShiftZŸX—C‘VŒBˆN’Mœ,<.>ž/?Shift'
419
	db 'ShiftZŸX—C‘VŒBˆN’Mœ,<.>ž/?Shift'
420
	db 'CtrlWinAlt AltWin[=]Ctrl'
420
	db 'CtrlWinAlt AltWin[=]Ctrl'
421
	db 'pscslkbrkInsHmPupDelEndPdn^'
421
	db 'pscslkbrkInsHmPupDelEndPdn^'
422
	db 'nlk/*-7894561230.+Ent'
422
	db 'nlk/*-7894561230.+Ent'
423
 
423
 
424
;Key scan codes
424
;Key scan codes
425
keyCodes:
425
keyCodes:
426
	db 0x01, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x57, 0x58
426
	db 0x01, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x57, 0x58
427
	db 0x29, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x2B, 0x0E
427
	db 0x29, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x2B, 0x0E
428
	db 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C
428
	db 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C
429
	db 0x3A, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28
429
	db 0x3A, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28
430
	db 0x2A, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36
430
	db 0x2A, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36
431
	db 0x1D, 0xA0, 0x38, 0x39, 0xA1, 0xA2, 0xA3, 0xA4
431
	db 0x1D, 0xA0, 0x38, 0x39, 0xA1, 0xA2, 0xA3, 0xA4
432
	db 0xA5, 0x46, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0
432
	db 0xA5, 0x46, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0
433
	db 0x45, 0xB1, 0x37, 0x4A, 0x47, 0x48, 0x49, 0x4B, 0x4C, 0x4D, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x4E, 0xB2
433
	db 0x45, 0xB1, 0x37, 0x4A, 0x47, 0x48, 0x49, 0x4B, 0x4C, 0x4D, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x4E, 0xB2
434
      .ext:
434
      .ext:
435
	db 0x5B, 0x38, 0x5C, 0x5D, 0x1D
435
	db 0x5B, 0x38, 0x5C, 0x5D, 0x1D
436
	db 0x37, 0x00, 0x52, 0x47, 0x49, 0x53, 0x4F, 0x51, 0x48, 0x4B, 0x50, 0x4D
436
	db 0x37, 0x00, 0x52, 0x47, 0x49, 0x53, 0x4F, 0x51, 0x48, 0x4B, 0x50, 0x4D
437
	db 0x35, 0x1C
437
	db 0x35, 0x1C
438
      .ext2  db 0x45	  ; Just Break :)
438
      .ext2  db 0x45	  ; Just Break :)
439
 
439
 
440
;ext0:
440
;ext0:
441
;    db   0x1D, 0x29, 0x2A, 0x36, 0x37, 0x38, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40
441
;    db   0x1D, 0x29, 0x2A, 0x36, 0x37, 0x38, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40
442
;    db   0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D
442
;    db   0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D
443
;    db   0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x57, 0x58
443
;    db   0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x57, 0x58
444
;ext0end:
444
;ext0end:
445
 
445
 
446
receiver_window dd 0	  ; Slot number of the receiver
446
receiver_window dd 0	  ; Slot number of the receiver
447
zkey_window dd 0	  ; Slot number of ZKEY
447
zkey_window dd 0	  ; Slot number of ZKEY
448
butt	db 0		  ; Pressed button ID
448
butt	db 0		  ; Pressed button ID
449
locks	dw 0		  ; NumLock, CapsLock, ScrollLock lights mask
449
locks	dw 0		  ; NumLock, CapsLock, ScrollLock lights mask
450
 
450
 
451
keyboard_mode db 0	  ; Scan or ASCII keys to send ?  0 - ASCII , 1 - Scan
451
keyboard_mode db 0	  ; Scan or ASCII keys to send ?  0 - ASCII , 1 - Scan
452
red_type      db 0	  ; Type of window redraw. 0 - default , 1 - on ASCII_keymap change , 2 - Switch button pressed.
452
red_type      db 0	  ; Type of window redraw. 0 - default , 1 - on ASCII_keymap change , 2 - Switch button pressed.
453
 
453
 
454
I_END:			  ; End of application code and data marker
454
I_END:			  ; End of application code and data marker
455
 
455
 
456
ascii_keymap:
456
ascii_keymap:
457
>
457
>
458
>
458
>