Add hidKeysDownRepeat
This commit is contained in:
parent
69483a473a
commit
1bafb08f34
@ -91,6 +91,13 @@ Result hidInit(void);
|
||||
/// Exits HID.
|
||||
void hidExit(void);
|
||||
|
||||
/**
|
||||
* @brief Sets the key repeat parameters for @ref hidKeysRepeat.
|
||||
* @param delay Initial delay.
|
||||
* @param interval Repeat interval.
|
||||
*/
|
||||
void hidSetRepeatParameters(u32 delay, u32 interval);
|
||||
|
||||
/// Scans HID for input data.
|
||||
void hidScanInput(void);
|
||||
|
||||
@ -109,7 +116,14 @@ u32 hidKeysHeld(void);
|
||||
u32 hidKeysDown(void);
|
||||
|
||||
/**
|
||||
* @brief Returns a bitmask of newly released buttons, this frame.
|
||||
* @brief Returns a bitmask of newly pressed or repeated buttons, this frame.
|
||||
* Individual buttons can be extracted using binary AND.
|
||||
* @return 32-bit bitmask of newly pressed or repeated buttons.
|
||||
*/
|
||||
u32 hidKeysDownRepeat(void);
|
||||
|
||||
/**
|
||||
* @brief Returns a bitmask of newly released buttons, this frame.
|
||||
* Individual buttons can be extracted using binary AND.
|
||||
* @return 32-bit bitmask of newly released buttons.
|
||||
*/
|
||||
|
@ -21,7 +21,8 @@ Handle hidEvents[5];
|
||||
|
||||
vu32* hidSharedMem;
|
||||
|
||||
static u32 kOld, kHeld, kDown, kUp;
|
||||
static u32 kOld, kHeld, kDown, kUp, kRepeat;
|
||||
static u32 kDelay = 30, kInterval = 15, kCount = 30;
|
||||
static touchPosition tPos;
|
||||
static circlePosition cPos;
|
||||
static accelVector aVec;
|
||||
@ -104,6 +105,14 @@ void hidExit(void)
|
||||
}
|
||||
}
|
||||
|
||||
void hidSetRepeatParameters(u32 delay, u32 interval)
|
||||
{
|
||||
kDelay = delay;
|
||||
kInterval = interval;
|
||||
kCount = kDelay;
|
||||
kRepeat = 0;
|
||||
}
|
||||
|
||||
void hidWaitForEvent(HID_Event id, bool nextEvent)
|
||||
{
|
||||
if(id>=HIDEVENT_MAX)return;
|
||||
@ -195,6 +204,21 @@ void hidScanInput(void)
|
||||
kDown = (~kOld) & kHeld;
|
||||
kUp = kOld & (~kHeld);
|
||||
|
||||
if (kDelay)
|
||||
{
|
||||
if (kHeld != kOld)
|
||||
{
|
||||
kCount = kDelay;
|
||||
kRepeat = kDown;
|
||||
}
|
||||
|
||||
if (--kCount == 0)
|
||||
{
|
||||
kCount = kInterval;
|
||||
kRepeat = kHeld;
|
||||
}
|
||||
}
|
||||
|
||||
Id = hidSharedMem[66 + 4];//Accelerometer
|
||||
if(Id>7)Id=7;
|
||||
if(hidCheckSectionUpdateTime(&hidSharedMem[66], Id)==0)
|
||||
@ -220,6 +244,13 @@ u32 hidKeysDown(void)
|
||||
return kDown;
|
||||
}
|
||||
|
||||
u32 hidKeysDownRepeat(void)
|
||||
{
|
||||
u32 tmp = kRepeat;
|
||||
kRepeat = 0;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
u32 hidKeysUp(void)
|
||||
{
|
||||
return kUp;
|
||||
|
Loading…
Reference in New Issue
Block a user