Change the "keyclick repeat" setting behaviour so when it is off only the *first* repeat will click.
Otherwise single presses and all wheel movements will cause a click. with "keyclick repeat" enabled *all* repeats will cause clicks git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30997 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ea2a3ee7a8
commit
f65ceebee8
1 changed files with 37 additions and 14 deletions
51
apps/misc.c
51
apps/misc.c
|
@ -872,10 +872,12 @@ void system_sound_play(enum system_sound sound)
|
||||||
params->amplitude * *params->setting);
|
params->amplitude * *params->setting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Produce keyclick based upon button and global settings */
|
/* Produce keyclick based upon button and global settings */
|
||||||
void keyclick_click(int button)
|
void keyclick_click(int button)
|
||||||
{
|
{
|
||||||
|
static long last_button = BUTTON_NONE;
|
||||||
|
bool do_beep = false;
|
||||||
/* Settings filters */
|
/* Settings filters */
|
||||||
if (
|
if (
|
||||||
#ifdef HAVE_HARDWARE_CLICK
|
#ifdef HAVE_HARDWARE_CLICK
|
||||||
|
@ -883,27 +885,48 @@ void keyclick_click(int button)
|
||||||
#else
|
#else
|
||||||
global_settings.keyclick
|
global_settings.keyclick
|
||||||
#endif
|
#endif
|
||||||
&& (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT)))
|
)
|
||||||
{
|
{
|
||||||
/* Button filters */
|
if (global_settings.keyclick_repeats || !(button & BUTTON_REPEAT))
|
||||||
if (button != BUTTON_NONE && !(button & BUTTON_REL)
|
|
||||||
&& !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
|
|
||||||
{
|
{
|
||||||
#ifdef HAVE_HARDWARE_CLICK
|
/* Button filters */
|
||||||
if (global_settings.keyclick)
|
if (button != BUTTON_NONE && !(button & BUTTON_REL)
|
||||||
|
&& !(button & (SYS_EVENT|BUTTON_MULTIMEDIA)) )
|
||||||
{
|
{
|
||||||
system_sound_play(SOUND_KEYCLICK);
|
do_beep = true;
|
||||||
}
|
}
|
||||||
if (global_settings.keyclick_hardware)
|
}
|
||||||
{
|
else if ((button & BUTTON_REPEAT) && (last_button == BUTTON_NONE))
|
||||||
#if !defined(SIMULATOR)
|
{
|
||||||
piezo_button_beep(false, false);
|
do_beep = true;
|
||||||
|
}
|
||||||
|
#ifdef HAVE_SCROLLWHEEL
|
||||||
|
else if (button & (BUTTON_SCROLL_BACK | BUTTON_SCROLL_FWD))
|
||||||
|
{
|
||||||
|
do_beep = true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#else
|
if (button&BUTTON_REPEAT)
|
||||||
|
last_button = button;
|
||||||
|
else
|
||||||
|
last_button = BUTTON_NONE;
|
||||||
|
if (do_beep)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_HARDWARE_CLICK
|
||||||
|
if (global_settings.keyclick)
|
||||||
|
{
|
||||||
system_sound_play(SOUND_KEYCLICK);
|
system_sound_play(SOUND_KEYCLICK);
|
||||||
|
}
|
||||||
|
if (global_settings.keyclick_hardware)
|
||||||
|
{
|
||||||
|
#if !defined(SIMULATOR)
|
||||||
|
piezo_button_beep(false, false);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
system_sound_play(SOUND_KEYCLICK);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_CODEC == SWCODEC */
|
#endif /* CONFIG_CODEC == SWCODEC */
|
||||||
|
|
Loading…
Reference in a new issue