ReAl (25.07.2007 17:58, просмотров: 1) ответил rezident на Не нужно ждать отпускания, нужно просто XORить два соседних скана. Типа такого
Аналогично поступаю. С мелким отличием в записи (явно выделяю сущность) Опираясь на приведенный код:
<c>
if ((scanNew^scanOld)==0) //состояния совпадают, значит дребезга нет и можно обрабатывать
{
changed_mask = scanNew^stateKbd;
if (changed_mask!=0) //есть изменения в состоянии кнопок?
{ //ага, есть. проверяем что за изменения
//проверяем конкретную кнопку, либо в цикле все кнопки. как вам захочется
if ((changed_mask & MASK_KEY1)!=0) //кнопка KEY1 изменила свое состояние на нажатое?
{ //обрабатываем, формируем код для KEY1
}
}
stateKbd=scanNew;
}
scanOld=scanNew;
</c>
С changed_mask можно делать scanNew & changed_mask для тех, которые стали нажатыми (если "1" == нажата), !scanNew & changed_mask для отпущенных и т.д.