X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Flinux%2Fgamecontroller.cpp;fp=source%2Finput%2Flinux%2Fgamecontroller.cpp;h=bf690494a91c76d08d71f10d2ad8a425cf56a2a8;hb=051149e5026ff64f3ec477cf19080124b82de619;hp=0000000000000000000000000000000000000000;hpb=2f94297c901bf7161632fe88f23dcf987fa625f6;p=libs%2Fgui.git diff --git a/source/input/linux/gamecontroller.cpp b/source/input/linux/gamecontroller.cpp new file mode 100644 index 0000000..bf69049 --- /dev/null +++ b/source/input/linux/gamecontroller.cpp @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include "gamecontroller.h" +#include "gamecontroller_platform.h" + +using namespace std; + +namespace Msp { +namespace Input { + +GameController::GameController(unsigned index): + priv(new Private) +{ + priv->dev = new JsDevice(format("/dev/input/js%d", index)); + name = priv->dev->get_name(); + tick(); +} + +GameController::~GameController() +{ + delete priv->dev; + delete priv; +} + +void GameController::tick() +{ + js_event events[16]; + while(1) + { + unsigned len = priv->dev->read(reinterpret_cast(events), sizeof(events)); + + unsigned count = len/sizeof(js_event); + for(unsigned i=0; i