Results 1 to 2 of 2

Thread: HOWTO: Install gizmod on 11.10 or 12.04

Threaded View

  1. #1
    Join Date
    Aug 2006
    Kubuntu 8.04 Hardy Heron

    HOWTO: Install gizmod on 11.10 or 12.04

    The information in this thread has been moved to

    A thread for discussion of the wiki page only can be found here

    Thread closed.

    HOWTO: Install gizmod on Ubuntu 11.10+
    The Gizmo Daemon (gizmod) is a nice utility that lets you customize how various input devices (keyboards, mice, etc.) interact with Linux. In particular, it can be useful to recognize more exotic input devices that Linux doesn't natively understand. Example: it has support for the Griffin PowerMate dial, and you can then assign arbitrary actions to the dial (scroll, click, etc.).

    As of 11.10, gizmod is no longer in the Ubuntu repositories. As such, you have to compile it manually. The gizmod wiki has some good information, but the instructions don't work on Ubuntu 11.10+.

    Here I've collected the various tricks necessary to install gizmod on Ubuntu 11.10 (Oneric Ocelot) or 12.04 LTS (Precise Pangolin). You will need to make a small number of modifications to the source code, and compile it. Follow the official compile-from-source instructions until the Compiling and Installing step:

    Before that step, you'll need to make the changes detailed in this forum post. Specifically:

    size_t errors
    When attempting to run 'make' you will get errors like:
    In file included from ./gizmod-3.5/libHAverage.cpp:31:0:
    ./gizmod-3.5/libH/Average.hpp:74:5: error: ‘size_t’ does not name a type
    To fix these, make the following edits to the source code:
    1. In file ./gizmod-3.5/libH/Average.hpp
    #include <stdlib.h>
    2. In file ./gizmod-3.5/libH/DynamicBuffer.hpp
    #include <stdlib.h>
    no member named string errors
    When attempting to run 'make' you will get errors like:
    gizmod-3.5/libGizmod/Processes.cpp: In static member function ‘static void Gizmod::Processes::updateProcessTree()’:
    gizmod-3.5/libGizmod/Processes.cpp:157:27: error: ‘class boost::filesystem3::directory_entry’ has no member named ‘string’
    To fix this, make the following change to the source code:
    1. In the file ./gizmod-3.5/libGizmod/Proceses.cpp
    On line 157, change:
    string StatPath = iter->string() + "/stat";
    string StatPath = iter->path().string() + "/stat";
    2. In the file ./gizmod-3.5/gizmod/GizmoDaemon.cpp
    a. On line 1109, change:
    ret += "sys.path.insert(0, \"" + iter->string() + "\")\n";
    ret += "sys.path.insert(0, \"" + iter->path().string() + "\")\n";
    b. On line 1567, change:
    c. On line 2192, change:
    if (iter->path().leaf().find("event") != 0)
    if (iter->path().filename().string().find("event") != 0)
    d. On line 2194, change:
    eventsFiles.push_back(mEventsDir + "/" + iter->path().leaf());
    eventsFiles.push_back(mEventsDir + "/" + iter->path().filename().string());

    default_name_check error
    When attempting to run 'make' you will get an error like:
    gizmod-3.5/gizmod/Main.cpp: In function ‘int main(int, char**)’:
    gizmod-3.5/gizmod/Main.cpp:57:2: error: ‘default_name_check’ is not a member of ‘boost::filesystem3::path’
    To fix this, remove line 57 from ./gizmod-3.5/gizmod/Main.cpp

        // set filesystem to native filesystem checking
        // path::default_name_check(native); // Removed to eliminate compile error
    boost error
    When attempting to run 'make' you will get an error like:
    Linking CXX executable gizmod
    /usr/bin/ld: CMakeFiles/gizmod.dir/GizmoDaemon.o: undefined reference to symbol 'boost::system::system_category()'
    /usr/bin/ld: note: 'boost::system::system_category()' is defined in DSO /usr/lib/ so try adding it to the linker command line
    /usr/lib/ could not read symbols: Invalid operation
    To fix, edit the file /gizmod-3.5/build/gizmod/CMakeFiles/gizmod.dir/link.txt
    And add '''-lboost_system''' to the arguments:
    /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/gizmod.dir/GizmoDaemon.o CMakeFiles/gizmod.dir/GizmoUtils.o CMakeFiles/gizmod.dir/GizmodEventHandlerInterface.o CMakeFiles/gizmod.dir/Main.o -o gizmod -rdynamic ../libH/libH.a ../libGizmod/ -lboost_program_options -lpython2.7 ../libH/libH.a -lboost_filesystem -lboost_system -lboost_thread -lboost_serialization -lboost_python -lasound -lSM -lICE -lX11 -lXext -lutil -lpython2.7 -Wl,-rpath,/home/user/tmp/gizmod/gizmod-3.5/build/libGizmod:

    Finish compile
    With those changes, you should be able to finish the compile steps:
    sudo make install
    Excessive CPU usage
    If you find that gizmod is using 100% of CPU on your machine, this may be due to how polling interacts with newer kernel versions. The fix is to edit ./gizmod-3.5/libH/FileEventWatcher.cpp line 232-236:

        case WATCH_INOUT:
            flags = O_RDWR;
            //events = POLLIN | POLLOUT; // This line causes 100% CPU usage on newer kernels
            events = POLLIN;// | POLLOUT;
            ModeString = "Read / Write";
    Then re-compile and re-install:
    sudo make install
    Last edited by nothingspecial; June 29th, 2012 at 09:55 AM.
    New users: Be sure you understand commands before using them (especially sudo and rm).

Tags for this Thread


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts