You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.5 KiB
79 lines
1.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef KEYREPEAT_H |
|
#define KEYREPEAT_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui_controls/Panel.h> |
|
|
|
namespace vgui |
|
{ |
|
|
|
enum KEYREPEAT_ALIASES |
|
{ |
|
KR_ALIAS_UP, |
|
KR_ALIAS_DOWN, |
|
KR_ALIAS_LEFT, |
|
KR_ALIAS_RIGHT, |
|
|
|
FM_NUM_KEYREPEAT_ALIASES, |
|
}; |
|
|
|
class CKeyRepeatHandler |
|
{ |
|
public: |
|
CKeyRepeatHandler() |
|
{ |
|
Reset(); |
|
for ( int i = 0; i < FM_NUM_KEYREPEAT_ALIASES; i++ ) |
|
{ |
|
m_flRepeatTimes[i] = 0.16; |
|
} |
|
} |
|
|
|
void Reset( void ) { memset( m_bAliasDown, 0, sizeof(bool) * FM_NUM_KEYREPEAT_ALIASES ); m_bHaveKeyDown = false; } |
|
void KeyDown( vgui::KeyCode code ); |
|
void KeyUp( vgui::KeyCode code ); |
|
vgui::KeyCode KeyRepeated( void ); |
|
void SetKeyRepeatTime( vgui::KeyCode code, float flRepeat ); |
|
|
|
private: |
|
int GetIndexForCode( vgui::KeyCode code ) |
|
{ |
|
switch ( code ) |
|
{ |
|
case KEY_XBUTTON_DOWN: |
|
case KEY_XSTICK1_DOWN: |
|
return KR_ALIAS_DOWN; break; |
|
case KEY_XBUTTON_UP: |
|
case KEY_XSTICK1_UP: |
|
return KR_ALIAS_UP; break; |
|
case KEY_XBUTTON_LEFT: |
|
case KEY_XSTICK1_LEFT: |
|
return KR_ALIAS_LEFT; break; |
|
case KEY_XBUTTON_RIGHT: |
|
case KEY_XSTICK1_RIGHT: |
|
return KR_ALIAS_RIGHT; break; |
|
default: |
|
break; |
|
} |
|
return -1; |
|
} |
|
|
|
private: |
|
bool m_bAliasDown[FM_NUM_KEYREPEAT_ALIASES]; |
|
float m_flRepeatTimes[FM_NUM_KEYREPEAT_ALIASES]; |
|
float m_flNextKeyRepeat; |
|
bool m_bHaveKeyDown; |
|
}; |
|
|
|
|
|
} // namespace vgui |
|
|
|
#endif // KEYREPEAT_H
|
|
|