Using an US keyboard, the alphanumeric region
4 5 6 7
E R T Y U
D F G H J K
C V B N M ,
0 - = (zero, minus, equal)
P [ ]
L ; '
The numeric keypad
/ * -
0 . 2
0 . 3
1 2 4
1 2 5
2 4 5
a.s.o
The test code used by me (click or press the command button to experiment different combinations):
CLEAR
PUBLIC ofrm
ofrm = CREATEOBJECT("myform")
ofrm.show()
DEFINE CLASS myform as form
Autocenter = .T.
l1 = .F. && .T. while key #1 is
pressed
l2 = .F. && .T. while key #2 is
pressed
l3 = .F. && .T. while key #3 is
pressed
ln1 = -1 && Store scan code 1
ln2 = -1 && Store scan code 2
ln3 = -1 && Store scan code 3
ADD OBJECT txt1 as textbox
ADD OBJECT cmd as commandbutton
WITH top = 50, caption = "Reset" && reset the combination
PROCEDURE init
UNBINDEVENTS(This.hwnd)
BINDEVENT(This.hwnd,0x0100,This,"detectkeydown")
BINDEVENT(This.hwnd,0x0101,This,"detectkeyup")
ENDPROC
PROCEDURE detectkeydown
LPARAMETERS p1,p2,p3,p4
* p3 = Virtual-key code
IF This.ln3 = -1 AND !INLIST(This.ln1, -1, m.p3)
AND !INLIST(This.ln2, -1, m.p3)
This.ln3 = m.p3
ENDIF
IF m.p3 = This.ln3
This.l3 = .T.
ENDIF
IF This.ln2 = -1 AND !INLIST(This.ln1, -1, m.p3)
This.ln2 = m.p3
ENDIF
IF m.p3 = This.ln2
This.l2 = .T.
ENDIF
IF This.ln1 = -1
This.ln1 = m.p3
ENDIF
IF m.p3 = This.ln1
This.l1 = .T.
ENDIF
ACTIVATE SCREEN
? m.p3
IF This.l1 AND This.l2 AND This.l3
? 'Bingo!'
? 'An ' + LTRIM(STR(This.ln1)) + '+' + LTRIM(STR(This.ln2)) + '+' + LTRIM(STR(This.ln3)) + ' occures'
ENDIF
ACTIVATE SCREEN
?This.l1 ,This.l2 ,This.l3
ENDPROC
PROCEDURE detectkeyup
LPARAMETERS p1,p2,p3,p4
* p3 = Virtual-key code
IF p3 = This.ln1
This.l1 = .F.
ENDIF
IF p3 = This.ln2
This.l2 = .F.
ENDIF
IF p3 = This.ln3
This.l3 = .F.
ENDIF
ENDPROC
PROCEDURE cmd.click
STORE -1 TO ThisForm.ln1, ThisForm.ln2, ThisForm.ln3
STORE .F. TO ThisForm.l1, ThisForm.l2, ThisForm.l3
ENDPROC
ENDDEFINE
Update
The previous test was on a Dell keyboard with a US layout (Windows 7 32 bit).
I repeated the same test, but this time using a Fujitsu keyboard with a German layout (Windows 10 prof 64 bit). And what do you know? I managed to catch a 3+4+5. Not easy, but Bingo!
The patterns are almost the same.
Ha! So most probably it's a hardware issue.
Later
A new test using a Genius keyboard (Windows 10 home 32 bit), with an US layout, behaves poorly.
Another test. A HP notebook (Windows 10 home 64 bit) with a Germanic layout, behaves even better than Fujitsu.
A final test using a Lenovo laptop (Windows 10 home 64 bit) with an US layout, behaves poorly.
Again
This article https://en.wikipedia.org/wiki/Rollover_(key) explains everything.
Update
The previous test was on a Dell keyboard with a US layout (Windows 7 32 bit).
I repeated the same test, but this time using a Fujitsu keyboard with a German layout (Windows 10 prof 64 bit). And what do you know? I managed to catch a 3+4+5. Not easy, but Bingo!
The patterns are almost the same.
Ha! So most probably it's a hardware issue.
Later
A new test using a Genius keyboard (Windows 10 home 32 bit), with an US layout, behaves poorly.
Another test. A HP notebook (Windows 10 home 64 bit) with a Germanic layout, behaves even better than Fujitsu.
A final test using a Lenovo laptop (Windows 10 home 64 bit) with an US layout, behaves poorly.
Again
This article https://en.wikipedia.org/wiki/Rollover_(key) explains everything.
Related posts
http://praisachion.blogspot.com/2017/08/easter-eggs-4.html
http://praisachion.blogspot.com/2017/08/easter-eggs-3.html
http://praisachion.blogspot.com/2017/08/easter-eggs-2.html
http://praisachion.blogspot.com/2017/08/easter-eggs-1.html
http://praisachion.blogspot.com/2016/02/interceptin-ctrlshiftenter.html
http://praisachion.blogspot.com/2015/06/detect-keyup-like-mouseup.html
http://praisachion.blogspot.com/2015/01/how-can-i-prevent-undocking-docked-form.html
http://praisachion.blogspot.com/2017/08/easter-eggs-4.html
http://praisachion.blogspot.com/2017/08/easter-eggs-3.html
http://praisachion.blogspot.com/2017/08/easter-eggs-2.html
http://praisachion.blogspot.com/2017/08/easter-eggs-1.html
http://praisachion.blogspot.com/2016/02/interceptin-ctrlshiftenter.html
http://praisachion.blogspot.com/2015/06/detect-keyup-like-mouseup.html
http://praisachion.blogspot.com/2015/01/how-can-i-prevent-undocking-docked-form.html