My real score was around 80WPM tho.
More 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
SuperStrict
Framework BRL.AppStub
Import BRL.Random
Import BRL.KeyCodes
Const KeyUP% = 1 | 3
Const KeyDN% = 1 | 0
Extern "win32"
	Function keybd_event(bVk@, bScan@, dwFlags%, dwExtraInfo@Ptr)
	Function GetAsyncKeyState%(key@@)
EndExtern
While True
	Delay(10)
	If GetAsyncKeyState(key_F4) <> 0 Then Exit
Wend
Delay(100)
TypeIn("Warm up your fingers by typing these short test instructions. The test text is shown in the upper part of the screen. Type it as quickly and accurately as possible until the test time is up. The text you have typed is shown in the lower part of the screen. There you can see if you have made any typing errors. You can use backspace to correct typing errors, but do not spend too much time going back. Do not press enter after each line - only when the paragraph ends. What is TypingTest.com? TypingTest.com is a website that provides online typing tests for training purposes. You can complete the test with your web browser - there's no need for additional software. During the test you will copy a piece of text by typing it as fast and accurately as possible.")
Function PressKey(c$)
	Delay(10 + Rand(-2,40))
	Select c
		Case "0","1","2","3","4","5","6","7","8","9"
			keybd_event(KEY_0 + Int(c), 0, KeyDN, Null)
			keybd_event(KEY_0 + Int(c), 0, KeyUP, Null)
		Case "!"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_1, 0, KeyDN, Null)
			keybd_event(KEY_1, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "@"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_2, 0, KeyDN, Null)
			keybd_event(KEY_2, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "#"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_3, 0, KeyDN, Null)
			keybd_event(KEY_3, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "$"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_4, 0, KeyDN, Null)
			keybd_event(KEY_4, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "%"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_5, 0, KeyDN, Null)
			keybd_event(KEY_5, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "^"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_6, 0, KeyDN, Null)
			keybd_event(KEY_6, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "&"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_7, 0, KeyDN, Null)
			keybd_event(KEY_7, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "*"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_8, 0, KeyDN, Null)
			keybd_event(KEY_8, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "("
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_9, 0, KeyDN, Null)
			keybd_event(KEY_9, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case ")"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_0, 0, KeyDN, Null)
			keybd_event(KEY_0, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "-"
			keybd_event(KEY_MINUS, 0, KeyDN, Null)
			keybd_event(KEY_MINUS, 0, KeyUP, Null)
		Case "="
			keybd_event(KEY_EQUALS, 0, KeyDN, Null)
			keybd_event(KEY_EQUALS, 0, KeyUP, Null)
		Case "_"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_MINUS, 0, KeyDN, Null)
			keybd_event(KEY_MINUS, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "+"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_EQUALS, 0, KeyDN, Null)
			keybd_event(KEY_EQUALS, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","w","q","y","z","x"
			keybd_event(Asc(c) - 32, 0, KeyDN, Null)
			keybd_event(Asc(c) - 32, 0, KeyDN, Null)
		Case "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","W","Q","Y","Z","X"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(Asc(c), 0, KeyDN, Null)
			keybd_event(Asc(c), 0, KeyDN, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "."
			keybd_event(KEY_PERIOD, 0, KeyDN, Null)
			keybd_event(KEY_PERIOD, 0, KeyUP, Null)
		Case ","
			keybd_event(KEY_COMMA, 0, KeyDN, Null)
			keybd_event(KEY_COMMA, 0, KeyUP, Null)
		Case " "
			keybd_event(KEY_SPACE, 0, KeyDN, Null)
			keybd_event(KEY_SPACE, 0, KeyUP, Null)
		Case "/"
			keybd_event(KEY_SLASH, 0, KeyDN, Null)
			keybd_event(KEY_SLASH, 0, KeyUP, Null)
		Case "?"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_SLASH, 0, KeyDN, Null)
			keybd_event(KEY_SLASH, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
		Case "'"
			keybd_event(KEY_QUOTES, 0, KeyDN, Null)
			keybd_event(KEY_QUOTES, 0, KeyUP, Null)
		Case "~q"
			keybd_event(KEY_LSHIFT, 0, KeyDN, Null)
			keybd_event(KEY_QUOTES, 0, KeyDN, Null)
			keybd_event(KEY_QUOTES, 0, KeyUP, Null)
			keybd_event(KEY_LSHIFT, 0, KeyUP, Null)
	EndSelect
EndFunction
Function TypeIn(str$)
	Local i%
	If Not str Then Return
	For i = 0 To Len(str) - 1
		PressKey(str[i..i+1])
	Next
EndFunction
Typing speed


Offline
DC


