Вот концептуальный ответ. Чтобы получить более конкретный ответ, вам нужно будет предоставить более конкретные детали.
Чтобы реализовать эту функциональность, вам нужно взглянуть на то, как вы можете получить ввод с клавиатуры. Это будет тяжелой функцией вашего языка программирования.
В низкоуровневом приложении я бы установил таймеры, которые следят за нажатиями клавиш и клавишами (или мышью вверх / вниз) и применяют таймеры, работающие с вводом. Затем имейте управляющую логику, которая решает, что вход был основан на нажатой кнопке в сочетании с данными таймера.
В приложении более высокого уровня у вас может быть входная библиотека, которая сделает большую часть работы за вас. Или у вас могут быть функции для анализа входных данных, которые ищут такие вещи, как длинные серии одного и того же входного сигнала, наблюдаемого в течение определенных вами временных интервалов.
Во всяком случае, как я сказал в начале. Чтобы получить конкретный ответ, пожалуйста, хотя бы объясните, в какой среде программирования вы работаете? Например, это внутри контекста Open-GL?