I don’t think the keyboard component in Builder will give you the flexibility to do this properly, so the keyboard checking would better be done in code rather than using a keyboard component.
But before proceeding, you should probably state your precision requirements. Code in Builder code components runs only once every screen refresh, i.e. on a 60 Hz screen there will be an interval of 16.66 between successive keyboard checks. This might (or might not) be too crude for the sorts of effects you are looking for. Checking can be done more quickly, but that requires working in Coder rather than Builder.
It’s difficult for us to advise on the technical route to take to implement your task, without knowing what would be “good enough” to detect the sorts of effect sizes that might be required. You’ll have a much better idea of that, from your reading of the related literature, discussions with colleagues and mentors, and so on.
Come back to us then. If 60 Hz checking is sufficient, then the route ahead is straightforward. If a faster rate is required, this might simply be achieved by using a faster display (e.g. some LCDs these days apparently even go to 240 Hz), with a powerful enough computer and graphics card to keep up with it. Otherwise, a software solution would mean writing the experiment in Coder, to decouple the the checking from the screen refresh rate, if the visual stimuli permit.