How can I create an input buffer?

I am trying to set up a system in which you have to hit a certain key multiple times/a sequence of keys in order to trigger an action ( a dash, for instance.)
I have tried using the method with Delay that inputs your actions and if it is greater than a specific number then it gets executed. However, using this method will also allow other keys to trigger the condition, which is not what I want. I want the action to be executed only if a specific key is pressed twice, not if two different keys get pressed twice. I have to set it up so that at least four keys use the input buffer function (wasd for movement), so I can’t think of any ways to work around that. Help would be appreciated.

if you check the paragon character combo.
they used 2 events in their animation.
1:ComboSave.(if you click after this event something happened and the animation change so if the correct button pressed you can continue the combo with change your animation to a new attack style otherwise it change your animation to an end).

2:ComboEnd.(if your attack animations reach a specific time, your combo ends. so you must press the key before it.)

so now for your buffer system, every key you press, adds to an array and when needed it will read from that array

I make a blueprint for it I hope it will be useful for you:Blueprint Logic

First of all, thank you for the answer. I really appreciate it.
Second, thanks for shedding light on the two events- ComboSave and ComboEnd. They do make sense. If I understood it correctly, I would have to set up a Combo Save that would register all my inputs, and then a ComboEnd to make sure that the Combo ends properly?
I looked at your screenshot and was unable to understand what to do with it. I apologize, I am still a beginner.

-Why are the little box near “arrays” numbered with 0,1,2 respectively? Are they supposed to belong to a sequence? I thought these arrays were supposed to store value, so why are they labeled with 0,1,2 instead of 0 because it is waiting for the player’s input?

-Why are there 5 “switch on ints”? I thought there were only 3 combos to be done? Why is it necessary to have 5 of them? Do they lead to different results?

-What does these “Call When” box mean? Why are they labeled 1-4? Are they supposed to execute the command the specific combo (1-4) is executed?

-What does Notify Name does in this case?
-Why do the secondary “switch on ints” have seemingly arbitrarily assigned values (0,1,2, then 0 again , then 2, then 1)?

Thank you for the help and patience again. I am trying my best to understand and how to implement this.

EDIT: I was able to make an alternative way of making my dashes require double input by making a macro function (double tap), AND making sure that the variables used (timetapped,etc.) are named different. I was using the same macro function for all the keys with the same variables (since I ctrl c ctrl v pasted them), and thus the commands were interchangeable which is not I wanted. After creating a different macro function for each of the moving keys with different variables, I was able to achieve the end goal of setting up a dash animation each time you pressed the movement key twice.
Thank you for the help and I look forward to exploring your input buffer code as I get better and better at deciphering what these codes mean.

NOTE: This is just a temporary, inferior fix. Your command won’t execute immediately as soon as you finish executing it. It will wait for the delay (whatever you set), and if it is correct, it will play the animation. The correct way of doing it would be to have something like the user above said, in which you store inputs and summon the correct action as soon as it is triggered, as opposed to waiting for the delay.