summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/button.h
blob: 97cd1e309febe74685cb45a9e892e5492ca6a540 (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
/*
	Copyright (C) 2006,2007 John Anderson
	Copyright (C) 2012 Paul Davis

	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 program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef __ardour_mackie_control_protocol_button_h__
#define __ardour_mackie_control_protocol_button_h__

#include "controls.h"
#include "led.h"

namespace Mackie {

class Surface;

class Button : public Control
{
public:
	enum ButtonID {
		ButtonIo = 0x28,
		ButtonSends = 0x29,
		ButtonPan = 0x2a,
		ButtonPlugin = 0x2b,
		ButtonEq = 0x2c,
		ButtonDyn = 0x2d,
		ButtonLeft = 0x2e,
		ButtonRight = 0x2f,
		ButtonChannelLeft = 0x30,
		ButtonChannelRight = 0x31,
		ButtonFlip = 0x32,
		ButtonEdit = 0x33,
		ButtonNameValue = 0x34,
		ButtonTimecodeBeats = 0x35,
		ButtonF1 = 0x36,
		ButtonF2 = 0x37,
		ButtonF3 = 0x38,
		ButtonF4 = 0x39,
		ButtonF5 = 0x3a,
		ButtonF6 = 0x3b,
		ButtonF7 = 0x3c,
		ButtonF8 = 0x3d,
		ButtonF9 = 0x3e,
		ButtonF10 = 0x3f,
		ButtonF11 = 0x40,
		ButtonF12 = 0x41,
		ButtonF13 = 0x42,
		ButtonF14 = 0x43,
		ButtonF15 = 0x44,
		ButtonF16 = 0x45,
		ButtonShift = 0x46,
		ButtonOption = 0x47,
		ButtonControl = 0x48,
		ButtonCmdAlt = 0x49,
		ButtonOn = 0x4a,
		ButtonRecReady = 0x4b,
		ButtonUndo = 0x4c,
		ButtonSnapshot = 0x4d,
		ButtonTouch = 0x4e,
		ButtonRedo = 0x4f,
		ButtonMarker = 0x50,
		ButtonEnter = 0x51,
		ButtonCancel = 0x52,
		ButtonMixer = 0x53,
		ButtonFrmLeft = 0x54,
		ButtonFrmRight = 0x55,
		ButtonLoop = 0x56,
		ButtonPunchIn = 0x57,
		ButtonPunchOut = 0x58,
		ButtonHome = 0x59,
		ButtonEnd = 0x5a,
		ButtonRewind = 0x5b,
		ButtonFfwd = 0x5c,
		ButtonStop = 0x5d,
		ButtonPlay = 0x5e,
		ButtonRecord = 0x5f,
		ButtonCursorUp = 0x60,
		ButtonCursorDown = 0x61,
		ButtonCursorLeft = 0x62,
		ButtonCursorRight = 0x63,
		ButtonZoom = 0x64,
		ButtonScrub = 0x65,
		ButtonUserA = 0x66,
		ButtonUserB = 0x67,
	};

	Button (int id, int ordinal, std::string name, Group & group)
		: Control (id,  ordinal, name, group)
		, _led  (id, ordinal, name + "_led", group) {}
	
	virtual const Led & led() const  { return _led; }
	
	virtual type_t type() const { return type_button; };

	static Control* factory (Surface&, int id, int ordinal, const char*, Group&);
	
private:
	Led _led;
};

}

#endif