static const unsigned char wheel_tbl[2][4] = { /* 0x00 0x40 0x80 0xc0 */ /* Wheel value */ { 0x40, 0xc0, 0x00, 0x80 }, /* Clockwise rotation */ { 0x80, 0x00, 0xc0, 0x40 }, /* Counter-clockwise */ }; ... if (old_wheel_value == wheel_tbl[0][wheel_value >> 6]) btn = BUTTON_SCROLL_DOWN; else if (old_wheel_value == wheel_tbl[1][wheel_value >> 6]) btn = BUTTON_SCROLL_UP; ... old_wheel_value = wheel_value;