summaryrefslogtreecommitdiff
path: root/firmware/drivers/button.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-07-24 15:21:08 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-07-24 15:21:08 +0000
commit51065bbaee2aeb2ea1c233a9ce34877e6e04ca80 (patch)
tree0138cdf732debd28a40eb75a4c2119092f792b30 /firmware/drivers/button.c
parente8e55e2aa33ee1cf828b24ced59be4ce5e42436f (diff)
downloadrockbox-51065bbaee2aeb2ea1c233a9ce34877e6e04ca80.zip
rockbox-51065bbaee2aeb2ea1c233a9ce34877e6e04ca80.tar.gz
rockbox-51065bbaee2aeb2ea1c233a9ce34877e6e04ca80.tar.bz2
rockbox-51065bbaee2aeb2ea1c233a9ce34877e6e04ca80.tar.xz
Added key repeat control
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1433 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r--firmware/drivers/button.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 8dec769..b1bfdd8 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -35,6 +35,8 @@ struct event_queue button_queue;
#define REPEAT_START 6
#define REPEAT_INTERVAL 4
+static int repeat_mask = DEFAULT_REPEAT_MASK;
+
static int button_read(void);
static void button_tick(void)
@@ -63,9 +65,13 @@ static void button_tick(void)
}
}
else if (count++ > REPEAT_START) {
- post = true;
- repeat = true;
- count = REPEAT_INTERVAL;
+ /* Only repeat if a repeatable key is pressed */
+ if(btn & repeat_mask)
+ {
+ post = true;
+ repeat = true;
+ count = REPEAT_INTERVAL;
+ }
/* If the OFF button is pressed long enough, and we are
still alive, then the unit must be connected to a
charger. Therefore we will reboot and let the original
@@ -145,6 +151,13 @@ void button_init()
tick_add_task(button_tick);
}
+int button_set_repeat(int newmask)
+{
+ int oldmask = repeat_mask;
+ repeat_mask = newmask;
+ return oldmask;
+}
+
/*
* Get button pressed from hardware
*/