{ "info": { "author": "Bernard `Guyzmo` Pratz", "author_email": "kitt@m0g.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: X11 Applications", "Environment :: X11 Applications :: GTK", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: Unix" ], "description": "KiTT: Kivy Touch Tool\r\n=====================\r\n\r\nThis tool is a little Xorg service that provides a way to define\r\nmultitouch gestures for Xorg UI control. It is based on Kivy for gesture\r\ndetection and can run a variety of plugins to control the UI. You can\r\neasily configure your gestures using a json configuration file.\r\n\r\nKiTT takes advantage of the awesome work done by the\r\n`Kivy `_ team on touch and gesture detection framework.\r\nYour mouse has to be detected by Kivy in order to work with KiTT, and\r\nthus shall exists as a known ``/dev/input/event?`` device.\r\n\r\nAnd\r\n`here `_\r\nI wrote a blog post about it!\r\n\r\nINSTALL\r\n-------\r\n\r\nTo install the application, just get it from pipy:\r\n\r\n::\r\n\r\n pip install kitt\r\n\r\nTo run it at startup of Xorg, don't forget to add ``kitt start`` in your\r\n``.xinitrc`` or ``.xsession`` file!\r\n\r\nCONFIGURE\r\n---------\r\n\r\nHave a look at kivy specific `configuration\r\noptions `_\r\n\r\n- actions configuration file: ``config_actions.json``\r\n\r\nTo add a new gesture and bind actions, you shall create a configuration\r\nfile, either in the default path: ``~/.kivy/kitt.json`` or a file you\r\ncan specify using a command line option.\r\n\r\nTo configure, the file shall match the following format, be careful,\r\nevery comma, quote or bracket is important:\r\n\r\n::\r\n\r\n {\r\n \"engines\": [],\r\n \"actions\": {\r\n \"pinch_in\" : [],\r\n \"pinch_out\" : [],\r\n \"two_swipe_up\" : [],\r\n \"two_swipe_down\" : [],\r\n \"two_swipe_left\" : [],\r\n \"two_swipe_right\" : [],\r\n \"three_swipe_up\" : [],\r\n \"three_swipe_down\" : [],\r\n \"three_swipe_left\" : [],\r\n \"three_swipe_right\" : [],\r\n \"four_swipe_up\" : [],\r\n \"four_swipe_down\" : [],\r\n \"four_swipe_left\" : [],\r\n \"four_swipe_right\" : []\r\n }\r\n }\r\n\r\n * The `engines` key can contain three plugins: `xlib`, `wnck` and `dbus`.\r\n * The `action` key contains for each known common multitouch gesture the action to trigger,\r\n that depends on the engine you use.\r\n\r\n- gestures configuration file: ``config_gestures.json``:\r\n\r\n ::\r\n\r\n {\r\n \"move_down\" : [],\r\n \"move_up\" : [],\r\n \"move_left\" : [],\r\n \"move_right\": []\r\n }\r\n\r\n - The ``gestures`` key contains the specific gestures for your touch\r\n device. To record them, you have to execute kitt as follows, and\r\n copy the long ununderstandable strings that it outputs for each\r\n gesture you want to record.\r\n\r\n kitt foreground -v\r\n\r\nHere are the different actions available:\r\n\r\n- ``xlib`` engine: { \"function\": \"workspace\", \"parameters\": {\r\n \"direction\": \"N\" } }\r\n\r\nswitch current worskpace, N being the number of workspaces to jump over\r\n(can be a positive or negative number)\r\n\r\n::\r\n\r\n { \r\n \"function\": \"keypress\", \r\n \"parameters\": {\r\n \"target\": [\"app1\", \"app2\"],\r\n \"keys\": [\"KEY1\", \"KEY2\"]\r\n } \r\n } \r\n\r\nexecutes a key stroke, which can be a combination of several keys\r\n(modifier keys, or input keys from the list below) the \"target\"\r\nattribute is one of the ``wm-class`` property of the window. It can be\r\nfound when triggering the action on an unknown window, when in\r\n``foreground`` mode.\r\n\r\n::\r\n\r\n { \"function\": \"mouseclick\", \r\n \"parameters\": {\r\n \"button\": \"ButtonN\"\r\n } \r\n }\r\n\r\nexecutes a click (can be either ``Button1``, ``Button2``, ``Button3``,\r\n``button4``, ``Button5``)\r\n\r\n- ``wnck`` engine:\r\n\r\n { \"function\": \"workspace\\_up\", parameters: {} }\r\n\r\nswitch to previous workspace\r\n\r\n::\r\n\r\n { \"function\": \"workspace_down\", parameters: {} }\r\n\r\nswitch to next workspace\r\n\r\n- ``dbus`` engine:\r\n\r\n { \"function\": \"send\\_dbus\", \"parameters\": { \"service\":\r\n \"name.of.the.service\", \"path\": \"/path/to/the/object\", \"method\":\r\n \"methodName\" \"parameters\": [\"param1\", \"param2\"...] } }\r\n\r\ncall method on service ``service``, object path ``object`` with all\r\nneeded parameters\r\n\r\nDEVELOP\r\n-------\r\n\r\nFor development, you'll need zc.buildout\r\n(``apt-get install python-zc.buildout`` or ``pip install zc.buildout``)\r\n\r\n::\r\n\r\n % git clone https://github.com/guyzmo/kitt.git\r\n % cd kitt\r\n % buildout\r\n\r\nEXTEND\r\n------\r\n\r\nTo add a new gesture, or new way to interact, you can copy and base your\r\nwork upon ``$SRC/kitt/plugin_wnck.py`` or ``plugin_xlib.py``. The engine\r\n``plugin_dbus.py`` has a basic dbus interaction function.\r\n\r\nPlease fork the project, and send me back patches!\r\n\r\nTODO\r\n----\r\n\r\n- implement pinch\\_in/pinch\\_out features and other weird gestures ;\r\n- create a GUI, like BTT's\r\n\r\nLICENSE\r\n-------\r\n\r\nThis whole software is released under the GPLv3.\r\n\r\nLIST OF KEYS\r\n------------\r\n\r\n::\r\n\r\n 0 F33 L2 Touroku idiaeresis\r\n 1 F34 L3 U igrave\r\n 2 F35 L4 Uacute j\r\n 3 F4 L5 Ucircumflex k\r\n 4 F5 L6 Udiaeresis l\r\n 5 F6 L7 Ugrave less\r\n 6 F7 L8 Undo m\r\n 7 F8 L9 Up macron\r\n 8 F9 Left V masculine\r\n 9 Find Linefeed W minus\r\n A G M X mu\r\n AE H Mae_Koho Y multiply\r\n Aacute Hankaku Massyo Yacute n\r\n Acircumflex Help Menu Z nobreakspace\r\n Adiaeresis Henkan Meta_L Zen_Koho notsign\r\n Agrave Henkan_Mode Meta_R Zenkaku ntilde\r\n Alt_L Hiragana Mode_switch Zenkaku_Hankaku numbersign\r\n Alt_R Hiragana_Katakana Muhenkan a o\r\n Aring Home Multi_key aacute oacute\r\n Atilde Hyper_L MultipleCandidate acircumflex ocircumflex\r\n B Hyper_R N acute odiaeresis\r\n BackSpace I Next adiaeresis ograve\r\n Begin Iacute Ntilde ae onehalf\r\n Break Icircumflex Num_Lock agrave onequarter\r\n C Idiaeresis O ampersand onesuperior\r\n Cancel Igrave Oacute apostrophe ordfeminine\r\n Caps_Lock Insert Ocircumflex aring oslash\r\n Ccedilla J Odiaeresis asciicircum otilde\r\n Clear K Ograve asciitilde p\r\n Control_L KP_0 Ooblique asterisk paragraph\r\n Control_R KP_1 Otilde at parenleft\r\n D KP_2 P atilde parenright\r\n Delete KP_3 Page_Down b percent\r\n Down KP_4 Page_Up backslash period\r\n E KP_5 Pause bar periodcentered\r\n ETH KP_6 PreviousCandidate braceleft plus\r\n Eacute KP_7 Print braceright plusminus\r\n Ecircumflex KP_8 Prior bracketleft q\r\n Ediaeresis KP_9 Q bracketright question\r\n Egrave KP_Add R brokenbar questiondown\r\n Eisu_Shift KP_Begin R1 c quotedbl\r\n Eisu_toggle KP_Decimal R10 ccedilla quoteleft\r\n End KP_Delete R11 cedilla quoteright\r\n Escape KP_Divide R12 cent r\r\n Eth KP_Down R13 colon registered\r\n Execute KP_End R14 comma s\r\n F KP_Enter R15 copyright script_switch\r\n F1 KP_Equal R2 currency section\r\n F10 KP_F1 R3 d semicolon\r\n F11 KP_F2 R4 degree slash\r\n F12 KP_F3 R5 diaeresis space\r\n F13 KP_F4 R6 division ssharp\r\n F14 KP_Home R7 dollar sterling\r\n F15 KP_Insert R8 e t\r\n F16 KP_Left R9 eacute thorn\r\n F17 KP_Multiply Redo ecircumflex threequarters\r\n F18 KP_Next Return ediaeresis threesuperior\r\n F19 KP_Page_Down Right egrave twosuperior\r\n F2 KP_Page_Up Romaji equal u\r\n F20 KP_Prior S eth uacute\r\n F21 KP_Right Scroll_Lock exclam ucircumflex\r\n F22 KP_Separator Select exclamdown udiaeresis\r\n F23 KP_Space Shift_L f ugrave\r\n F24 KP_Subtract Shift_Lock g underscore\r\n F25 KP_Tab Shift_R grave v\r\n F26 KP_Up SingleCandidate greater w\r\n F27 Kana_Lock Super_L guillemotleft x\r\n F28 Kana_Shift Super_R guillemotright y\r\n F29 Kanji Sys_Req h yacute\r\n F3 Katakana T hyphen ydiaeresis\r\n F30 L THORN i yen\r\n F31 L1 Tab iacute z\r\n F32 L10 Thorn icircumflex", "description_content_type": null, "docs_url": "https://pythonhosted.org/KiTT/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://m0g.net/kitt/", "keywords": "multitouch gesture management tool", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "KiTT", "package_url": "https://pypi.org/project/KiTT/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/KiTT/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://m0g.net/kitt/" }, "release_url": "https://pypi.org/project/KiTT/1.1/", "requires_dist": null, "requires_python": null, "summary": "Kivy Touch Tool", "version": "1.1" }, "last_serial": 715781, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "3b694eb80326e5d29b18e7341912cff5", "sha256": "b484111209ea531c87dcb8d1d66c9f634b8bc87ec15affa4d610d2d04959b214" }, "downloads": -1, "filename": "KiTT-1.0-py2.7.egg", "has_sig": false, "md5_digest": "3b694eb80326e5d29b18e7341912cff5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 32643, "upload_time": "2013-05-22T19:09:05", "url": "https://files.pythonhosted.org/packages/e0/b6/d58ef811fb554dbd8888b80ac791091aad38910e39378ee675d63f3ffb29/KiTT-1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0be156a9738b3f489f549e2fb52f006c", "sha256": "d46e4a79012e2b5623d2613e1d86025e9d4a2fede14d59b7affb02edf1d5d3c3" }, "downloads": -1, "filename": "KiTT-1.0.tar.gz", "has_sig": false, "md5_digest": "0be156a9738b3f489f549e2fb52f006c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14995, "upload_time": "2013-05-22T19:09:08", "url": "https://files.pythonhosted.org/packages/d0/7a/85c76b3d6d52de2916c3f8161dcb2b0cef2b0642a6923ab0249668a1e6e5/KiTT-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "203be6c2c86adb20da38e10eea5b108e", "sha256": "83a2589af3fbba2b5a1f793623df59e7e0c5e11089f50d16882cfe05ab584129" }, "downloads": -1, "filename": "KiTT-1.1-py2.7.egg", "has_sig": false, "md5_digest": "203be6c2c86adb20da38e10eea5b108e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 33420, "upload_time": "2013-05-30T22:49:07", "url": "https://files.pythonhosted.org/packages/8d/74/c0c9dea9c36315fd4f180bc5241d58f3a4a265babcacef6ee2cd2d50d71f/KiTT-1.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8cb9a15415a32d02d49c5ee3cea2a980", "sha256": "48307d17680aba276e82cb9838841f28de689161548902b111a9f29f696cb80f" }, "downloads": -1, "filename": "KiTT-1.1.tar.gz", "has_sig": false, "md5_digest": "8cb9a15415a32d02d49c5ee3cea2a980", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22500, "upload_time": "2013-05-30T22:49:05", "url": "https://files.pythonhosted.org/packages/3d/40/ce8b576f3201b0db45b1e63df80fc021ff4a9b948e3b8a1315ec876d81a8/KiTT-1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "203be6c2c86adb20da38e10eea5b108e", "sha256": "83a2589af3fbba2b5a1f793623df59e7e0c5e11089f50d16882cfe05ab584129" }, "downloads": -1, "filename": "KiTT-1.1-py2.7.egg", "has_sig": false, "md5_digest": "203be6c2c86adb20da38e10eea5b108e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 33420, "upload_time": "2013-05-30T22:49:07", "url": "https://files.pythonhosted.org/packages/8d/74/c0c9dea9c36315fd4f180bc5241d58f3a4a265babcacef6ee2cd2d50d71f/KiTT-1.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "8cb9a15415a32d02d49c5ee3cea2a980", "sha256": "48307d17680aba276e82cb9838841f28de689161548902b111a9f29f696cb80f" }, "downloads": -1, "filename": "KiTT-1.1.tar.gz", "has_sig": false, "md5_digest": "8cb9a15415a32d02d49c5ee3cea2a980", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22500, "upload_time": "2013-05-30T22:49:05", "url": "https://files.pythonhosted.org/packages/3d/40/ce8b576f3201b0db45b1e63df80fc021ff4a9b948e3b8a1315ec876d81a8/KiTT-1.1.tar.gz" } ] }