This is because this function is run in synchronization with frames. (In an application that runs at 2 Int, data is gotten once every 2 Int, so the button edge is gotten correctly.)
Use this function only when it is desired to get peripheral data according to timing other than the number of synchronized frames specified by sbInitSystem() function.
In this case, it is not possible to guarantee the contents of the data in the press and release members of the PDS_PERIPHERAL structure that is gotten.