{"id":16700151,"url":"https://github.com/guyzmo/kitt","last_synced_at":"2025-04-10T03:50:33.925Z","repository":{"id":137880509,"uuid":"10155479","full_name":"guyzmo/kitt","owner":"guyzmo","description":"Kivy Touch Tool","archived":false,"fork":false,"pushed_at":"2013-05-31T20:32:36.000Z","size":208,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T05:05:06.503Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guyzmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-19T12:53:44.000Z","updated_at":"2015-10-06T02:22:52.000Z","dependencies_parsed_at":"2023-03-14T18:00:59.340Z","dependency_job_id":null,"html_url":"https://github.com/guyzmo/kitt","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyzmo%2Fkitt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyzmo%2Fkitt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyzmo%2Fkitt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyzmo%2Fkitt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guyzmo","download_url":"https://codeload.github.com/guyzmo/kitt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119296,"owners_count":21050755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T18:09:34.206Z","updated_at":"2025-04-10T03:50:33.889Z","avatar_url":"https://github.com/guyzmo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"KiTT: Kivy Touch Tool\n=====================\n\nThis tool is a little Xorg service that provides a way to define multitouch gestures\nfor Xorg UI control. It is based on Kivy for gesture detection and can run a variety\nof plugins to control the UI. You can easily configure your gestures using a json \nconfiguration file.\n\nKiTT takes advantage of the awesome work done by the [Kivy](http://kivy.org) team on\ntouch and gesture detection framework. Your mouse has to be detected by Kivy in order\nto work with KiTT, and thus shall exists as a known `/dev/input/event?` device.\n\nAnd [here](http://nothing.to/blog/2013/05/22/kitt:-a-multitouch-gesture-tool-based-on-kivy) I wrote a blog post about it!\n\nINSTALL\n-------\n\nTo install the application, just get it from pipy:\n\n    pip install kitt\n\nTo run it at startup of Xorg, don't forget to add `kitt start` in your `.xinitrc` or `.xsession` file!\n\n\nCONFIGURE\n---------\n\nHave a look at kivy specific [configuration options](http://kivy.org/docs/guide/config.html)\n\n * actions configuration file: `config_actions.json`\n\nTo add a new gesture and bind actions, you shall create a configuration file, either in the default\npath: `~/.kivy/kitt.json` or a file you can specify using a command line option.\n\nTo configure, the file shall match the following format, be careful, every comma, quote or bracket is important:\n\n    {\n        \"engines\": [],\n        \"actions\": {\n            \"pinch_in\"          : [],\n            \"pinch_out\"         : [],\n            \"two_swipe_up\"      : [],\n            \"two_swipe_down\"    : [],\n            \"two_swipe_left\"    : [],\n            \"two_swipe_right\"   : [],\n            \"three_swipe_up\"    : [],\n            \"three_swipe_down\"  : [],\n            \"three_swipe_left\"  : [],\n            \"three_swipe_right\" : [],\n            \"four_swipe_up\"     : [],\n            \"four_swipe_down\"   : [],\n            \"four_swipe_left\"   : [],\n            \"four_swipe_right\"  : []\n        }\n    }\n\n    * The `engines` key can contain three plugins: `xlib`, `wnck` and `dbus`.\n    * The `action` key contains for each known common multitouch gesture the action to trigger,\n    that depends on the engine you use.\n\n * gestures configuration file: `config_gestures.json`:\n\n        {\n            \"move_down\" : [],\n            \"move_up\"   : [],\n            \"move_left\" : [],\n            \"move_right\": []\n        }\n\n    * The `gestures` key contains the specific gestures for your touch device. To record them, \n    you have to execute kitt as follows, and copy the long ununderstandable strings that it outputs\n    for each gesture you want to record.\n\n        kitt foreground -v\n\n\nHere are the different actions available:\n\n * `xlib` engine:\n    { \n      \"function\": \"workspace\",\n      \"parameters\": {\n        \"direction\": \"N\"\n      } \n    } \n\nswitch current worskpace, N being the number of workspaces to jump over (can be a positive or negative number)\n\n    { \n      \"function\": \"keypress\", \n      \"parameters\": {\n        \"target\": [\"app1\", \"app2\"],\n        \"keys\": [\"KEY1\", \"KEY2\"]\n      } \n    } \n\nexecutes a key stroke, which can be a combination of several keys (modifier keys, or input keys from the list below)\nthe \"target\" attribute is one of the `wm-class` property of the window. It can be found when triggering the action on\nan unknown window, when in `foreground` mode.\n\n\n    { \"function\": \"mouseclick\", \n      \"parameters\": {\n        \"button\": \"ButtonN\"\n      } \n    }\n\nexecutes a click (can be either `Button1`, `Button2`, `Button3`, `button4`, `Button5`)\n\n\n * `wnck` engine:\n\n    { \"function\": \"workspace_up\", parameters: {} }\n\nswitch to previous workspace\n\n    { \"function\": \"workspace_down\", parameters: {} }\n\nswitch to next workspace\n\n * `dbus` engine:\n\n    { \n      \"function\": \"send_dbus\",\n      \"parameters\": { \n        \"service\": \"name.of.the.service\", \n        \"path\": \"/path/to/the/object\",\n        \"method\": \"methodName\"\n        \"parameters\": [\"param1\", \"param2\"...]\n      }\n    } \n\ncall method on service `service`, object path `object` with all needed parameters\n\nDEVELOP\n-------\n\nFor development, you'll need zc.buildout (`apt-get install python-zc.buildout` or `pip install zc.buildout`)\n\n    % git clone https://github.com/guyzmo/kitt.git\n    % cd kitt\n    % buildout\n\nEXTEND\n------\n\nTo add a new gesture, or new way to interact, you can copy and base your work upon\n`$SRC/kitt/plugin_wnck.py` or `plugin_xlib.py`. The engine `plugin_dbus.py` has a \nbasic dbus interaction function.\n\nPlease fork the project, and send me back patches!\n\nTODO\n----\n\n * implement pinch\\_in/pinch\\_out features and other weird gestures ;\n * create a GUI, like BTT's\n\nLICENSE\n-------\n\nThis whole software is released under the GPLv3.\n\nLIST OF KEYS\n------------\n\n    0                  F33                L2                 Touroku            idiaeresis\n    1                  F34                L3                 U                  igrave\n    2                  F35                L4                 Uacute             j\n    3                  F4                 L5                 Ucircumflex        k\n    4                  F5                 L6                 Udiaeresis         l\n    5                  F6                 L7                 Ugrave             less\n    6                  F7                 L8                 Undo               m\n    7                  F8                 L9                 Up                 macron\n    8                  F9                 Left               V                  masculine\n    9                  Find               Linefeed           W                  minus\n    A                  G                  M                  X                  mu\n    AE                 H                  Mae_Koho           Y                  multiply\n    Aacute             Hankaku            Massyo             Yacute             n\n    Acircumflex        Help               Menu               Z                  nobreakspace\n    Adiaeresis         Henkan             Meta_L             Zen_Koho           notsign\n    Agrave             Henkan_Mode        Meta_R             Zenkaku            ntilde\n    Alt_L              Hiragana           Mode_switch        Zenkaku_Hankaku    numbersign\n    Alt_R              Hiragana_Katakana  Muhenkan           a                  o\n    Aring              Home               Multi_key          aacute             oacute\n    Atilde             Hyper_L            MultipleCandidate  acircumflex        ocircumflex\n    B                  Hyper_R            N                  acute              odiaeresis\n    BackSpace          I                  Next               adiaeresis         ograve\n    Begin              Iacute             Ntilde             ae                 onehalf\n    Break              Icircumflex        Num_Lock           agrave             onequarter\n    C                  Idiaeresis         O                  ampersand          onesuperior\n    Cancel             Igrave             Oacute             apostrophe         ordfeminine\n    Caps_Lock          Insert             Ocircumflex        aring              oslash\n    Ccedilla           J                  Odiaeresis         asciicircum        otilde\n    Clear              K                  Ograve             asciitilde         p\n    Control_L          KP_0               Ooblique           asterisk           paragraph\n    Control_R          KP_1               Otilde             at                 parenleft\n    D                  KP_2               P                  atilde             parenright\n    Delete             KP_3               Page_Down          b                  percent\n    Down               KP_4               Page_Up            backslash          period\n    E                  KP_5               Pause              bar                periodcentered\n    ETH                KP_6               PreviousCandidate  braceleft          plus\n    Eacute             KP_7               Print              braceright         plusminus\n    Ecircumflex        KP_8               Prior              bracketleft        q\n    Ediaeresis         KP_9               Q                  bracketright       question\n    Egrave             KP_Add             R                  brokenbar          questiondown\n    Eisu_Shift         KP_Begin           R1                 c                  quotedbl\n    Eisu_toggle        KP_Decimal         R10                ccedilla           quoteleft\n    End                KP_Delete          R11                cedilla            quoteright\n    Escape             KP_Divide          R12                cent               r\n    Eth                KP_Down            R13                colon              registered\n    Execute            KP_End             R14                comma              s\n    F                  KP_Enter           R15                copyright          script_switch\n    F1                 KP_Equal           R2                 currency           section\n    F10                KP_F1              R3                 d                  semicolon\n    F11                KP_F2              R4                 degree             slash\n    F12                KP_F3              R5                 diaeresis          space\n    F13                KP_F4              R6                 division           ssharp\n    F14                KP_Home            R7                 dollar             sterling\n    F15                KP_Insert          R8                 e                  t\n    F16                KP_Left            R9                 eacute             thorn\n    F17                KP_Multiply        Redo               ecircumflex        threequarters\n    F18                KP_Next            Return             ediaeresis         threesuperior\n    F19                KP_Page_Down       Right              egrave             twosuperior\n    F2                 KP_Page_Up         Romaji             equal              u\n    F20                KP_Prior           S                  eth                uacute\n    F21                KP_Right           Scroll_Lock        exclam             ucircumflex\n    F22                KP_Separator       Select             exclamdown         udiaeresis\n    F23                KP_Space           Shift_L            f                  ugrave\n    F24                KP_Subtract        Shift_Lock         g                  underscore\n    F25                KP_Tab             Shift_R            grave              v\n    F26                KP_Up              SingleCandidate    greater            w\n    F27                Kana_Lock          Super_L            guillemotleft      x\n    F28                Kana_Shift         Super_R            guillemotright     y\n    F29                Kanji              Sys_Req            h                  yacute\n    F3                 Katakana           T                  hyphen             ydiaeresis\n    F30                L                  THORN              i                  yen\n    F31                L1                 Tab                iacute             z\n    F32                L10                Thorn              icircumflex        \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyzmo%2Fkitt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguyzmo%2Fkitt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyzmo%2Fkitt/lists"}