blob: d45b9844bc0f60bc581c9c5e34362c8d372c6d4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Daniel Stenberg
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _BUTTON_H_
#define _BUTTON_H_
#include <stdbool.h>
#include <inttypes.h>
#include "config.h"
#if defined(CHECKWPS) || !defined(__PCTOOL__)
#include "button-target.h"
#endif
#ifndef BUTTON_REMOTE
# define BUTTON_REMOTE 0
#endif
void button_init_device(void);
#ifdef HAVE_BUTTON_DATA
int button_read_device(int *);
#else
int button_read_device(void);
#endif
#ifdef HAS_BUTTON_HOLD
bool button_hold(void);
#endif
#ifdef HAS_REMOTE_BUTTON_HOLD
bool remote_button_hold(void);
#endif
void button_init (void) INIT_ATTR;
void button_close(void);
int button_status(void);
#ifdef HAVE_BUTTON_DATA
int button_status_wdata(int *pdata);
#endif
void button_set_flip(bool flip); /* turn 180 degrees */
#ifdef HAVE_BACKLIGHT
void set_backlight_filter_keypress(bool value);
#ifdef HAVE_REMOTE_LCD
void set_remote_backlight_filter_keypress(bool value);
#endif
#endif
/* button queue functions (in button_queue.c) */
void button_queue_init(void);
void button_queue_post(long id, intptr_t data);
void button_queue_post_remove_head(long id, intptr_t data);
bool button_queue_try_post(long button, int data);
int button_queue_count(void);
bool button_queue_empty(void);
bool button_queue_full(void);
void button_clear_queue(void);
long button_get(bool block);
long button_get_w_tmo(int ticks);
intptr_t button_get_data(void);
#ifdef HAVE_HEADPHONE_DETECTION
bool headphones_inserted(void);
#endif
#ifdef HAVE_LINEOUT_DETECTION
bool lineout_inserted(void);
#endif
#ifdef HAVE_WHEEL_POSITION
int wheel_status(void);
void wheel_send_events(bool send);
#endif
#ifdef HAVE_WHEEL_ACCELERATION
int button_apply_acceleration(const unsigned int data);
#endif
#define BUTTON_NONE 0x00000000
/* Button modifiers */
#define BUTTON_REL 0x02000000
#define BUTTON_REPEAT 0x04000000
/* Special buttons */
#define BUTTON_TOUCHSCREEN 0x08000000
#define BUTTON_MULTIMEDIA 0x10000000
#define BUTTON_REDRAW 0x20000000
#define BUTTON_MULTIMEDIA_PLAYPAUSE (BUTTON_MULTIMEDIA|0x01)
#define BUTTON_MULTIMEDIA_STOP (BUTTON_MULTIMEDIA|0x02)
#define BUTTON_MULTIMEDIA_PREV (BUTTON_MULTIMEDIA|0x04)
#define BUTTON_MULTIMEDIA_NEXT (BUTTON_MULTIMEDIA|0x08)
#define BUTTON_MULTIMEDIA_REW (BUTTON_MULTIMEDIA|0x10)
#define BUTTON_MULTIMEDIA_FFWD (BUTTON_MULTIMEDIA|0x20)
#define BUTTON_MULTIMEDIA_ALL (BUTTON_MULTIMEDIA_PLAYPAUSE| \
BUTTON_MULTIMEDIA_STOP| \
BUTTON_MULTIMEDIA_PREV| \
BUTTON_MULTIMEDIA_NEXT| \
BUTTON_MULTIMEDIA_REW | \
BUTTON_MULTIMEDIA_FFWD)
#ifdef HAVE_TOUCHSCREEN
long touchscreen_last_touch(void);
#if (!defined(BUTTON_TOPLEFT) || !defined(BUTTON_TOPMIDDLE) \
|| !defined(BUTTON_TOPRIGHT) || !defined(BUTTON_MIDLEFT) \
|| !defined(BUTTON_CENTER) || !defined(BUTTON_MIDRIGHT) \
|| !defined(BUTTON_BOTTOMLEFT) || !defined(BUTTON_BOTTOMMIDDLE) \
|| !defined(BUTTON_BOTTOMRIGHT)) && !defined(__PCTOOL__)
#error Touchscreen button mode BUTTON_* defines not set up correctly
#endif
#include "touchscreen.h"
#endif
#ifdef HAVE_TOUCHPAD
#include "touchpad.h"
#endif
#if (defined(HAVE_TOUCHPAD) || defined(HAVE_TOUCHSCREEN)) && !defined(HAS_BUTTON_HOLD)
void button_enable_touch(bool en);
#endif
#ifdef HAVE_SW_POWEROFF
void button_set_sw_poweroff_state(bool en);
bool button_get_sw_poweroff_state(void);
#endif
#endif /* _BUTTON_H_ */
|