Цитата(Dog Pawlowa @ Apr 25 2007, 08:37)

Подрабатывает обработка одновременного нажатия двух клавиш
Код
if ((pressed_keys == kUp | kDn) && // now these two keys
~(kbd_status3 & (kUp | kDn))) //and before it wasn't so
{
found_events |= kUpDn; // set new bit
found_events &= ~(kUp | kDn); //reset usual bits
}
Я удручен, этот код работает годами на разных платформах. Что не так?
Мне кажется, у вас неправильное использование оператора if(условие). Условие должно быть логическим выражением. В первой строке у вас всё правильно, оператор == даёт логическое выражение (ЛВ), хотя как уже сказали, оператор == имеет приоритет перед оператором ИЛИ. Во второй строке, в скобках, у вас идёт побитовое сравнение, что не ЕСТЬ логическое выражение, а просто некое двоичное число. Затем с помощью оператора && (логическое И) вы пытаетесь обработать первое ЛВ и побитовую инверсию числа, как следствие, результат может быть непредсказуем.
Вторую строчку вам надо представить в виде логического выражения.