OEM-производители иногда настраивают свои ключи по-разному. Хитрость заключается в том, чтобы создать приложение, которое просто обрабатывает события нажатия клавиш вверх и вниз, а затем запрашивает значения, которые вы получаете при нажатии соответствующих клавиш. ВЫ МОЖЕТЕ БЫТЬ УДОВЛЕТВОРЕНЫ.
Однажды у меня был блок Intermec. Enter был правильно введен, однако клавишей ACTION была клавиша Enter, а затем F23 примерно через 10 мс. Боже ... это было трудно программировать, чтобы сделать этот ключ полезным (то есть сделать что-то, что не совпадает с ключом ввода). Решение включало функцию под названием:
public bool IsReallyEnter(KeyEventArgs e);
KeyPress - хороший обходной путь, ваша проблема в том, что он будет срабатывать несколько раз, если удерживать клавишу нажатой.