mirror of
https://github.com/jtgans/g13gui.git
synced 2025-06-20 08:23:50 -04:00
g13d: Reformat all the files to Google style
This is closer to what I'm looking for, and gives us a style guide to boot.
This commit is contained in:
parent
234b5aac7f
commit
1918d6875c
@ -1,27 +1,27 @@
|
|||||||
---
|
---
|
||||||
Language: Cpp
|
Language: Cpp
|
||||||
# BasedOnStyle: LLVM
|
BasedOnStyle: Google
|
||||||
AccessModifierOffset: -2
|
AccessModifierOffset: -1
|
||||||
AlignAfterOpenBracket: Align
|
AlignAfterOpenBracket: Align
|
||||||
AlignConsecutiveMacros: false
|
AlignConsecutiveMacros: false
|
||||||
AlignConsecutiveAssignments: false
|
AlignConsecutiveAssignments: false
|
||||||
AlignConsecutiveDeclarations: false
|
AlignConsecutiveDeclarations: false
|
||||||
AlignEscapedNewlines: Right
|
AlignEscapedNewlines: Left
|
||||||
AlignOperands: true
|
AlignOperands: true
|
||||||
AlignTrailingComments: true
|
AlignTrailingComments: true
|
||||||
AllowAllArgumentsOnNextLine: true
|
AllowAllArgumentsOnNextLine: true
|
||||||
AllowAllConstructorInitializersOnNextLine: true
|
AllowAllConstructorInitializersOnNextLine: false
|
||||||
AllowAllParametersOfDeclarationOnNextLine: true
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
AllowShortBlocksOnASingleLine: Never
|
AllowShortBlocksOnASingleLine: Never
|
||||||
AllowShortCaseLabelsOnASingleLine: false
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
AllowShortFunctionsOnASingleLine: All
|
AllowShortFunctionsOnASingleLine: false
|
||||||
AllowShortLambdasOnASingleLine: All
|
AllowShortLambdasOnASingleLine: All
|
||||||
AllowShortIfStatementsOnASingleLine: Never
|
AllowShortIfStatementsOnASingleLine: WithoutElse
|
||||||
AllowShortLoopsOnASingleLine: false
|
AllowShortLoopsOnASingleLine: false
|
||||||
AlwaysBreakAfterDefinitionReturnType: None
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
AlwaysBreakAfterReturnType: None
|
AlwaysBreakAfterReturnType: None
|
||||||
AlwaysBreakBeforeMultilineStrings: false
|
AlwaysBreakBeforeMultilineStrings: true
|
||||||
AlwaysBreakTemplateDeclarations: MultiLine
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
BinPackArguments: true
|
BinPackArguments: true
|
||||||
BinPackParameters: true
|
BinPackParameters: true
|
||||||
BraceWrapping:
|
BraceWrapping:
|
||||||
@ -53,12 +53,12 @@ BreakStringLiterals: true
|
|||||||
ColumnLimit: 80
|
ColumnLimit: 80
|
||||||
CommentPragmas: '^ IWYU pragma:'
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
CompactNamespaces: false
|
CompactNamespaces: false
|
||||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
ConstructorInitializerIndentWidth: 4
|
ConstructorInitializerIndentWidth: 4
|
||||||
ContinuationIndentWidth: 4
|
ContinuationIndentWidth: 4
|
||||||
Cpp11BracedListStyle: true
|
Cpp11BracedListStyle: true
|
||||||
DeriveLineEnding: true
|
DeriveLineEnding: true
|
||||||
DerivePointerAlignment: false
|
DerivePointerAlignment: true
|
||||||
DisableFormat: false
|
DisableFormat: false
|
||||||
ExperimentalAutoDetectBinPacking: false
|
ExperimentalAutoDetectBinPacking: false
|
||||||
FixNamespaceComments: true
|
FixNamespaceComments: true
|
||||||
@ -66,18 +66,21 @@ ForEachMacros:
|
|||||||
- foreach
|
- foreach
|
||||||
- Q_FOREACH
|
- Q_FOREACH
|
||||||
- BOOST_FOREACH
|
- BOOST_FOREACH
|
||||||
IncludeBlocks: Preserve
|
IncludeBlocks: Regroup
|
||||||
IncludeCategories:
|
IncludeCategories:
|
||||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
- Regex: '^<ext/.*\.h>'
|
||||||
Priority: 2
|
Priority: 2
|
||||||
SortPriority: 0
|
SortPriority: 0
|
||||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
- Regex: '^<.*\.h>'
|
||||||
Priority: 3
|
|
||||||
SortPriority: 0
|
|
||||||
- Regex: '.*'
|
|
||||||
Priority: 1
|
Priority: 1
|
||||||
SortPriority: 0
|
SortPriority: 0
|
||||||
IncludeIsMainRegex: '(Test)?$'
|
- Regex: '^<.*'
|
||||||
|
Priority: 2
|
||||||
|
SortPriority: 0
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 3
|
||||||
|
SortPriority: 0
|
||||||
|
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||||
IncludeIsMainSourceRegex: ''
|
IncludeIsMainSourceRegex: ''
|
||||||
IndentCaseLabels: true
|
IndentCaseLabels: true
|
||||||
IndentGotoLabels: true
|
IndentGotoLabels: true
|
||||||
@ -86,24 +89,52 @@ IndentWidth: 2
|
|||||||
IndentWrappedFunctionNames: false
|
IndentWrappedFunctionNames: false
|
||||||
JavaScriptQuotes: Leave
|
JavaScriptQuotes: Leave
|
||||||
JavaScriptWrapImports: true
|
JavaScriptWrapImports: true
|
||||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
MacroBlockBegin: ''
|
MacroBlockBegin: ''
|
||||||
MacroBlockEnd: ''
|
MacroBlockEnd: ''
|
||||||
MaxEmptyLinesToKeep: 1
|
MaxEmptyLinesToKeep: 1
|
||||||
NamespaceIndentation: None
|
NamespaceIndentation: None
|
||||||
ObjCBinPackProtocolList: Auto
|
ObjCBinPackProtocolList: Never
|
||||||
ObjCBlockIndentWidth: 2
|
ObjCBlockIndentWidth: 2
|
||||||
ObjCSpaceAfterProperty: false
|
ObjCSpaceAfterProperty: false
|
||||||
ObjCSpaceBeforeProtocolList: true
|
ObjCSpaceBeforeProtocolList: true
|
||||||
PenaltyBreakAssignment: 2
|
PenaltyBreakAssignment: 2
|
||||||
PenaltyBreakBeforeFirstCallParameter: 19
|
PenaltyBreakBeforeFirstCallParameter: 1
|
||||||
PenaltyBreakComment: 300
|
PenaltyBreakComment: 300
|
||||||
PenaltyBreakFirstLessLess: 120
|
PenaltyBreakFirstLessLess: 120
|
||||||
PenaltyBreakString: 1000
|
PenaltyBreakString: 1000
|
||||||
PenaltyBreakTemplateDeclaration: 10
|
PenaltyBreakTemplateDeclaration: 10
|
||||||
PenaltyExcessCharacter: 1000000
|
PenaltyExcessCharacter: 1000000
|
||||||
PenaltyReturnTypeOnItsOwnLine: 60
|
PenaltyReturnTypeOnItsOwnLine: 200
|
||||||
PointerAlignment: Right
|
PointerAlignment: Left
|
||||||
|
RawStringFormats:
|
||||||
|
- Language: Cpp
|
||||||
|
Delimiters:
|
||||||
|
- cc
|
||||||
|
- CC
|
||||||
|
- cpp
|
||||||
|
- Cpp
|
||||||
|
- CPP
|
||||||
|
- 'c++'
|
||||||
|
- 'C++'
|
||||||
|
CanonicalDelimiter: ''
|
||||||
|
BasedOnStyle: google
|
||||||
|
- Language: TextProto
|
||||||
|
Delimiters:
|
||||||
|
- pb
|
||||||
|
- PB
|
||||||
|
- proto
|
||||||
|
- PROTO
|
||||||
|
EnclosingFunctions:
|
||||||
|
- EqualsProto
|
||||||
|
- EquivToProto
|
||||||
|
- PARSE_PARTIAL_TEXT_PROTO
|
||||||
|
- PARSE_TEST_PROTO
|
||||||
|
- PARSE_TEXT_PROTO
|
||||||
|
- ParseTextOrDie
|
||||||
|
- ParseTextProtoOrDie
|
||||||
|
CanonicalDelimiter: ''
|
||||||
|
BasedOnStyle: google
|
||||||
ReflowComments: true
|
ReflowComments: true
|
||||||
SortIncludes: true
|
SortIncludes: true
|
||||||
SortUsingDeclarations: true
|
SortUsingDeclarations: true
|
||||||
@ -118,7 +149,7 @@ SpaceBeforeParens: ControlStatements
|
|||||||
SpaceBeforeRangeBasedForLoopColon: true
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
SpaceInEmptyBlock: false
|
SpaceInEmptyBlock: false
|
||||||
SpaceInEmptyParentheses: false
|
SpaceInEmptyParentheses: false
|
||||||
SpacesBeforeTrailingComments: 1
|
SpacesBeforeTrailingComments: 2
|
||||||
SpacesInAngles: false
|
SpacesInAngles: false
|
||||||
SpacesInConditionalStatement: false
|
SpacesInConditionalStatement: false
|
||||||
SpacesInContainerLiterals: true
|
SpacesInContainerLiterals: true
|
||||||
@ -126,7 +157,7 @@ SpacesInCStyleCastParentheses: false
|
|||||||
SpacesInParentheses: false
|
SpacesInParentheses: false
|
||||||
SpacesInSquareBrackets: false
|
SpacesInSquareBrackets: false
|
||||||
SpaceBeforeSquareBrackets: false
|
SpaceBeforeSquareBrackets: false
|
||||||
Standard: Latest
|
Standard: Auto
|
||||||
StatementMacros:
|
StatementMacros:
|
||||||
- Q_UNUSED
|
- Q_UNUSED
|
||||||
- QT_REQUIRE_VERSION
|
- QT_REQUIRE_VERSION
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
|
||||||
#include <boost/preprocessor/seq/for_each.hpp>
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
|
||||||
|
#include <boost/algorithm/string/classification.hpp>
|
||||||
|
#include <boost/algorithm/string/split.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
#include <boost/preprocessor/seq/for_each.hpp>
|
||||||
|
|
||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
#include "repr.h"
|
#include "repr.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
G13_Action::~G13_Action() {}
|
G13_Action::~G13_Action() {
|
||||||
|
}
|
||||||
|
|
||||||
G13_Action_Keys::G13_Action_Keys(G13_Device &keypad,
|
G13_Action_Keys::G13_Action_Keys(G13_Device &keypad,
|
||||||
const std::string &keys_string)
|
const std::string &keys_string)
|
||||||
@ -29,7 +31,8 @@ G13_Action_Keys::G13_Action_Keys(G13_Device &keypad,
|
|||||||
std::vector<int> _keys;
|
std::vector<int> _keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_Action_Keys::~G13_Action_Keys() {}
|
G13_Action_Keys::~G13_Action_Keys() {
|
||||||
|
}
|
||||||
|
|
||||||
void G13_Action_Keys::act(G13_Device &g13, bool is_down) {
|
void G13_Action_Keys::act(G13_Device &g13, bool is_down) {
|
||||||
for (auto key : _keys) {
|
for (auto key : _keys) {
|
||||||
@ -42,16 +45,18 @@ void G13_Action_Keys::dump(std::ostream &out) const {
|
|||||||
out << " SEND KEYS: ";
|
out << " SEND KEYS: ";
|
||||||
|
|
||||||
for (size_t i = 0; i < _keys.size(); i++) {
|
for (size_t i = 0; i < _keys.size(); i++) {
|
||||||
if (i)
|
if (i) out << " + ";
|
||||||
out << " + ";
|
|
||||||
out << manager().find_input_key_name(_keys[i]);
|
out << manager().find_input_key_name(_keys[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_Action_PipeOut::G13_Action_PipeOut(G13_Device &keypad,
|
G13_Action_PipeOut::G13_Action_PipeOut(G13_Device &keypad,
|
||||||
const std::string &out)
|
const std::string &out)
|
||||||
: G13_Action(keypad), _out(out + "\n") {}
|
: G13_Action(keypad),
|
||||||
G13_Action_PipeOut::~G13_Action_PipeOut() {}
|
_out(out + "\n") {
|
||||||
|
}
|
||||||
|
G13_Action_PipeOut::~G13_Action_PipeOut() {
|
||||||
|
}
|
||||||
|
|
||||||
void G13_Action_PipeOut::act(G13_Device &kp, bool is_down) {
|
void G13_Action_PipeOut::act(G13_Device &kp, bool is_down) {
|
||||||
if (is_down) {
|
if (is_down) {
|
||||||
@ -65,8 +70,11 @@ void G13_Action_PipeOut::dump(std::ostream &o) const {
|
|||||||
|
|
||||||
G13_Action_Command::G13_Action_Command(G13_Device &keypad,
|
G13_Action_Command::G13_Action_Command(G13_Device &keypad,
|
||||||
const std::string &cmd)
|
const std::string &cmd)
|
||||||
: G13_Action(keypad), _cmd(cmd) {}
|
: G13_Action(keypad),
|
||||||
G13_Action_Command::~G13_Action_Command() {}
|
_cmd(cmd) {
|
||||||
|
}
|
||||||
|
G13_Action_Command::~G13_Action_Command() {
|
||||||
|
}
|
||||||
|
|
||||||
void G13_Action_Command::act(G13_Device &kp, bool is_down) {
|
void G13_Action_Command::act(G13_Device &kp, bool is_down) {
|
||||||
if (is_down) {
|
if (is_down) {
|
||||||
@ -78,4 +86,4 @@ void G13_Action_Command::dump(std::ostream &o) const {
|
|||||||
o << "COMMAND : " << repr(_cmd);
|
o << "COMMAND : " << repr(_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace G13
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#ifndef ACTION_H
|
#ifndef ACTION_H
|
||||||
#define ACTION_H
|
#define ACTION_H
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#include "g13.h"
|
#include "g13.h"
|
||||||
|
|
||||||
@ -16,22 +16,30 @@ class G13_Manager;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class G13_Action {
|
class G13_Action {
|
||||||
public:
|
public:
|
||||||
G13_Action(G13_Device &keypad) : _keypad(keypad) {}
|
G13_Action(G13_Device &keypad) : _keypad(keypad) {
|
||||||
|
}
|
||||||
|
|
||||||
virtual ~G13_Action();
|
virtual ~G13_Action();
|
||||||
|
|
||||||
virtual void act(G13_Device &, bool is_down) = 0;
|
virtual void act(G13_Device &, bool is_down) = 0;
|
||||||
virtual void dump(std::ostream &) const = 0;
|
virtual void dump(std::ostream &) const = 0;
|
||||||
|
|
||||||
void act(bool is_down) { act(keypad(), is_down); }
|
void act(bool is_down) {
|
||||||
|
act(keypad(), is_down);
|
||||||
|
}
|
||||||
|
|
||||||
G13_Device &keypad() { return _keypad; }
|
G13_Device &keypad() {
|
||||||
const G13_Device &keypad() const { return _keypad; }
|
return _keypad;
|
||||||
|
}
|
||||||
|
const G13_Device &keypad() const {
|
||||||
|
return _keypad;
|
||||||
|
}
|
||||||
|
|
||||||
G13_Manager &manager();
|
G13_Manager &manager();
|
||||||
const G13_Manager &manager() const;
|
const G13_Manager &manager() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
G13_Device &_keypad;
|
G13_Device &_keypad;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -39,7 +47,7 @@ private:
|
|||||||
* action to send one or more keystrokes
|
* action to send one or more keystrokes
|
||||||
*/
|
*/
|
||||||
class G13_Action_Keys : public G13_Action {
|
class G13_Action_Keys : public G13_Action {
|
||||||
public:
|
public:
|
||||||
G13_Action_Keys(G13_Device &keypad, const std::string &keys);
|
G13_Action_Keys(G13_Device &keypad, const std::string &keys);
|
||||||
virtual ~G13_Action_Keys();
|
virtual ~G13_Action_Keys();
|
||||||
|
|
||||||
@ -53,7 +61,7 @@ public:
|
|||||||
* action to send a string to the output pipe
|
* action to send a string to the output pipe
|
||||||
*/
|
*/
|
||||||
class G13_Action_PipeOut : public G13_Action {
|
class G13_Action_PipeOut : public G13_Action {
|
||||||
public:
|
public:
|
||||||
G13_Action_PipeOut(G13_Device &keypad, const std::string &out);
|
G13_Action_PipeOut(G13_Device &keypad, const std::string &out);
|
||||||
virtual ~G13_Action_PipeOut();
|
virtual ~G13_Action_PipeOut();
|
||||||
|
|
||||||
@ -67,7 +75,7 @@ public:
|
|||||||
* action to send a command to the g13
|
* action to send a command to the g13
|
||||||
*/
|
*/
|
||||||
class G13_Action_Command : public G13_Action {
|
class G13_Action_Command : public G13_Action {
|
||||||
public:
|
public:
|
||||||
G13_Action_Command(G13_Device &keypad, const std::string &cmd);
|
G13_Action_Command(G13_Device &keypad, const std::string &cmd);
|
||||||
virtual ~G13_Action_Command();
|
virtual ~G13_Action_Command();
|
||||||
|
|
||||||
@ -79,30 +87,46 @@ public:
|
|||||||
|
|
||||||
typedef std::shared_ptr<G13_Action> G13_ActionPtr;
|
typedef std::shared_ptr<G13_Action> G13_ActionPtr;
|
||||||
|
|
||||||
template <class PARENT_T> class G13_Actionable {
|
template <class PARENT_T>
|
||||||
public:
|
class G13_Actionable {
|
||||||
|
public:
|
||||||
G13_Actionable(PARENT_T &parent_arg, const std::string &name)
|
G13_Actionable(PARENT_T &parent_arg, const std::string &name)
|
||||||
: _name(name), _parent_ptr(&parent_arg) {
|
: _name(name),
|
||||||
|
_parent_ptr(&parent_arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~G13_Actionable() {
|
virtual ~G13_Actionable() {
|
||||||
_parent_ptr = 0;
|
_parent_ptr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_ActionPtr action() const { return _action; }
|
G13_ActionPtr action() const {
|
||||||
const std::string &name() const { return _name; }
|
return _action;
|
||||||
PARENT_T &parent() { return *_parent_ptr; }
|
}
|
||||||
const PARENT_T &parent() const { return *_parent_ptr; }
|
const std::string &name() const {
|
||||||
G13_Manager &manager() { return _parent_ptr->manager(); }
|
return _name;
|
||||||
const G13_Manager &manager() const { return _parent_ptr->manager(); }
|
}
|
||||||
|
PARENT_T &parent() {
|
||||||
|
return *_parent_ptr;
|
||||||
|
}
|
||||||
|
const PARENT_T &parent() const {
|
||||||
|
return *_parent_ptr;
|
||||||
|
}
|
||||||
|
G13_Manager &manager() {
|
||||||
|
return _parent_ptr->manager();
|
||||||
|
}
|
||||||
|
const G13_Manager &manager() const {
|
||||||
|
return _parent_ptr->manager();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void set_action(const G13_ActionPtr &action) { _action = action; }
|
virtual void set_action(const G13_ActionPtr &action) {
|
||||||
|
_action = action;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::string _name;
|
std::string _name;
|
||||||
G13_ActionPtr _action;
|
G13_ActionPtr _action;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PARENT_T *_parent_ptr;
|
PARENT_T *_parent_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
template <class T> class Bounds {
|
template <class T>
|
||||||
public:
|
class Bounds {
|
||||||
Bounds(const Coord<T> &_tl, const Coord<T> &_br)
|
public:
|
||||||
: tl(_tl), br(_br) {
|
Bounds(const Coord<T> &_tl, const Coord<T> &_br) : tl(_tl), br(_br) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Bounds(T x1, T y1, T x2, T y2) : tl(x1, y1), br(x2, y2) {
|
Bounds(T x1, T y1, T x2, T y2) : tl(x1, y1), br(x2, y2) {
|
||||||
@ -21,14 +21,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void expand(const Coord<T> &pos) {
|
void expand(const Coord<T> &pos) {
|
||||||
if (pos.x < tl.x)
|
if (pos.x < tl.x) tl.x = pos.x;
|
||||||
tl.x = pos.x;
|
if (pos.y < tl.y) tl.y = pos.y;
|
||||||
if (pos.y < tl.y)
|
if (pos.x > br.x) br.x = pos.x;
|
||||||
tl.y = pos.y;
|
if (pos.y > br.y) br.y = pos.y;
|
||||||
if (pos.x > br.x)
|
|
||||||
br.x = pos.x;
|
|
||||||
if (pos.y > br.y)
|
|
||||||
br.y = pos.y;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Coord<T> tl;
|
Coord<T> tl;
|
||||||
@ -37,10 +33,7 @@ public:
|
|||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
std::ostream &operator<<(std::ostream &o, const Bounds<T> &b) {
|
std::ostream &operator<<(std::ostream &o, const Bounds<T> &b) {
|
||||||
o << "{ "
|
o << "{ " << b.tl.x << " x " << b.tl.y << " / " << b.br.x << " x " << b.br.y
|
||||||
<< b.tl.x << " x " << b.tl.y
|
|
||||||
<< " / "
|
|
||||||
<< b.br.x << " x " << b.br.y
|
|
||||||
<< " }";
|
<< " }";
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
|
11
g13d/coord.h
11
g13d/coord.h
@ -3,14 +3,13 @@
|
|||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
template <class T> class Coord {
|
template <class T>
|
||||||
public:
|
class Coord {
|
||||||
Coord()
|
public:
|
||||||
: x(), y() {
|
Coord() : x(), y() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Coord(T _x, T _y)
|
Coord(T _x, T _y) : x(_x), y(_y) {
|
||||||
: x(_x), y(_y) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
T x;
|
T x;
|
||||||
|
@ -1,30 +1,28 @@
|
|||||||
#include <fcntl.h>
|
#include "device.h"
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
#include <libusb-1.0/libusb.h>
|
#include <libusb-1.0/libusb.h>
|
||||||
#include <linux/uinput.h>
|
#include <linux/uinput.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
#include <boost/algorithm/string/classification.hpp>
|
||||||
#include <boost/preprocessor/seq/for_each.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <iostream>
|
#include <boost/preprocessor/seq/for_each.hpp>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "logo.h"
|
#include "logo.h"
|
||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
#include "repr.h"
|
#include "repr.h"
|
||||||
#include "device.h"
|
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
static std::string describe_libusb_error_code(int code) {
|
static std::string describe_libusb_error_code(int code) {
|
||||||
|
|
||||||
#define TEST_libusb_error(r, data, elem) \
|
#define TEST_libusb_error(r, data, elem) \
|
||||||
case BOOST_PP_CAT(LIBUSB_, elem): \
|
case BOOST_PP_CAT(LIBUSB_, elem): \
|
||||||
return BOOST_PP_STRINGIZE(elem);
|
return BOOST_PP_STRINGIZE(elem);
|
||||||
@ -194,7 +192,6 @@ void G13_Device::cleanup() {
|
|||||||
libusb_close(handle);
|
libusb_close(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*! reads and processes key state report from G13
|
/*! reads and processes key state report from G13
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -206,7 +203,6 @@ int G13_Device::read_keys() {
|
|||||||
buffer, G13_REPORT_SIZE, &size, 100);
|
buffer, G13_REPORT_SIZE, &size, 100);
|
||||||
|
|
||||||
if (error && error != LIBUSB_ERROR_TIMEOUT) {
|
if (error && error != LIBUSB_ERROR_TIMEOUT) {
|
||||||
|
|
||||||
G13_LOG(error, "Error while reading keys: "
|
G13_LOG(error, "Error while reading keys: "
|
||||||
<< error << " (" << describe_libusb_error_code(error)
|
<< error << " (" << describe_libusb_error_code(error)
|
||||||
<< ")");
|
<< ")");
|
||||||
@ -226,7 +222,6 @@ void G13_Device::read_config_file(const std::string &filename) {
|
|||||||
|
|
||||||
G13_LOG(info, "reading configuration from " << filename);
|
G13_LOG(info, "reading configuration from " << filename);
|
||||||
while (s.good()) {
|
while (s.good()) {
|
||||||
|
|
||||||
// grab a line
|
// grab a line
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
@ -288,8 +283,13 @@ void G13_Device::read_commands() {
|
|||||||
|
|
||||||
G13_Device::G13_Device(G13_Manager &manager, libusb_device_handle *handle,
|
G13_Device::G13_Device(G13_Manager &manager, libusb_device_handle *handle,
|
||||||
int _id)
|
int _id)
|
||||||
: _id_within_manager(_id), handle(handle), ctx(0), _uinput_fid(-1),
|
: _id_within_manager(_id),
|
||||||
_manager(manager), _lcd(*this), _stick(*this) {
|
handle(handle),
|
||||||
|
ctx(0),
|
||||||
|
_uinput_fid(-1),
|
||||||
|
_manager(manager),
|
||||||
|
_lcd(*this),
|
||||||
|
_stick(*this) {
|
||||||
_current_profile = ProfilePtr(new G13_Profile(*this, "default"));
|
_current_profile = ProfilePtr(new G13_Profile(*this, "default"));
|
||||||
_profiles["default"] = _current_profile;
|
_profiles["default"] = _current_profile;
|
||||||
|
|
||||||
@ -324,7 +324,6 @@ ProfilePtr G13_Device::profile(const std::string &name) {
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
G13_ActionPtr G13_Device::make_action(const std::string &action) {
|
G13_ActionPtr G13_Device::make_action(const std::string &action) {
|
||||||
if (!action.size()) {
|
if (!action.size()) {
|
||||||
throw G13_CommandException("empty action string");
|
throw G13_CommandException("empty action string");
|
||||||
@ -361,7 +360,7 @@ void G13_Device::dump(std::ostream &o, int detail) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const char *advance_ws(const char* &source, std::string &dest) {
|
inline const char *advance_ws(const char *&source, std::string &dest) {
|
||||||
const char *space = source ? strchr(source, ' ') : 0;
|
const char *space = source ? strchr(source, ' ') : 0;
|
||||||
|
|
||||||
if (space) {
|
if (space) {
|
||||||
@ -377,7 +376,9 @@ inline const char *advance_ws(const char* &source, std::string &dest) {
|
|||||||
|
|
||||||
struct command_adder {
|
struct command_adder {
|
||||||
command_adder(G13_Device::CommandFunctionTable &t, const char *name)
|
command_adder(G13_Device::CommandFunctionTable &t, const char *name)
|
||||||
: _t(t), _name(name) {}
|
: _t(t),
|
||||||
|
_name(name) {
|
||||||
|
}
|
||||||
|
|
||||||
G13_Device::CommandFunctionTable &_t;
|
G13_Device::CommandFunctionTable &_t;
|
||||||
std::string _name;
|
std::string _name;
|
||||||
@ -432,10 +433,18 @@ void G13_Device::_init_commands() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_DEVICE_COMMAND(profile) { switch_to_profile(remainder); }
|
G13_DEVICE_COMMAND(profile) {
|
||||||
G13_DEVICE_COMMAND(font) { switch_to_font(remainder); }
|
switch_to_profile(remainder);
|
||||||
G13_DEVICE_COMMAND(mod) { set_mode_leds(atoi(remainder)); }
|
}
|
||||||
G13_DEVICE_COMMAND(textmode) { lcd().text_mode = atoi(remainder); }
|
G13_DEVICE_COMMAND(font) {
|
||||||
|
switch_to_font(remainder);
|
||||||
|
}
|
||||||
|
G13_DEVICE_COMMAND(mod) {
|
||||||
|
set_mode_leds(atoi(remainder));
|
||||||
|
}
|
||||||
|
G13_DEVICE_COMMAND(textmode) {
|
||||||
|
lcd().text_mode = atoi(remainder);
|
||||||
|
}
|
||||||
|
|
||||||
G13_DEVICE_COMMAND(rgb) {
|
G13_DEVICE_COMMAND(rgb) {
|
||||||
int red, green, blue;
|
int red, green, blue;
|
||||||
@ -543,7 +552,6 @@ void G13_Device::command(char const *str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void G13_Device::init_lcd() {
|
void G13_Device::init_lcd() {
|
||||||
int error = libusb_control_transfer(handle, 0, 9, 1, 0, 0, 0, 1000);
|
int error = libusb_control_transfer(handle, 0, 9, 1, 0, 0, 0, 1000);
|
||||||
if (error) {
|
if (error) {
|
||||||
|
@ -1,33 +1,45 @@
|
|||||||
#ifndef DEVICE_H
|
#ifndef DEVICE_H
|
||||||
#define DEVICE_H
|
#define DEVICE_H
|
||||||
|
|
||||||
#include <linux/input.h>
|
|
||||||
#include <libusb-1.0/libusb.h>
|
#include <libusb-1.0/libusb.h>
|
||||||
|
#include <linux/input.h>
|
||||||
|
|
||||||
|
#include <map>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "lcd.h"
|
|
||||||
#include "stick.h"
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
|
#include "lcd.h"
|
||||||
#include "profile.h"
|
#include "profile.h"
|
||||||
|
#include "stick.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
class G13_Manager;
|
class G13_Manager;
|
||||||
|
|
||||||
class G13_Device {
|
class G13_Device {
|
||||||
public:
|
public:
|
||||||
G13_Device(G13_Manager &manager, libusb_device_handle *handle, int id);
|
G13_Device(G13_Manager &manager, libusb_device_handle *handle, int id);
|
||||||
|
|
||||||
G13_Manager &manager() { return _manager; }
|
G13_Manager &manager() {
|
||||||
const G13_Manager &manager() const { return _manager; }
|
return _manager;
|
||||||
|
}
|
||||||
|
const G13_Manager &manager() const {
|
||||||
|
return _manager;
|
||||||
|
}
|
||||||
|
|
||||||
G13_LCD &lcd() { return _lcd; }
|
G13_LCD &lcd() {
|
||||||
const G13_LCD &lcd() const { return _lcd; }
|
return _lcd;
|
||||||
G13_Stick &stick() { return _stick; }
|
}
|
||||||
const G13_Stick &stick() const { return _stick; }
|
const G13_LCD &lcd() const {
|
||||||
|
return _lcd;
|
||||||
|
}
|
||||||
|
G13_Stick &stick() {
|
||||||
|
return _stick;
|
||||||
|
}
|
||||||
|
const G13_Stick &stick() const {
|
||||||
|
return _stick;
|
||||||
|
}
|
||||||
|
|
||||||
FontPtr switch_to_font(const std::string &name);
|
FontPtr switch_to_font(const std::string &name);
|
||||||
void switch_to_profile(const std::string &name);
|
void switch_to_profile(const std::string &name);
|
||||||
@ -60,15 +72,21 @@ public:
|
|||||||
void register_context(libusb_context *ctx);
|
void register_context(libusb_context *ctx);
|
||||||
void write_lcd_file(const std::string &filename);
|
void write_lcd_file(const std::string &filename);
|
||||||
|
|
||||||
G13_Font ¤t_font() { return *_current_font; }
|
G13_Font ¤t_font() {
|
||||||
G13_Profile ¤t_profile() { return *_current_profile; }
|
return *_current_font;
|
||||||
|
}
|
||||||
|
G13_Profile ¤t_profile() {
|
||||||
|
return *_current_profile;
|
||||||
|
}
|
||||||
|
|
||||||
int id_within_manager() const { return _id_within_manager; }
|
int id_within_manager() const {
|
||||||
|
return _id_within_manager;
|
||||||
|
}
|
||||||
|
|
||||||
typedef std::function<void(const char *)> COMMAND_FUNCTION;
|
typedef std::function<void(const char *)> COMMAND_FUNCTION;
|
||||||
typedef std::map<std::string, COMMAND_FUNCTION> CommandFunctionTable;
|
typedef std::map<std::string, COMMAND_FUNCTION> CommandFunctionTable;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _init_fonts();
|
void _init_fonts();
|
||||||
void init_lcd();
|
void init_lcd();
|
||||||
void _init_commands();
|
void _init_commands();
|
||||||
|
@ -6,11 +6,11 @@
|
|||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
class NotFoundException : public std::exception {
|
class NotFoundException : public std::exception {
|
||||||
public:
|
public:
|
||||||
const char *what() throw();
|
const char *what() throw();
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class K_T, class V_T>
|
template <class K_T, class V_T>
|
||||||
inline const V_T &find_or_throw(const std::map<K_T, V_T> &m,
|
inline const V_T &find_or_throw(const std::map<K_T, V_T> &m,
|
||||||
const K_T &target) {
|
const K_T &target) {
|
||||||
auto i = m.find(target);
|
auto i = m.find(target);
|
||||||
@ -22,7 +22,7 @@ inline const V_T &find_or_throw(const std::map<K_T, V_T> &m,
|
|||||||
return i->second;
|
return i->second;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class K_T, class V_T>
|
template <class K_T, class V_T>
|
||||||
inline V_T &find_or_throw(std::map<K_T, V_T> &m, const K_T &target) {
|
inline V_T &find_or_throw(std::map<K_T, V_T> &m, const K_T &target) {
|
||||||
auto i = m.find(target);
|
auto i = m.find(target);
|
||||||
|
|
||||||
|
13
g13d/font.cc
13
g13d/font.cc
@ -1,16 +1,20 @@
|
|||||||
#include "device.h"
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
|
|
||||||
|
#include "device.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
#include "font8x8.h"
|
#include "font8x8.h"
|
||||||
|
|
||||||
G13_Font::G13_Font() : _name("default"), _width(8) {}
|
G13_Font::G13_Font() : _name("default"), _width(8) {
|
||||||
|
}
|
||||||
|
|
||||||
G13_Font::G13_Font(const std::string &name, unsigned int width)
|
G13_Font::G13_Font(const std::string &name, unsigned int width)
|
||||||
: _name(name), _width(width) {}
|
: _name(name),
|
||||||
|
_width(width) {
|
||||||
|
}
|
||||||
|
|
||||||
void G13_FontChar::set_character(unsigned char *data, int width,
|
void G13_FontChar::set_character(unsigned char *data, int width,
|
||||||
unsigned flags) {
|
unsigned flags) {
|
||||||
@ -35,7 +39,8 @@ void G13_FontChar::set_character(unsigned char *data, int width,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, int size> int GetFontCharacterCount(T (&)[size]) {
|
template <typename T, int size>
|
||||||
|
int GetFontCharacterCount(T (&)[size]) {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
g13d/font.h
24
g13d/font.h
@ -1,14 +1,14 @@
|
|||||||
#ifndef FONT_H
|
#ifndef FONT_H
|
||||||
#define FONT_H
|
#define FONT_H
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
class G13_FontChar {
|
class G13_FontChar {
|
||||||
public:
|
public:
|
||||||
static const int CHAR_BUF_SIZE = 8;
|
static const int CHAR_BUF_SIZE = 8;
|
||||||
enum FONT_FLAGS { FF_ROTATE = 0x01 };
|
enum FONT_FLAGS { FF_ROTATE = 0x01 };
|
||||||
|
|
||||||
@ -23,21 +23,27 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class G13_Font {
|
class G13_Font {
|
||||||
public:
|
public:
|
||||||
G13_Font();
|
G13_Font();
|
||||||
G13_Font(const std::string &name, unsigned int width = 8);
|
G13_Font(const std::string &name, unsigned int width = 8);
|
||||||
|
|
||||||
void set_character(unsigned int c, unsigned char *data);
|
void set_character(unsigned int c, unsigned char *data);
|
||||||
|
|
||||||
template<class ARRAY_T, class FLAGST>
|
template <class ARRAY_T, class FLAGST>
|
||||||
void install_font(ARRAY_T &data, FLAGST flags, int first = 0);
|
void install_font(ARRAY_T &data, FLAGST flags, int first = 0);
|
||||||
|
|
||||||
const std::string &name() const { return _name; }
|
const std::string &name() const {
|
||||||
unsigned int width() const { return _width; }
|
return _name;
|
||||||
|
}
|
||||||
|
unsigned int width() const {
|
||||||
|
return _width;
|
||||||
|
}
|
||||||
|
|
||||||
const G13_FontChar &char_data(unsigned int x) { return _chars[x]; }
|
const G13_FontChar &char_data(unsigned int x) {
|
||||||
|
return _chars[x];
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::string _name;
|
std::string _name;
|
||||||
unsigned int _width;
|
unsigned int _width;
|
||||||
|
|
||||||
|
13
g13d/g13.h
13
g13d/g13.h
@ -2,7 +2,6 @@
|
|||||||
#define G13_H
|
#define G13_H
|
||||||
|
|
||||||
#include <boost/log/trivial.hpp>
|
#include <boost/log/trivial.hpp>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
@ -42,10 +41,14 @@ const LINUX_KEY_VALUE BAD_KEY_VALUE = -1;
|
|||||||
typedef int G13_KEY_INDEX;
|
typedef int G13_KEY_INDEX;
|
||||||
|
|
||||||
class G13_CommandException : public std::exception {
|
class G13_CommandException : public std::exception {
|
||||||
public:
|
public:
|
||||||
G13_CommandException(const std::string &reason) : _reason(reason) {}
|
G13_CommandException(const std::string &reason) : _reason(reason) {
|
||||||
virtual ~G13_CommandException() throw() {}
|
}
|
||||||
virtual const char *what() const throw() { return _reason.c_str(); }
|
virtual ~G13_CommandException() throw() {
|
||||||
|
}
|
||||||
|
virtual const char *what() const throw() {
|
||||||
|
return _reason.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
std::string _reason;
|
std::string _reason;
|
||||||
};
|
};
|
||||||
|
@ -37,12 +37,9 @@
|
|||||||
#include <boost/preprocessor/cat.hpp>
|
#include <boost/preprocessor/cat.hpp>
|
||||||
#include <boost/preprocessor/seq.hpp>
|
#include <boost/preprocessor/seq.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <exception>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include <exception>
|
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -53,9 +50,9 @@ namespace Helper {
|
|||||||
|
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
|
|
||||||
template <class MAP_T> struct _map_keys_out {
|
template <class MAP_T>
|
||||||
_map_keys_out(const MAP_T &c, const std::string &s)
|
struct _map_keys_out {
|
||||||
: container(c), sep(s) {
|
_map_keys_out(const MAP_T &c, const std::string &s) : container(c), sep(s) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const MAP_T &container;
|
const MAP_T &container;
|
||||||
|
@ -18,10 +18,11 @@
|
|||||||
A0.01 A1.01 A2.01 ...
|
A0.01 A1.01 A2.01 ...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
@ -51,7 +52,6 @@ void G13_LCD::image_setpixel(unsigned row, unsigned col) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void G13_LCD::image_clearpixel(unsigned row, unsigned col) {
|
void G13_LCD::image_clearpixel(unsigned row, unsigned col) {
|
||||||
|
|
||||||
unsigned offset =
|
unsigned offset =
|
||||||
image_byte_offset(row, col); // col + (row /8 ) * BYTES_PER_ROW * 8;
|
image_byte_offset(row, col); // col + (row /8 ) * BYTES_PER_ROW * 8;
|
||||||
unsigned char mask = 1 << ((row)&7);
|
unsigned char mask = 1 << ((row)&7);
|
||||||
|
14
g13d/lcd.h
14
g13d/lcd.h
@ -1,16 +1,16 @@
|
|||||||
#ifndef LCD_H
|
#ifndef LCD_H
|
||||||
#define LCD_H
|
#define LCD_H
|
||||||
|
|
||||||
#include "g13.h"
|
|
||||||
|
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|
||||||
|
#include "g13.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
class G13_Device;
|
class G13_Device;
|
||||||
|
|
||||||
class G13_LCD {
|
class G13_LCD {
|
||||||
public:
|
public:
|
||||||
G13_LCD(G13_Device &keypad);
|
G13_LCD(G13_Device &keypad);
|
||||||
|
|
||||||
G13_Device &_keypad;
|
G13_Device &_keypad;
|
||||||
@ -20,10 +20,14 @@ public:
|
|||||||
int text_mode;
|
int text_mode;
|
||||||
|
|
||||||
void image(unsigned char *data, int size);
|
void image(unsigned char *data, int size);
|
||||||
void image_send() { image(image_buf, G13_LCD_BUF_SIZE); }
|
void image_send() {
|
||||||
|
image(image_buf, G13_LCD_BUF_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
void image_test(int x, int y);
|
void image_test(int x, int y);
|
||||||
void image_clear() { memset(image_buf, 0, G13_LCD_BUF_SIZE); }
|
void image_clear() {
|
||||||
|
memset(image_buf, 0, G13_LCD_BUF_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned image_byte_offset(unsigned row, unsigned col) {
|
unsigned image_byte_offset(unsigned row, unsigned col) {
|
||||||
return col + (row / 8) * G13_LCD_BYTES_PER_ROW * 8;
|
return col + (row / 8) * G13_LCD_BYTES_PER_ROW * 8;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include <boost/program_options.hpp>
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/program_options.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "g13.h"
|
#include "g13.h"
|
||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
@ -64,5 +63,4 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
#include "manager.h"
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/log/attributes.hpp>
|
#include <boost/log/attributes.hpp>
|
||||||
#include <boost/log/core/core.hpp>
|
#include <boost/log/core/core.hpp>
|
||||||
#include <boost/log/expressions.hpp>
|
#include <boost/log/expressions.hpp>
|
||||||
@ -12,15 +15,12 @@
|
|||||||
#include <boost/log/utility/setup/console.hpp>
|
#include <boost/log/utility/setup/console.hpp>
|
||||||
#include <boost/preprocessor/seq/for_each.hpp>
|
#include <boost/preprocessor/seq/for_each.hpp>
|
||||||
#include <boost/preprocessor/stringize.hpp>
|
#include <boost/preprocessor/stringize.hpp>
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "helper.h"
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "manager.h"
|
|
||||||
#include "find_or_throw.h"
|
#include "find_or_throw.h"
|
||||||
|
#include "helper.h"
|
||||||
#include "repr.h"
|
#include "repr.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
@ -61,7 +61,6 @@ void G13_Manager::set_log_level(::boost::log::trivial::severity_level lvl) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void G13_Manager::set_log_level(const std::string &level) {
|
void G13_Manager::set_log_level(const std::string &level) {
|
||||||
|
|
||||||
#define CHECK_LEVEL(L) \
|
#define CHECK_LEVEL(L) \
|
||||||
if (level == BOOST_PP_STRINGIZE(L)) { \
|
if (level == BOOST_PP_STRINGIZE(L)) { \
|
||||||
set_log_level(::boost::log::trivial::L); \
|
set_log_level(::boost::log::trivial::L); \
|
||||||
@ -89,13 +88,13 @@ void G13_Manager::cleanup() {
|
|||||||
libusb_exit(ctx);
|
libusb_exit(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G13_Manager::G13_Manager() : devs(0), ctx(0) {
|
||||||
G13_Manager::G13_Manager()
|
|
||||||
: devs(0), ctx(0) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool G13_Manager::running = true;
|
bool G13_Manager::running = true;
|
||||||
void G13_Manager::set_stop(int) { running = false; }
|
void G13_Manager::set_stop(int) {
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
|
||||||
std::string G13_Manager::string_config_value(const std::string &name) const {
|
std::string G13_Manager::string_config_value(const std::string &name) const {
|
||||||
try {
|
try {
|
||||||
@ -241,7 +240,6 @@ G13_Manager::find_g13_key_value(const std::string &keyname) const {
|
|||||||
|
|
||||||
LINUX_KEY_VALUE
|
LINUX_KEY_VALUE
|
||||||
G13_Manager::find_input_key_value(const std::string &keyname) const {
|
G13_Manager::find_input_key_value(const std::string &keyname) const {
|
||||||
|
|
||||||
// if there is a KEY_ prefix, strip it off
|
// if there is a KEY_ prefix, strip it off
|
||||||
if (!strncmp(keyname.c_str(), "KEY_", 4)) {
|
if (!strncmp(keyname.c_str(), "KEY_", 4)) {
|
||||||
return find_input_key_value(keyname.c_str() + 4);
|
return find_input_key_value(keyname.c_str() + 4);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#ifndef MANAGER_H
|
#ifndef MANAGER_H
|
||||||
#define MANAGER_H
|
#define MANAGER_H
|
||||||
|
|
||||||
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -14,7 +14,7 @@ namespace G13 {
|
|||||||
* top level class, holds what would otherwise be in global variables
|
* top level class, holds what would otherwise be in global variables
|
||||||
*/
|
*/
|
||||||
class G13_Manager {
|
class G13_Manager {
|
||||||
public:
|
public:
|
||||||
G13_Manager();
|
G13_Manager();
|
||||||
|
|
||||||
G13_KEY_INDEX find_g13_key_value(const std::string &keyname) const;
|
G13_KEY_INDEX find_g13_key_value(const std::string &keyname) const;
|
||||||
@ -23,7 +23,9 @@ public:
|
|||||||
LINUX_KEY_VALUE find_input_key_value(const std::string &keyname) const;
|
LINUX_KEY_VALUE find_input_key_value(const std::string &keyname) const;
|
||||||
std::string find_input_key_name(LINUX_KEY_VALUE) const;
|
std::string find_input_key_name(LINUX_KEY_VALUE) const;
|
||||||
|
|
||||||
void set_logo(const std::string &fn) { logo_filename = fn; }
|
void set_logo(const std::string &fn) {
|
||||||
|
logo_filename = fn;
|
||||||
|
}
|
||||||
int run();
|
int run();
|
||||||
|
|
||||||
std::string string_config_value(const std::string &name) const;
|
std::string string_config_value(const std::string &name) const;
|
||||||
@ -34,7 +36,7 @@ public:
|
|||||||
void set_log_level(::boost::log::trivial::severity_level lvl);
|
void set_log_level(::boost::log::trivial::severity_level lvl);
|
||||||
void set_log_level(const std::string &);
|
void set_log_level(const std::string &);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void init_keynames();
|
void init_keynames();
|
||||||
void display_keys();
|
void display_keys();
|
||||||
void discover_g13s(libusb_device **devs, ssize_t count,
|
void discover_g13s(libusb_device **devs, ssize_t count,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string.h>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
// convert a .pbm raw file to our custom .lpbm format
|
// convert a .pbm raw file to our custom .lpbm format
|
||||||
@ -32,10 +33,8 @@ int main(int argc, char *argv[]) {
|
|||||||
unsigned char buf[160 * 48];
|
unsigned char buf[160 * 48];
|
||||||
memset(buf, 0, 160 * 43);
|
memset(buf, 0, 160 * 43);
|
||||||
while (cin >> c) {
|
while (cin >> c) {
|
||||||
if (i % 20 == 0)
|
if (i % 20 == 0) row++;
|
||||||
row++;
|
if (row == 8) row = 0;
|
||||||
if (row == 8)
|
|
||||||
row = 0;
|
|
||||||
buf[7 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 0) & 0x01) << row;
|
buf[7 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 0) & 0x01) << row;
|
||||||
buf[6 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 1) & 0x01) << row;
|
buf[6 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 1) & 0x01) << row;
|
||||||
buf[5 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 2) & 0x01) << row;
|
buf[5 + (i % 20) * 8 + i / 160 * 160] |= ((c >> 2) & 0x01) << row;
|
||||||
|
@ -2,14 +2,15 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <boost/preprocessor/seq/for_each.hpp>
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
#include "profile.h"
|
#include "profile.h"
|
||||||
#include "manager.h"
|
|
||||||
#include "repr.h"
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/preprocessor/seq/for_each.hpp>
|
||||||
|
|
||||||
#include "find_or_throw.h"
|
#include "find_or_throw.h"
|
||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
|
#include "manager.h"
|
||||||
|
#include "repr.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
|
@ -50,15 +50,18 @@ class G13_Profile;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class G13_Key : public G13_Actionable<G13_Profile> {
|
class G13_Key : public G13_Actionable<G13_Profile> {
|
||||||
public:
|
public:
|
||||||
void dump(std::ostream &o) const;
|
void dump(std::ostream &o) const;
|
||||||
G13_KEY_INDEX index() const { return _index.index; }
|
G13_KEY_INDEX index() const {
|
||||||
|
return _index.index;
|
||||||
|
}
|
||||||
|
|
||||||
void parse_key(unsigned char *byte, G13_Device *g13);
|
void parse_key(unsigned char *byte, G13_Device *g13);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
struct KeyIndex {
|
struct KeyIndex {
|
||||||
KeyIndex(int key) : index(key), offset(key / 8), mask(1 << (key % 8)) {}
|
KeyIndex(int key) : index(key), offset(key / 8), mask(1 << (key % 8)) {
|
||||||
|
}
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
unsigned char offset;
|
unsigned char offset;
|
||||||
@ -69,12 +72,14 @@ protected:
|
|||||||
friend class G13_Profile;
|
friend class G13_Profile;
|
||||||
|
|
||||||
G13_Key(G13_Profile &mode, const std::string &name, int index)
|
G13_Key(G13_Profile &mode, const std::string &name, int index)
|
||||||
: G13_Actionable<G13_Profile>(mode, name), _index(index),
|
: G13_Actionable<G13_Profile>(mode, name),
|
||||||
|
_index(index),
|
||||||
_should_parse(true) {
|
_should_parse(true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_Key(G13_Profile &mode, const G13_Key &key)
|
G13_Key(G13_Profile &mode, const G13_Key &key)
|
||||||
: G13_Actionable<G13_Profile>(mode, key.name()), _index(key._index),
|
: G13_Actionable<G13_Profile>(mode, key.name()),
|
||||||
|
_index(key._index),
|
||||||
_should_parse(key._should_parse) {
|
_should_parse(key._should_parse) {
|
||||||
set_action(key.action());
|
set_action(key.action());
|
||||||
}
|
}
|
||||||
@ -90,14 +95,17 @@ protected:
|
|||||||
* profiles and switch between them easily
|
* profiles and switch between them easily
|
||||||
*/
|
*/
|
||||||
class G13_Profile {
|
class G13_Profile {
|
||||||
public:
|
public:
|
||||||
G13_Profile(G13_Device &keypad, const std::string &name_arg)
|
G13_Profile(G13_Device &keypad, const std::string &name_arg)
|
||||||
: _keypad(keypad), _name(name_arg) {
|
: _keypad(keypad),
|
||||||
|
_name(name_arg) {
|
||||||
_init_keys();
|
_init_keys();
|
||||||
}
|
}
|
||||||
|
|
||||||
G13_Profile(const G13_Profile &other, const std::string &name_arg)
|
G13_Profile(const G13_Profile &other, const std::string &name_arg)
|
||||||
: _keypad(other._keypad), _name(name_arg), _keys(other._keys) {
|
: _keypad(other._keypad),
|
||||||
|
_name(name_arg),
|
||||||
|
_keys(other._keys) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// search key by G13 keyname
|
// search key by G13 keyname
|
||||||
@ -106,11 +114,13 @@ public:
|
|||||||
void dump(std::ostream &o) const;
|
void dump(std::ostream &o) const;
|
||||||
|
|
||||||
void parse_keys(unsigned char *buf);
|
void parse_keys(unsigned char *buf);
|
||||||
const std::string &name() const { return _name; }
|
const std::string &name() const {
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
const G13_Manager &manager() const;
|
const G13_Manager &manager() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
G13_Device &_keypad;
|
G13_Device &_keypad;
|
||||||
std::string _name;
|
std::string _name;
|
||||||
std::vector<G13_Key> _keys;
|
std::vector<G13_Key> _keys;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <ostream>
|
|
||||||
|
|
||||||
#include "repr.h"
|
#include "repr.h"
|
||||||
|
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
void string_repr_out::write_on(std::ostream &o) const {
|
void string_repr_out::write_on(std::ostream &o) const {
|
||||||
|
10
g13d/repr.h
10
g13d/repr.h
@ -1,13 +1,14 @@
|
|||||||
#ifndef REPR_H
|
#ifndef REPR_H
|
||||||
#define REPR_H
|
#define REPR_H
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
struct string_repr_out {
|
struct string_repr_out {
|
||||||
string_repr_out(const std::string &str) : s(str) {}
|
string_repr_out(const std::string &str) : s(str) {
|
||||||
|
}
|
||||||
void write_on(std::ostream &) const;
|
void write_on(std::ostream &) const;
|
||||||
|
|
||||||
std::string s;
|
std::string s;
|
||||||
@ -18,7 +19,8 @@ inline std::ostream &operator<<(std::ostream &o, const string_repr_out &sro) {
|
|||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T> inline const T &repr(const T &v) {
|
template <class T>
|
||||||
|
inline const T &repr(const T &v) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,6 +32,6 @@ inline string_repr_out repr(const std::string &s) {
|
|||||||
return string_repr_out(s);
|
return string_repr_out(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace G13
|
||||||
|
|
||||||
#endif // REPR_H
|
#endif // REPR_H
|
||||||
|
@ -2,17 +2,18 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
G13_Stick::G13_Stick(G13_Device &keypad)
|
G13_Stick::G13_Stick(G13_Device &keypad)
|
||||||
: _keypad(keypad), _bounds(0, 0, 255, 255), _center_pos(127, 127),
|
: _keypad(keypad),
|
||||||
|
_bounds(0, 0, 255, 255),
|
||||||
|
_center_pos(127, 127),
|
||||||
_north_pos(127, 0) {
|
_north_pos(127, 0) {
|
||||||
_stick_mode = STICK_KEYS;
|
_stick_mode = STICK_KEYS;
|
||||||
|
|
||||||
@ -52,8 +53,7 @@ void G13_Stick::set_mode(stick_mode_t m) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_stick_mode == STICK_CALCENTER ||
|
if (_stick_mode == STICK_CALCENTER || _stick_mode == STICK_CALBOUNDS ||
|
||||||
_stick_mode == STICK_CALBOUNDS ||
|
|
||||||
_stick_mode == STICK_CALNORTH) {
|
_stick_mode == STICK_CALNORTH) {
|
||||||
_recalc_calibrated();
|
_recalc_calibrated();
|
||||||
}
|
}
|
||||||
@ -106,7 +106,9 @@ void G13_StickZone::test(const G13_ZoneCoord &loc) {
|
|||||||
|
|
||||||
G13_StickZone::G13_StickZone(G13_Stick &stick, const std::string &name,
|
G13_StickZone::G13_StickZone(G13_Stick &stick, const std::string &name,
|
||||||
const G13_ZoneBounds &b, G13_ActionPtr action)
|
const G13_ZoneBounds &b, G13_ActionPtr action)
|
||||||
: G13_Actionable<G13_Stick>(stick, name), _active(false), _bounds(b) {
|
: G13_Actionable<G13_Stick>(stick, name),
|
||||||
|
_active(false),
|
||||||
|
_bounds(b) {
|
||||||
set_action(action);
|
set_action(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
g13d/stick.h
20
g13d/stick.h
@ -1,9 +1,9 @@
|
|||||||
#ifndef STICK_H
|
#ifndef STICK_H
|
||||||
#define STICK_H
|
#define STICK_H
|
||||||
|
|
||||||
#include "coord.h"
|
|
||||||
#include "bounds.h"
|
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
#include "bounds.h"
|
||||||
|
#include "coord.h"
|
||||||
|
|
||||||
namespace G13 {
|
namespace G13 {
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ typedef Coord<double> G13_ZoneCoord;
|
|||||||
typedef Bounds<double> G13_ZoneBounds;
|
typedef Bounds<double> G13_ZoneBounds;
|
||||||
|
|
||||||
class G13_StickZone : public G13_Actionable<G13_Stick> {
|
class G13_StickZone : public G13_Actionable<G13_Stick> {
|
||||||
public:
|
public:
|
||||||
G13_StickZone(G13_Stick &, const std::string &name, const G13_ZoneBounds &,
|
G13_StickZone(G13_Stick &, const std::string &name, const G13_ZoneBounds &,
|
||||||
G13_ActionPtr = 0);
|
G13_ActionPtr = 0);
|
||||||
|
|
||||||
@ -27,9 +27,11 @@ public:
|
|||||||
|
|
||||||
void parse_key(unsigned char *byte, G13_Device *g13);
|
void parse_key(unsigned char *byte, G13_Device *g13);
|
||||||
void test(const G13_ZoneCoord &loc);
|
void test(const G13_ZoneCoord &loc);
|
||||||
void set_bounds(const G13_ZoneBounds &bounds) { _bounds = bounds; }
|
void set_bounds(const G13_ZoneBounds &bounds) {
|
||||||
|
_bounds = bounds;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool _active;
|
bool _active;
|
||||||
G13_ZoneBounds _bounds;
|
G13_ZoneBounds _bounds;
|
||||||
};
|
};
|
||||||
@ -37,7 +39,7 @@ protected:
|
|||||||
typedef boost::shared_ptr<G13_StickZone> G13_StickZonePtr;
|
typedef boost::shared_ptr<G13_StickZone> G13_StickZonePtr;
|
||||||
|
|
||||||
class G13_Stick {
|
class G13_Stick {
|
||||||
public:
|
public:
|
||||||
G13_Stick(G13_Device &keypad);
|
G13_Stick(G13_Device &keypad);
|
||||||
|
|
||||||
void parse_joystick(unsigned char *buf);
|
void parse_joystick(unsigned char *buf);
|
||||||
@ -46,11 +48,13 @@ public:
|
|||||||
G13_StickZone *zone(const std::string &, bool create = false);
|
G13_StickZone *zone(const std::string &, bool create = false);
|
||||||
void remove_zone(const G13_StickZone &zone);
|
void remove_zone(const G13_StickZone &zone);
|
||||||
|
|
||||||
const std::vector<G13_StickZone> &zones() const { return _zones; }
|
const std::vector<G13_StickZone> &zones() const {
|
||||||
|
return _zones;
|
||||||
|
}
|
||||||
|
|
||||||
void dump(std::ostream &) const;
|
void dump(std::ostream &) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _recalc_calibrated();
|
void _recalc_calibrated();
|
||||||
|
|
||||||
G13_Device &_keypad;
|
G13_Device &_keypad;
|
||||||
|
Loading…
Reference in New Issue
Block a user