Add --model option, add M709 as valid argument
This commit is contained in:
parent
4857517565
commit
d4531da71a
6 changed files with 95 additions and 10 deletions
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
// usb device vars
|
// usb device vars
|
||||||
const uint16_t mouse_m709::_c_mouse_vid = 0x04d9;
|
const uint16_t mouse_m709::_c_mouse_vid = 0x04d9;
|
||||||
const uint16_t mouse_m709::_c_mouse_pid = 0xfc4d;
|
const uint16_t mouse_m709::_c_mouse_pid = 0xfc2a;
|
||||||
|
|
||||||
// Names of the physical buttons
|
// Names of the physical buttons
|
||||||
std::map< int, std::string > mouse_m709::_c_button_names = {
|
std::map< int, std::string > mouse_m709::_c_button_names = {
|
||||||
|
|
|
@ -36,5 +36,6 @@ void print_help(){
|
||||||
std::cout << "-v --version\n\tPrint version.\n";
|
std::cout << "-v --version\n\tPrint version.\n";
|
||||||
std::cout << "-R --read=arg\n\tRead settings from the mouse and print configuration to the specified file (\"-\" = stdout).\n";
|
std::cout << "-R --read=arg\n\tRead settings from the mouse and print configuration to the specified file (\"-\" = stdout).\n";
|
||||||
std::cout << "-D --dump=arg\n\tRead settings from the mouse and dump the raw data to the specified file (\"-\" = stdout).\n";
|
std::cout << "-D --dump=arg\n\tRead settings from the mouse and dump the raw data to the specified file (\"-\" = stdout).\n";
|
||||||
|
std::cout << "-M --model=arg\n\tSpecifies the mouse model (709, 908).\n";
|
||||||
//std::cout << "-r --repeat\n\tSets number of times the macro will be repeated (1-255).\n";
|
//std::cout << "-r --repeat\n\tSets number of times the macro will be repeated (1-255).\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,5 +95,6 @@ class rd_mouse{
|
||||||
|
|
||||||
// include header files for the individual models TODO!
|
// include header files for the individual models TODO!
|
||||||
#include "m908/mouse_m908.h"
|
#include "m908/mouse_m908.h"
|
||||||
|
#include "m709/mouse_m709.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
25
makefile
25
makefile
|
@ -13,7 +13,7 @@ LIBS != pkg-config --libs libusb-1.0
|
||||||
VERSION_STRING = "\"2.1\""
|
VERSION_STRING = "\"2.1\""
|
||||||
|
|
||||||
# compile
|
# compile
|
||||||
build: m908 data_rd.o load_config.o mouse_m908.o
|
build: m908 m709 data_rd.o load_config.o mouse_m908.o
|
||||||
$(CC) *.o -o mouse_m908 $(LIBS) $(CC_OPTIONS)
|
$(CC) *.o -o mouse_m908 $(LIBS) $(CC_OPTIONS)
|
||||||
|
|
||||||
# copy all files to their correct location
|
# copy all files to their correct location
|
||||||
|
@ -69,6 +69,8 @@ hpkg:
|
||||||
# targets for different mice
|
# targets for different mice
|
||||||
m908: constructor_m908.o data_m908.o getters_m908.o helpers_m908.o setters_m908.o writers_m908.o readers_m908.o
|
m908: constructor_m908.o data_m908.o getters_m908.o helpers_m908.o setters_m908.o writers_m908.o readers_m908.o
|
||||||
|
|
||||||
|
m709: constructor_m709.o data_m709.o getters_m709.o helpers_m709.o setters_m709.o writers_m709.o readers_m709.o
|
||||||
|
|
||||||
# individual files
|
# individual files
|
||||||
mouse_m908.o:
|
mouse_m908.o:
|
||||||
$(CC) -c mouse_m908.cpp $(CC_OPTIONS) -D VERSION_STRING=$(VERSION_STRING)
|
$(CC) -c mouse_m908.cpp $(CC_OPTIONS) -D VERSION_STRING=$(VERSION_STRING)
|
||||||
|
@ -99,3 +101,24 @@ writers_m908.o:
|
||||||
|
|
||||||
readers_m908.o:
|
readers_m908.o:
|
||||||
$(CC) -c include/m908/readers.cpp $(CC_OPTIONS) -o readers_m908.o
|
$(CC) -c include/m908/readers.cpp $(CC_OPTIONS) -o readers_m908.o
|
||||||
|
|
||||||
|
constructor_m709.o:
|
||||||
|
$(CC) -c include/m709/constructor.cpp $(CC_OPTIONS) -o constructor_m709.o
|
||||||
|
|
||||||
|
data_m709.o:
|
||||||
|
$(CC) -c include/m709/data.cpp $(CC_OPTIONS) -o data_m709.o
|
||||||
|
|
||||||
|
getters_m709.o:
|
||||||
|
$(CC) -c include/m709/getters.cpp $(CC_OPTIONS) -o getters_m709.o
|
||||||
|
|
||||||
|
helpers_m709.o:
|
||||||
|
$(CC) -c include/m709/helpers.cpp $(CC_OPTIONS) -o helpers_m709.o
|
||||||
|
|
||||||
|
setters_m709.o:
|
||||||
|
$(CC) -c include/m709/setters.cpp $(CC_OPTIONS) -o setters_m709.o
|
||||||
|
|
||||||
|
writers_m709.o:
|
||||||
|
$(CC) -c include/m709/writers.cpp $(CC_OPTIONS) -o writers_m709.o
|
||||||
|
|
||||||
|
readers_m709.o:
|
||||||
|
$(CC) -c include/m709/readers.cpp $(CC_OPTIONS) -o readers_m709.o
|
||||||
|
|
|
@ -49,6 +49,9 @@ Read settings from the mouse and print the configuration to the specfied file. U
|
||||||
.TP
|
.TP
|
||||||
\fB\-D\fR, \fB\-\-dump\fR=\fIFILE\fR
|
\fB\-D\fR, \fB\-\-dump\fR=\fIFILE\fR
|
||||||
Read settings from the mouse and dump the raw data to the specfied file. Uses stdout when \fIFILE\fR is "-". Only useful for debugging and development.
|
Read settings from the mouse and dump the raw data to the specfied file. Uses stdout when \fIFILE\fR is "-". Only useful for debugging and development.
|
||||||
|
.TP
|
||||||
|
\fB\-M\fR, \fB\-\-model\fR=\fINAME\fR
|
||||||
|
Specifies the model of the mouse (709, 908).
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
To send the configuration from example.ini
|
To send the configuration from example.ini
|
||||||
.PP
|
.PP
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
// this function checks its arguments and opens the mouse accordingly
|
// this function checks its arguments and opens the mouse accordingly
|
||||||
// (with vid and pid or with bus and device)
|
// (with vid and pid or with bus and device)
|
||||||
int open_mouse_wrapper( mouse_m908 &m, const bool flag_bus, const bool flag_device,
|
template< typename T >int open_mouse_wrapper( T &m, const bool flag_bus, const bool flag_device,
|
||||||
const std::string &string_bus, const std::string &string_device ){
|
const std::string &string_bus, const std::string &string_device ){
|
||||||
|
|
||||||
int open_return = 0; // open_mouse() return value
|
int open_return = 0; // open_mouse() return value
|
||||||
|
@ -71,6 +71,7 @@ int open_mouse_wrapper( mouse_m908 &m, const bool flag_bus, const bool flag_devi
|
||||||
std::cout << "Couldn't open mouse.\n";
|
std::cout << "Couldn't open mouse.\n";
|
||||||
std::cout << "- Check hardware and permissions (maybe you need to be root?)\n";
|
std::cout << "- Check hardware and permissions (maybe you need to be root?)\n";
|
||||||
std::cout << "- Try with or without the --kernel-driver option\n";
|
std::cout << "- Try with or without the --kernel-driver option\n";
|
||||||
|
std::cout << "- Try with the --model option\n";
|
||||||
std::cout << "- Try with the --bus and --device options\n";
|
std::cout << "- Try with the --bus and --device options\n";
|
||||||
std::cout << "If nothing works please report this as a bug.\n";
|
std::cout << "If nothing works please report this as a bug.\n";
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -79,10 +80,17 @@ int open_mouse_wrapper( mouse_m908 &m, const bool flag_bus, const bool flag_devi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function to perform all actions on the mouse
|
||||||
|
template< typename T > int perform_actions(
|
||||||
|
bool flag_config, bool flag_profile, bool flag_macro, bool flag_number,
|
||||||
|
bool flag_bus, bool flag_device, bool flag_kernel_driver,
|
||||||
|
bool flag_dump_settings, bool flag_read_settings,
|
||||||
|
std::string string_config, std::string string_profile, std::string string_macro,
|
||||||
|
std::string string_number, std::string string_bus, std::string string_device,
|
||||||
|
std::string string_dump, std::string string_read );
|
||||||
|
|
||||||
int main( int argc, char **argv ){
|
int main( int argc, char **argv ){
|
||||||
|
|
||||||
mouse_m908 m;
|
|
||||||
|
|
||||||
// if no arguments: print help
|
// if no arguments: print help
|
||||||
if( argc == 1 ){
|
if( argc == 1 ){
|
||||||
print_help();
|
print_help();
|
||||||
|
@ -103,6 +111,7 @@ int main( int argc, char **argv ){
|
||||||
{"version", no_argument, 0, 'v'},
|
{"version", no_argument, 0, 'v'},
|
||||||
{"dump", required_argument, 0, 'D'},
|
{"dump", required_argument, 0, 'D'},
|
||||||
{"read", required_argument, 0, 'R'},
|
{"read", required_argument, 0, 'R'},
|
||||||
|
{"model", required_argument, 0, 'M'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -120,11 +129,11 @@ int main( int argc, char **argv ){
|
||||||
//std::string string_repeat;
|
//std::string string_repeat;
|
||||||
std::string string_bus, string_device;
|
std::string string_bus, string_device;
|
||||||
std::string string_dump, string_read;
|
std::string string_dump, string_read;
|
||||||
|
std::string string_model = "908";
|
||||||
|
|
||||||
//parse command line options
|
//parse command line options
|
||||||
int c, option_index = 0;
|
int c, option_index = 0;
|
||||||
//while( (c = getopt_long( argc, argv, "hc:p:m:n:b:d:kvr:",
|
while( (c = getopt_long( argc, argv, "hc:p:m:n:b:d:kvD:R:M:",
|
||||||
while( (c = getopt_long( argc, argv, "hc:p:m:n:b:d:kvD:R:",
|
|
||||||
long_options, &option_index ) ) != -1 ){
|
long_options, &option_index ) ) != -1 ){
|
||||||
|
|
||||||
switch( c ){
|
switch( c ){
|
||||||
|
@ -174,6 +183,9 @@ int main( int argc, char **argv ){
|
||||||
flag_read_settings = true;
|
flag_read_settings = true;
|
||||||
string_read = optarg;
|
string_read = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'M':
|
||||||
|
string_model = optarg;
|
||||||
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -181,13 +193,58 @@ int main( int argc, char **argv ){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// set whether to detach kernel driver
|
|
||||||
m.set_detach_kernel_driver( !flag_kernel_driver );
|
|
||||||
|
|
||||||
// print version if requested
|
// print version if requested
|
||||||
if( flag_version )
|
if( flag_version )
|
||||||
std::cout << "Version: " << VERSION_STRING << "\n";
|
std::cout << "Version: " << VERSION_STRING << "\n";
|
||||||
|
|
||||||
|
// parse model → call perform_actions()
|
||||||
|
if( string_model == "908" ){
|
||||||
|
|
||||||
|
return perform_actions< mouse_m908 >(
|
||||||
|
flag_config, flag_profile, flag_macro, flag_number,
|
||||||
|
flag_bus, flag_device, flag_kernel_driver,
|
||||||
|
flag_dump_settings, flag_read_settings,
|
||||||
|
string_config, string_profile, string_macro,
|
||||||
|
string_number, string_bus, string_device,
|
||||||
|
string_dump, string_read );
|
||||||
|
|
||||||
|
}else if( string_model == "709" ){
|
||||||
|
|
||||||
|
return perform_actions< mouse_m709 >(
|
||||||
|
flag_config, flag_profile, flag_macro, flag_number,
|
||||||
|
flag_bus, flag_device, flag_kernel_driver,
|
||||||
|
flag_dump_settings, flag_read_settings,
|
||||||
|
string_config, string_profile, string_macro,
|
||||||
|
string_number, string_bus, string_device,
|
||||||
|
string_dump, string_read );
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
std::cout << "Unknown model, valid options are:\n";
|
||||||
|
std::cout << "709\n908\n";
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template< typename T > int perform_actions(
|
||||||
|
bool flag_config, bool flag_profile, bool flag_macro, bool flag_number,
|
||||||
|
bool flag_bus, bool flag_device, bool flag_kernel_driver,
|
||||||
|
bool flag_dump_settings, bool flag_read_settings,
|
||||||
|
std::string string_config, std::string string_profile, std::string string_macro,
|
||||||
|
std::string string_number, std::string string_bus, std::string string_device,
|
||||||
|
std::string string_dump, std::string string_read ){
|
||||||
|
|
||||||
|
// create mouse object
|
||||||
|
T m;
|
||||||
|
|
||||||
|
// set whether to detach kernel driver
|
||||||
|
m.set_detach_kernel_driver( !flag_kernel_driver );
|
||||||
|
|
||||||
// read settings and dump raw data
|
// read settings and dump raw data
|
||||||
if( flag_dump_settings ){
|
if( flag_dump_settings ){
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue