Restructure and add compiler tests
This commit is contained in:
parent
07acbb4d1d
commit
0a8ec16256
@ -1,7 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
dir="$(dirname $0)"
|
|
||||||
g++ "$dir/comfortable-swipe.cpp" \
|
|
||||||
-o "$1" \
|
|
||||||
-std=c++11 \
|
|
||||||
-O2 -lxdo -Wno-unused-result \
|
|
||||||
-DCOMFORTABLE_SWIPE_VERSION="\"$(cat $dir/VERSION | tr -d '[:space:]')\""
|
|
||||||
@ -1,5 +1,12 @@
|
|||||||
#ifndef __COMFORTABLE_SWIPE__index_hpp__
|
/**
|
||||||
#define __COMFORTABLE_SWIPE__index_hpp__
|
* Add header files will be imported here.
|
||||||
|
* You can import this as a shorthand:
|
||||||
|
*
|
||||||
|
* #include "../all_headers.hpp"
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __COMFORTABLE_SWIPE__all_headers_hpp__
|
||||||
|
#define __COMFORTABLE_SWIPE__all_headers_hpp__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
@ -36,21 +43,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <map> // std::map
|
#include <map> // std::map
|
||||||
#include <string> // std::string
|
#include <string> // std::string
|
||||||
|
|
||||||
/**
|
|
||||||
* Make sure to include your header files here so that they can be imported by other modules.
|
|
||||||
*/
|
|
||||||
#include "gesture/xdo_gesture.h"
|
|
||||||
#include "gesture/swipe_gesture.h"
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
namespace comfortable_swipe
|
namespace comfortable_swipe
|
||||||
{
|
{
|
||||||
|
// driver method
|
||||||
|
int driver();
|
||||||
|
// this is found in the util/ folder
|
||||||
namespace util
|
namespace util
|
||||||
{
|
{
|
||||||
const char* autostart_filename();
|
const char* autostart_filename();
|
||||||
constexpr const char* conf_filename();
|
constexpr const char* conf_filename();
|
||||||
std::map<std::string, std::string> read_config_file(const char*);
|
std::map<std::string, std::string> read_config_file(const char*);
|
||||||
}
|
}
|
||||||
|
// this is found in the service/ folder
|
||||||
namespace service
|
namespace service
|
||||||
{
|
{
|
||||||
void autostart();
|
void autostart();
|
||||||
@ -66,4 +72,10 @@ extern "C"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __COMFORTABLE_SWIPE__index_hpp__ */
|
// add headers for classes here so it can be imported during include
|
||||||
|
#include "gesture/xdo_gesture.h"
|
||||||
|
#include "gesture/swipe_gesture.h"
|
||||||
|
#include "gesture/keyboard_swipe_gesture.h"
|
||||||
|
#include "gesture/mouse_hold_gesture.h"
|
||||||
|
|
||||||
|
#endif /* __COMFORTABLE_SWIPE__all_headers_hpp__ */
|
||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef __COMFORTABLE_SWIPE__service_buffer__
|
#ifndef __COMFORTABLE_SWIPE__driver__
|
||||||
#define __COMFORTABLE_SWIPE__service_buffer__
|
#define __COMFORTABLE_SWIPE__driver__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
@ -21,15 +21,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include <cstdio> // fgets_unlocked, stdin
|
#include <cstdio> // fgets_unlocked, stdin
|
||||||
#include <iostream> // std::ios, std::cout, std::cin
|
#include <iostream> // std::ios, std::cout, std::cin
|
||||||
#include "../index.hpp"
|
#include "all_headers.hpp"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the comfortable-swipe service by buffering libinput debug-events.
|
* The main driver program.
|
||||||
*/
|
*/
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe
|
||||||
{
|
{
|
||||||
void buffer()
|
int driver()
|
||||||
{
|
{
|
||||||
|
// unsync for faster IO
|
||||||
std::ios::sync_with_stdio(false);
|
std::ios::sync_with_stdio(false);
|
||||||
std::cin.tie(0);
|
std::cin.tie(0);
|
||||||
std::cout.tie(0);
|
std::cout.tie(0);
|
||||||
@ -40,6 +41,19 @@ namespace comfortable_swipe::service
|
|||||||
comfortable_swipe::util::conf_filename()
|
comfortable_swipe::util::conf_filename()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// initialize mouse hold gesture handler
|
||||||
|
// for now, this supports 3-finger and 4-finger hold
|
||||||
|
// Examples:
|
||||||
|
// hold3=move move mouse on 3 fingers
|
||||||
|
// hold3=button1 hold button 1 on 3 fingers
|
||||||
|
// hold4=button3 hold button 3 (right click) on 3 fingers
|
||||||
|
// hold3=ignore <do nothing>
|
||||||
|
comfortable_swipe::gesture::mouse_hold_gesture mouse_hold
|
||||||
|
(
|
||||||
|
config["hold3"].c_str(),
|
||||||
|
config["hold4"].c_str()
|
||||||
|
);
|
||||||
|
|
||||||
// initialize keyboard swipe gesture handler
|
// initialize keyboard swipe gesture handler
|
||||||
comfortable_swipe::gesture::keyboard_swipe_gesture keyboard_swipe
|
comfortable_swipe::gesture::keyboard_swipe_gesture keyboard_swipe
|
||||||
(
|
(
|
||||||
@ -54,13 +68,6 @@ namespace comfortable_swipe::service
|
|||||||
config["down4"].c_str()
|
config["down4"].c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
// initialize mouse swipe gesture handler
|
|
||||||
comfortable_swipe::gesture::mouse_swipe_gesture mouse_hold
|
|
||||||
(
|
|
||||||
"",
|
|
||||||
"mouse1"
|
|
||||||
);
|
|
||||||
|
|
||||||
// prepare data containers
|
// prepare data containers
|
||||||
std::array<char, 256> line;
|
std::array<char, 256> line;
|
||||||
|
|
||||||
@ -77,7 +84,9 @@ namespace comfortable_swipe::service
|
|||||||
keyboard_swipe.parse_line(line.data());
|
keyboard_swipe.parse_line(line.data());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __COMFORTABLE_SWIPE__service_buffer__ */
|
#endif /* __COMFORTABLE_SWIPE__driver__ */
|
||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture__
|
#ifndef __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture__
|
||||||
#define __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture__
|
#define __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
@ -21,8 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include <iostream> // std::cout, std::endl
|
#include <iostream> // std::cout, std::endl
|
||||||
#include <cstdio> // std::sscanf
|
#include <cstdio> // std::sscanf
|
||||||
#include <cstdlib> // strncmp
|
#include <cstring> // strncmp
|
||||||
#include "mouse_swipe_gesture.h"
|
#include "mouse_hold_gesture.h"
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -36,7 +36,7 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Constructs a new mouse gesture, given "hold3" and "hold4" configurations.
|
* Constructs a new mouse gesture, given "hold3" and "hold4" configurations.
|
||||||
*/
|
*/
|
||||||
mouse_swipe_gesture::mouse_swipe_gesture
|
mouse_hold_gesture::mouse_hold_gesture
|
||||||
(
|
(
|
||||||
const char* hold3,
|
const char* hold3,
|
||||||
const char* hold4
|
const char* hold4
|
||||||
@ -50,19 +50,24 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Destructs this mouse swipe gesture.
|
* Destructs this mouse swipe gesture.
|
||||||
*/
|
*/
|
||||||
mouse_swipe_gesture::~mouse_swipe_gesture()
|
mouse_hold_gesture::~mouse_hold_gesture()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run mousedown command on hold input.
|
* Run mousedown command on hold input.
|
||||||
*/
|
*/
|
||||||
void mouse_swipe_gesture::do_mousedown(const char * mouseinput)
|
void mouse_hold_gesture::do_mousedown(const char * mouseinput)
|
||||||
{
|
{
|
||||||
int mouse = this->parse_mouse_input(mouseinput);
|
int button = this->parse_mouse_button(mouseinput);
|
||||||
if (mouse != -1)
|
if (button != -1)
|
||||||
{
|
{
|
||||||
// eg. MOUSE DOWN hold3 mouse1
|
// eg. MOUSE DOWN hold3 mouse1
|
||||||
std::printf("MOUSE DOWN hold%d %s\n", this->fingers, mouseinput);
|
std::printf("MOUSE DOWN hold%d %s\n", this->fingers, mouseinput);
|
||||||
|
if (button != 0)
|
||||||
|
{
|
||||||
|
// send mouse down on associated button
|
||||||
|
xdo_mouse_down(this->xdo, CURRENTWINDOW, button);
|
||||||
|
}
|
||||||
this->flag_mousedown = true;
|
this->flag_mousedown = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,17 +75,17 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Run mouseup command on hold output.
|
* Run mouseup command on hold output.
|
||||||
*/
|
*/
|
||||||
void mouse_swipe_gesture::do_mouseup(const char * mouseinput)
|
void mouse_hold_gesture::do_mouseup(const char * mouseinput)
|
||||||
{
|
{
|
||||||
int mouse = this->parse_mouse_input(mouseinput);
|
int button = this->parse_mouse_button(mouseinput);
|
||||||
if (mouse != -1)
|
if (button != -1)
|
||||||
{
|
{
|
||||||
std::printf("MOUSE UP hold%d %s\n", this->fingers, mouseinput);
|
std::printf("MOUSE UP hold%d %s\n", this->fingers, mouseinput);
|
||||||
if (mouse != 0)
|
if (button != 0)
|
||||||
{
|
{
|
||||||
// send mouse up to xdo
|
// send mouse up on associated button
|
||||||
|
xdo_mouse_up(this->xdo, CURRENTWINDOW, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->flag_mousedown = false;
|
this->flag_mousedown = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -89,22 +94,17 @@ namespace comfortable_swipe::gesture
|
|||||||
* Utility method to parse mouse number from input.
|
* Utility method to parse mouse number from input.
|
||||||
* Returns -1 on failure.
|
* Returns -1 on failure.
|
||||||
*/
|
*/
|
||||||
int mouse_swipe_gesture::parse_mouse_input(const char *input)
|
int mouse_hold_gesture::parse_mouse_button(const char *input)
|
||||||
{
|
{
|
||||||
// check if "mouse" is prefix
|
// just move without holding button down
|
||||||
if (strncmp(input, "mouse", 5) == 0)
|
if (std::strcmp(input, "move") == 0)
|
||||||
|
return 0;
|
||||||
|
// get button number
|
||||||
|
int button;
|
||||||
|
if (std::sscanf(input, "button%d", &button) == 1)
|
||||||
{
|
{
|
||||||
if (input[5] == '\0')
|
// parse the number after "mouse"
|
||||||
{
|
return button;
|
||||||
// just "mouse" without a number
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int mouseno;
|
|
||||||
if (std::sscanf(input + 5, "%d", &mouseno) == 1)
|
|
||||||
{
|
|
||||||
// parse the number after "mouse"
|
|
||||||
return mouseno;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
@ -113,7 +113,7 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Hook on begin of mouse swipe gesture.
|
* Hook on begin of mouse swipe gesture.
|
||||||
*/
|
*/
|
||||||
void mouse_swipe_gesture::begin()
|
void mouse_hold_gesture::begin()
|
||||||
{
|
{
|
||||||
// call superclass method
|
// call superclass method
|
||||||
swipe_gesture::begin();
|
swipe_gesture::begin();
|
||||||
@ -131,7 +131,7 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Hook on end of mouse swipe gesture.
|
* Hook on end of mouse swipe gesture.
|
||||||
*/
|
*/
|
||||||
void mouse_swipe_gesture::update()
|
void mouse_hold_gesture::update()
|
||||||
{
|
{
|
||||||
// call superclass method
|
// call superclass method
|
||||||
swipe_gesture::update();
|
swipe_gesture::update();
|
||||||
@ -149,7 +149,7 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Hook on end of swipe gesture.
|
* Hook on end of swipe gesture.
|
||||||
*/
|
*/
|
||||||
void mouse_swipe_gesture::end()
|
void mouse_hold_gesture::end()
|
||||||
{
|
{
|
||||||
if (this->is_mousedown())
|
if (this->is_mousedown())
|
||||||
{
|
{
|
||||||
@ -170,10 +170,10 @@ namespace comfortable_swipe::gesture
|
|||||||
/**
|
/**
|
||||||
* Utility method to check if mouse is current held.
|
* Utility method to check if mouse is current held.
|
||||||
*/
|
*/
|
||||||
bool mouse_swipe_gesture::is_mousedown()
|
bool mouse_hold_gesture::is_mousedown()
|
||||||
{
|
{
|
||||||
return this->flag_mousedown;
|
return this->flag_mousedown;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture__ */
|
#endif /* __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture__ */
|
||||||
@ -1,5 +1,5 @@
|
|||||||
#ifndef __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture_h__
|
#ifndef __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture_h__
|
||||||
#define __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture_h__
|
#define __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture_h__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
@ -27,16 +27,16 @@ extern "C" {
|
|||||||
|
|
||||||
namespace comfortable_swipe::gesture
|
namespace comfortable_swipe::gesture
|
||||||
{
|
{
|
||||||
class mouse_swipe_gesture : public swipe_gesture
|
class mouse_hold_gesture : public swipe_gesture
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
mouse_swipe_gesture(
|
mouse_hold_gesture(
|
||||||
const char* hold3, // 3 finger mouse down
|
const char* hold3, // 3 finger mouse down
|
||||||
const char* hold4 // 4 finger mouse down
|
const char* hold4 // 4 finger mouse down
|
||||||
);
|
);
|
||||||
|
|
||||||
virtual ~mouse_swipe_gesture();
|
virtual ~mouse_hold_gesture();
|
||||||
|
|
||||||
// override begin and end for mousedown
|
// override begin and end for mousedown
|
||||||
virtual void begin() override;
|
virtual void begin() override;
|
||||||
@ -49,7 +49,7 @@ namespace comfortable_swipe::gesture
|
|||||||
virtual bool is_mousedown();
|
virtual bool is_mousedown();
|
||||||
|
|
||||||
// utility method to parse mouse input given config characters
|
// utility method to parse mouse input given config characters
|
||||||
virtual int parse_mouse_input(const char*);
|
virtual int parse_mouse_button(const char*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// command holders
|
// command holders
|
||||||
@ -65,4 +65,4 @@ namespace comfortable_swipe::gesture
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __COMFORTABLE_SWIPE__gesture_mouse_swipe_gesture_h__ */
|
#endif /* __COMFORTABLE_SWIPE__gesture_mouse_hold_gesture_h__ */
|
||||||
@ -19,17 +19,17 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "index.hpp"
|
#include "all_headers.hpp"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure to include all implementation (.cpp) files below to be ready for export.
|
* Add all cpp files below to be ready for export.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gesture/xdo_gesture.cpp"
|
#include "gesture/xdo_gesture.cpp"
|
||||||
#include "gesture/swipe_gesture.cpp"
|
#include "gesture/swipe_gesture.cpp"
|
||||||
#include "gesture/swipe_gesture.regex.cpp"
|
#include "gesture/swipe_gesture.regex.cpp"
|
||||||
#include "gesture/keyboard_swipe_gesture.cpp"
|
#include "gesture/keyboard_swipe_gesture.cpp"
|
||||||
#include "gesture/mouse_swipe_gesture.cpp"
|
#include "gesture/mouse_hold_gesture.cpp"
|
||||||
#include "service/autostart.cpp"
|
#include "service/autostart.cpp"
|
||||||
#include "service/buffer.cpp"
|
#include "service/buffer.cpp"
|
||||||
#include "service/config.cpp"
|
#include "service/config.cpp"
|
||||||
@ -42,5 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "util/autostart_filename.cpp"
|
#include "util/autostart_filename.cpp"
|
||||||
#include "util/conf_filename.cpp"
|
#include "util/conf_filename.cpp"
|
||||||
#include "util/read_config_file.cpp"
|
#include "util/read_config_file.cpp"
|
||||||
|
#include "driver.cpp"
|
||||||
|
|
||||||
#endif /* __COMFORTABLE_SWIPE__ */
|
#endif /* __COMFORTABLE_SWIPE__ */
|
||||||
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <string> // std::string
|
#include <string> // std::string
|
||||||
#include <cstdio> // std::remove
|
#include <cstdio> // std::remove
|
||||||
#include <cstdlib> // std::system
|
#include <cstdlib> // std::system
|
||||||
#include "../index.hpp"
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -45,7 +45,7 @@ namespace comfortable_swipe::service
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
else
|
else
|
||||||
std::cout << "Autostart switched off" << std::endl;
|
std::cout << "Autostart switched off" << std::endl;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// file not found, create it
|
// file not found, create it
|
||||||
int result = std::system(("mkdir -p $(dirname " + path + ")").data());
|
int result = std::system(("mkdir -p $(dirname " + path + ")").data());
|
||||||
36
comfortable_swipe/service/buffer.cpp
Normal file
36
comfortable_swipe/service/buffer.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#ifndef __COMFORTABLE_SWIPE__service_buffer__
|
||||||
|
#define __COMFORTABLE_SWIPE__service_buffer__
|
||||||
|
|
||||||
|
/*
|
||||||
|
Comfortable Swipe
|
||||||
|
by Rico Tiongson
|
||||||
|
|
||||||
|
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 3 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cstdlib> // std::exit
|
||||||
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the comfortable-swipe service by buffering libinput debug-events.
|
||||||
|
*/
|
||||||
|
namespace comfortable_swipe::service
|
||||||
|
{
|
||||||
|
void buffer()
|
||||||
|
{
|
||||||
|
std::exit(comfortable_swipe::driver());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __COMFORTABLE_SWIPE__service_buffer__ */
|
||||||
@ -19,8 +19,8 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../index.hpp"
|
|
||||||
#include <cstdio> // std::puts
|
#include <cstdio> // std::puts
|
||||||
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cstdio> // std::puts, std::printf
|
#include <cstdio> // std::puts, std::printf
|
||||||
#include "../index.hpp"
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../index.hpp"
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -19,8 +19,8 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../index.hpp"
|
|
||||||
#include <cstdlib> // std::system
|
#include <cstdlib> // std::system
|
||||||
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -19,7 +19,6 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../index.hpp"
|
|
||||||
#include <stdexcept> // std::runtime_error
|
#include <stdexcept> // std::runtime_error
|
||||||
#include <unistd.h> // popen, pclose, getpid, access, F_OK
|
#include <unistd.h> // popen, pclose, getpid, access, F_OK
|
||||||
#include <memory> // std::unique_ptr
|
#include <memory> // std::unique_ptr
|
||||||
@ -27,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <cstdlib> // std::atoi
|
#include <cstdlib> // std::atoi
|
||||||
#include <cstdio> // FILE, std::feof, std::fgets, std::printf
|
#include <cstdio> // FILE, std::feof, std::fgets, std::printf
|
||||||
#include <regex> // std::cmatch, std::regex, std::regex_match
|
#include <regex> // std::cmatch, std::regex, std::regex_match
|
||||||
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -1,9 +1,6 @@
|
|||||||
#ifndef __COMFORTABLE_SWIPE__service_stop__
|
#ifndef __COMFORTABLE_SWIPE__service_stop__
|
||||||
#define __COMFORTABLE_SWIPE__service_stop__
|
#define __COMFORTABLE_SWIPE__service_stop__
|
||||||
|
|
||||||
#include <cstdio> // std::FILE, std::feof, std::fgets
|
|
||||||
#include <cstdlib> // std::atoi, std::system
|
|
||||||
#include <string> // std::string, std::to_string
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
by Rico Tiongson
|
by Rico Tiongson
|
||||||
@ -26,8 +23,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <unistd.h> // popen, pclose, getpid
|
#include <unistd.h> // popen, pclose, getpid
|
||||||
#include <memory> // std::unique_ptr
|
#include <memory> // std::unique_ptr
|
||||||
#include <array> // std::array
|
#include <array> // std::array
|
||||||
#include <cstdlib> // std::atoi
|
#include <cstdio> // std::FILE, std::feof, std::fgets
|
||||||
#include <cstdio> // FILE, std::feof, std::fgets
|
#include <cstdlib> // std::atoi, std::system
|
||||||
|
#include <string> // std::string, std::to_string
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../index.hpp"
|
#include "../all_headers.hpp"
|
||||||
|
|
||||||
namespace comfortable_swipe::util
|
namespace comfortable_swipe::util
|
||||||
{
|
{
|
||||||
@ -19,9 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <ios> // std::ios
|
#include <ios> // std::ios
|
||||||
#include <iostream> // std::cin, std::cout, std::cerr
|
#include <iostream> // std::cin, std::cout, std::cerr
|
||||||
#include <string> // std::string
|
#include <string> // std::string
|
||||||
#include "lib/comfortable_swipe"
|
#include "comfortable_swipe/lib"
|
||||||
|
|
||||||
/* MAIN DRIVER FUNCTION */
|
/* Command-line function. */
|
||||||
|
|
||||||
int main(int argc, char** args)
|
int main(int argc, char** args)
|
||||||
{
|
{
|
||||||
9
cpp.compile.sh
Executable file
9
cpp.compile.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
dir="$(dirname $0)"
|
||||||
|
version="$(cat "$dir/VERSION" | tr -d '[:space:]')"
|
||||||
|
|
||||||
|
exec g++ $@ \
|
||||||
|
-std=c++11 \
|
||||||
|
-O2 -lxdo -Wno-unused-result \
|
||||||
|
-DCOMFORTABLE_SWIPE_VERSION="\"$version\""
|
||||||
8
install
8
install
@ -1,11 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
function install {
|
function install {
|
||||||
# prefer running as root
|
# prefer running as root
|
||||||
local dir="$(dirname $0)"
|
local dir="$(dirname "$0")"
|
||||||
local program=comfortable-swipe
|
local program=comfortable-swipe
|
||||||
local program_exe=/usr/local/bin/$program
|
local program_exe=/usr/local/bin/$program
|
||||||
local compile_command="$dir/$program.compile.sh"
|
local compile_command="$dir/cpp.compile.sh $dir/command_line.cpp"
|
||||||
local conf_path=/usr/local/share/$program/$program.conf
|
local conf_path=/usr/local/share/$program/$program.conf
|
||||||
local dconf_path="$dir/defaults.conf"
|
local dconf_path="$dir/defaults.conf"
|
||||||
local old_conf_path="${XDG_CONFIG_HOME:-$HOME/.config}/$program.conf"
|
local old_conf_path="${XDG_CONFIG_HOME:-$HOME/.config}/$program.conf"
|
||||||
@ -70,7 +72,7 @@ function install {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# compile library
|
# compile library
|
||||||
sudo "$compile_command" "$program_exe" || abort
|
sudo "$compile_command" -o "$program_exe" || abort
|
||||||
|
|
||||||
# add permissions to input group (defer)
|
# add permissions to input group (defer)
|
||||||
# GROUP=$(ls -l /dev/input/event* | awk '{print $4}' | head --line=1) || abort
|
# GROUP=$(ls -l /dev/input/event* | awk '{print $4}' | head --line=1) || abort
|
||||||
|
|||||||
@ -1,6 +1,24 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
DIR=$(dirname $0)
|
set -e
|
||||||
g++ -std=c++11 -O2 $DIR/test_regex.cpp -lxdo -o test.out || exec "Test aborted"
|
|
||||||
./test.out || rm test.out
|
DIR="$(dirname "$0")"
|
||||||
rm test.out
|
|
||||||
|
# just call abort on error
|
||||||
|
tempout="$(mktemp)"
|
||||||
|
abort () {
|
||||||
|
rm "$tempout"
|
||||||
|
echo "Test aborted"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# run all shell files in this directory
|
||||||
|
for sh in "$DIR/test_"*.sh; do
|
||||||
|
/bin/bash "$sh" || abort
|
||||||
|
done
|
||||||
|
|
||||||
|
# run all cpp files in this directory
|
||||||
|
for cpp in "$DIR/test_"*.cpp; do
|
||||||
|
g++ -std=c++11 -O2 "$cpp" -lxdo -o "$tempout" || abort
|
||||||
|
"$tempout" || abort
|
||||||
|
done
|
||||||
|
|||||||
32
tests/test_compiler.sh
Executable file
32
tests/test_compiler.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
DIR="$(dirname "$0")"
|
||||||
|
root="$(dirname "$DIR")"
|
||||||
|
compiler="$root/cpp.compile.sh"
|
||||||
|
command_line="$root/command_line.cpp"
|
||||||
|
module="$root/comfortable_swipe"
|
||||||
|
|
||||||
|
# just call abort on error
|
||||||
|
tempout="$(mktemp)"
|
||||||
|
abort () {
|
||||||
|
rm "$tempout"
|
||||||
|
echo "Test aborted"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# try to compile every cpp/hpp file in module
|
||||||
|
# header files first
|
||||||
|
# then compile cpp files
|
||||||
|
# finally, compile command line
|
||||||
|
shopt -s nullglob
|
||||||
|
for cpp in \
|
||||||
|
"$module"/**/*.h \
|
||||||
|
"$module"/**/*.hpp \
|
||||||
|
"$module"/**/*.cpp \
|
||||||
|
"$module"/lib \
|
||||||
|
"$command_line"
|
||||||
|
do
|
||||||
|
"$compiler" -c "$cpp" -o "$tempout" || abort
|
||||||
|
done
|
||||||
4
tests/test_regex.cpp
Normal file → Executable file
4
tests/test_regex.cpp
Normal file → Executable file
@ -2,8 +2,8 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "../lib/gesture/swipe_gesture.h"
|
#include "../comfortable_swipe/gesture/swipe_gesture.h"
|
||||||
#include "../lib/gesture/swipe_gesture.regex.cpp"
|
#include "../comfortable_swipe/gesture/swipe_gesture.regex.cpp"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Comfortable Swipe
|
Comfortable Swipe
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
echo "Uninstalling..."
|
echo "Uninstalling..."
|
||||||
rm ${XDG_CONFIG_HOME:-$HOME/.config}/autostart/comfortable-swipe.desktop 2> /dev/null
|
rm "${XDG_CONFIG_HOME:-$HOME/.config}/autostart/comfortable-swipe.desktop" 2> /dev/null
|
||||||
comfortable-swipe stop 2> /dev/null
|
comfortable-swipe stop 2> /dev/null
|
||||||
rm $HOME/.local/bin/comfortable-swipe 2> /dev/null # compat
|
rm "$HOME/.local/bin/comfortable-swipe" 2> /dev/null # compat
|
||||||
sudo rm /usr/local/bin/comfortable-swipe 2> /dev/null
|
sudo rm /usr/local/bin/comfortable-swipe 2> /dev/null
|
||||||
echo "Successfully uninstalled comfortable-swipe"
|
echo "Successfully uninstalled comfortable-swipe"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user