1 /*
2   This file is part of g810-led.
3 
4   g810-led is free software: you can redistribute it and/or modify
5   it under the terms of the GNU General Public License as published by
6   the Free Software Foundation, version 3 of the License.
7 
8   g810-led is distributed in the hope that it will be useful,
9   but WITHOUT ANY WARRANTY; without even the implied warranty of
10   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   GNU General Public License for more details.
12 
13   You should have received a copy of the GNU General Public License
14   along with g810-led.  If not, see <https://www.gnu.org/licenses/>.
15 */
16 
17 #ifndef HELP_HELPER
18 #define HELP_HELPER
19 
20 #include <iostream>
21 
22 namespace help {
23 
24 	enum class KeyboardFeatures : uint16_t {
25 		none = 0,
26 		rgb = 1,
27 		intensity = 2,
28 		commit = 4,
29 		logo1 = 8,
30 		logo2 = 16,
31 		numpad = 32,
32 		multimedia = 64,
33 		gkeys = 128,
34 		setall = 256,
35 		setgroup = 512,
36 		setkey = 1024,
37 		setregion = 2048,
38 		setindicators = 4096,
39 		poweronfx = 8192,
40 		// "user-stored lighting" can be recalled with backlight+7 on the G Pro
41 		userstoredlighting = 16384,
42 		onboardmode = 32768,
43 		// fx features
44 
45 		all = rgb | intensity | commit | logo1 | logo2 | numpad | multimedia | gkeys |
46 		      setall | setgroup | setkey | setregion | setindicators | poweronfx | userstoredlighting | onboardmode,
47 
48 		g213 = rgb | logo1 | numpad | multimedia | setall | setregion | setindicators | poweronfx | userstoredlighting,
49 		g410 = rgb | commit | setall | setgroup | setkey | poweronfx | userstoredlighting,
50 		g413 = intensity | setall | userstoredlighting,
51 		g512 = rgb | commit | numpad | setall | setgroup | setkey | setindicators | poweronfx | userstoredlighting,
52 		g513 = rgb | commit | numpad | setall | setgroup | setkey | setindicators | poweronfx | userstoredlighting,
53 		g610 = intensity | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx | userstoredlighting,
54 		g810 = rgb | commit | logo1 | numpad | multimedia | setall | setgroup | setkey | setindicators | poweronfx,
55 		g815 = rgb | commit | logo1 | numpad | multimedia | gkeys | setall | setgroup | setkey | setindicators | onboardmode,
56 		g910 = rgb | commit | logo1 | logo2 | numpad | multimedia | gkeys | setall | setgroup | setkey | setindicators | poweronfx | userstoredlighting,
57 		gpro = rgb | commit | logo1 | setall | setgroup | setkey | setindicators | poweronfx | userstoredlighting
58 	};
59 	inline KeyboardFeatures operator|(KeyboardFeatures a, KeyboardFeatures b);
60 
61 	KeyboardFeatures getKeyboardFeatures(std::string cmdName);
62 
63 	void usage(char *arg0);
64 	void keys(char *arg0);
65 	void effects(char *arg0);
66 	void samples(char *arg0);
67 
68 }
69 
70 #ifndef VERSION
71 #define VERSION "unspecified"
72 #endif
73 
74 #endif
75