InputScope


NameInputScope JSON
Version 1.11 PyPI version JSON
download
home_pagehttps://github.com/suurjaak/InputScope
SummaryMouse and keyboard input heatmap visualizer and statistics
upload_time2024-04-17 17:35:26
maintainerNone
docs_urlNone
authorErki Suurjaak
requires_pythonNone
licenseMIT
keywords mouse keyboard logging heatmap
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            InputScope
==========

Mouse and keyboard input heatmap visualizer and statistics.

Runs a tray program that logs mouse and keyboard input events to a local database,
and provides a local web page for viewing statistics and heatmaps by day or month or year.

[![Mouse clicks heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_clicks.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/clicks.png)
[![Mouse moves heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_moves.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/moves.png)
[![Keyboard keys heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_keys.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/keys.png)
[![Keyboard combos heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_combos.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/combos.png)


Overview
--------

Logs mouse clicks and scrolls and movement, and keyboard key presses and key 
combinations; event categories can be toggled off from tray menu.

Provides an option to record named sessions, allowing to group inputs
with finer detail than one day.

Keypresses are logged as physical keys, ignoring Unicode mappings.
Note: keyboard logging can interfere with remote control desktop, 
UI automation scripts, and sticky keys.

Data is kept in an SQLite database.

The local web page is viewable at http://localhost:8099/,
port can be changed in configuration file.


### Configuration

Heatmap display settings can be set for all inputs or individually:
```python
HeatmapDisplayOptions = {"radius": 30, "keyboard": {"radius": 10}, "moves": {"radius": 10}}
```

Specific applications to monitor can be blacklisted
or whitelisted in configuration file, as:
```python
# Path can be absolute or relative like "C:\Python\python.exe" or "python.exe",
# and can contain wildcards like "python*".
ProgramBlacklist = {executable path: [] if all inputs else [input or event type, ]}
ProgramWhitelist = {executable path: [] if all inputs else [input or event type, ]}
```
e.g.
```python
# Monitor all inputs from Notepad only
ProgramWhitelist = {"notepad.exe": []}
```
or
```python
# Ignore keypress events from command prompts, and all mouse events from Paint.
ProgramBlacklist = {"cmd.exe": ["keys"], "mspaint.exe": ["mouse"]}
```

Non-standard keys can be added in configuration file, as:
```python
CustomKeys = {numeric key code: "text label for key"}
```
e.g.
```python
CustomKeys = {21: "IME Han/Yeong", 25: "IME Hanja"}
```

Screen areas to monitor for mouse events can be specified in configuration file,
allowing to log events from specific areas only or to skip events from blacklisted areas:
```python
# Coordinates given as pixels, or as percentages of screen size (decimal fractions 0..1).
MouseRegionsOfInterest    = [[x, y, w, h], ] or [[screen index, [x, y, w, h]], ]
MouseRegionsOfDisinterest = [[x, y, w, h], ] or [[screen index, [x, y, w, h]], ]
```
e.g.
```python
# Ignore mouse events from center of all screens
MouseRegionsOfDisinterest = [[0.49, 0.49, 0.02, 0.02]]
```

For more on configuration settings, see DETAIL.md.


Known issues
------------

In Linux, Numpad navigation keys like PageUp are logged as ordinary PageUp when NumLock off.


Installation
------------

Works best on Windows, tested on Linux, might work on Mac.

Windows: download and launch the latest release from
http://github.com/suurjaak/InputScope/releases.

Or:
`pip install inputscope`

Three components in source code form:
* main - wxPython desktop tray program, runs listener and webui
* listener - logs mouse and keyboard input, can run individually
* webui - web frontend for statistics and heatmaps, can run individually

Listener and web-UI components can be run separately.

In source code form, data and configuration is kept under `inputscope/var`.

The pip installation will add commands `inputscope`, `inputscope-listener` 
and `inputscope-webui` to path.


Dependencies
------------

* Python 2.7 or Python 3.5+ (https://www.python.org)
* bottle (https://pypi.org/project/bottle)
* psutil (https://pypi.org/project/psutil)
* pynput (https://pypi.org/project/pynput)
* pywin32 (optional, for toggling "Start with Windows") (https://pypi.org/project/pywin32)
* wxPython (optional) (https://wxpython.org)

If wxPython is not available, InputScope will not have its tray program,
and will not recognize multi-monitor setups in mouse statistics.

For application statistics in Linux, the `x11-utils` system package needs to be installed.


Attribution
-----------

Heatmaps are drawn with heatmap.js,
released under the MIT License,
(c) 2014 Patrick Wied, https://github.com/pa7/heatmap.js.

Icon from Paomedia small-n-flat iconset,
released under Creative Commons (Attribution 3.0 Unported),
https://www.iconfinder.com/icons/285642/monitor_icon.

Keyboard image modified from Wikipedia `File:ISO keyboard (105) QWERTY UK.svg`,
released under the GNU Free Documentation License,
http://en.wikipedia.org/wiki/File:ISO_keyboard_(105)_QWERTY_UK.svg.


License
-------

Copyright (C) 2015 by Erki Suurjaak.
Released as free open source software under the MIT License,
see LICENSE.md.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/suurjaak/InputScope",
    "name": "InputScope",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "mouse keyboard logging heatmap",
    "author": "Erki Suurjaak",
    "author_email": "erki@lap.ee",
    "download_url": null,
    "platform": "any",
    "description": "InputScope\r\n==========\r\n\r\nMouse and keyboard input heatmap visualizer and statistics.\r\n\r\nRuns a tray program that logs mouse and keyboard input events to a local database,\r\nand provides a local web page for viewing statistics and heatmaps by day or month or year.\r\n\r\n[![Mouse clicks heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_clicks.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/clicks.png)\r\n[![Mouse moves heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_moves.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/moves.png)\r\n[![Keyboard keys heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_keys.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/keys.png)\r\n[![Keyboard combos heatmap](https://raw.githubusercontent.com/suurjaak/InputScope/media/th_combos.png)](https://raw.githubusercontent.com/suurjaak/InputScope/media/combos.png)\r\n\r\n\r\nOverview\r\n--------\r\n\r\nLogs mouse clicks and scrolls and movement, and keyboard key presses and key \r\ncombinations; event categories can be toggled off from tray menu.\r\n\r\nProvides an option to record named sessions, allowing to group inputs\r\nwith finer detail than one day.\r\n\r\nKeypresses are logged as physical keys, ignoring Unicode mappings.\r\nNote: keyboard logging can interfere with remote control desktop, \r\nUI automation scripts, and sticky keys.\r\n\r\nData is kept in an SQLite database.\r\n\r\nThe local web page is viewable at http://localhost:8099/,\r\nport can be changed in configuration file.\r\n\r\n\r\n### Configuration\r\n\r\nHeatmap display settings can be set for all inputs or individually:\r\n```python\r\nHeatmapDisplayOptions = {\"radius\": 30, \"keyboard\": {\"radius\": 10}, \"moves\": {\"radius\": 10}}\r\n```\r\n\r\nSpecific applications to monitor can be blacklisted\r\nor whitelisted in configuration file, as:\r\n```python\r\n# Path can be absolute or relative like \"C:\\Python\\python.exe\" or \"python.exe\",\r\n# and can contain wildcards like \"python*\".\r\nProgramBlacklist = {executable path: [] if all inputs else [input or event type, ]}\r\nProgramWhitelist = {executable path: [] if all inputs else [input or event type, ]}\r\n```\r\ne.g.\r\n```python\r\n# Monitor all inputs from Notepad only\r\nProgramWhitelist = {\"notepad.exe\": []}\r\n```\r\nor\r\n```python\r\n# Ignore keypress events from command prompts, and all mouse events from Paint.\r\nProgramBlacklist = {\"cmd.exe\": [\"keys\"], \"mspaint.exe\": [\"mouse\"]}\r\n```\r\n\r\nNon-standard keys can be added in configuration file, as:\r\n```python\r\nCustomKeys = {numeric key code: \"text label for key\"}\r\n```\r\ne.g.\r\n```python\r\nCustomKeys = {21: \"IME Han/Yeong\", 25: \"IME Hanja\"}\r\n```\r\n\r\nScreen areas to monitor for mouse events can be specified in configuration file,\r\nallowing to log events from specific areas only or to skip events from blacklisted areas:\r\n```python\r\n# Coordinates given as pixels, or as percentages of screen size (decimal fractions 0..1).\r\nMouseRegionsOfInterest    = [[x, y, w, h], ] or [[screen index, [x, y, w, h]], ]\r\nMouseRegionsOfDisinterest = [[x, y, w, h], ] or [[screen index, [x, y, w, h]], ]\r\n```\r\ne.g.\r\n```python\r\n# Ignore mouse events from center of all screens\r\nMouseRegionsOfDisinterest = [[0.49, 0.49, 0.02, 0.02]]\r\n```\r\n\r\nFor more on configuration settings, see DETAIL.md.\r\n\r\n\r\nKnown issues\r\n------------\r\n\r\nIn Linux, Numpad navigation keys like PageUp are logged as ordinary PageUp when NumLock off.\r\n\r\n\r\nInstallation\r\n------------\r\n\r\nWorks best on Windows, tested on Linux, might work on Mac.\r\n\r\nWindows: download and launch the latest release from\r\nhttp://github.com/suurjaak/InputScope/releases.\r\n\r\nOr:\r\n`pip install inputscope`\r\n\r\nThree components in source code form:\r\n* main - wxPython desktop tray program, runs listener and webui\r\n* listener - logs mouse and keyboard input, can run individually\r\n* webui - web frontend for statistics and heatmaps, can run individually\r\n\r\nListener and web-UI components can be run separately.\r\n\r\nIn source code form, data and configuration is kept under `inputscope/var`.\r\n\r\nThe pip installation will add commands `inputscope`, `inputscope-listener` \r\nand `inputscope-webui` to path.\r\n\r\n\r\nDependencies\r\n------------\r\n\r\n* Python 2.7 or Python 3.5+ (https://www.python.org)\r\n* bottle (https://pypi.org/project/bottle)\r\n* psutil (https://pypi.org/project/psutil)\r\n* pynput (https://pypi.org/project/pynput)\r\n* pywin32 (optional, for toggling \"Start with Windows\") (https://pypi.org/project/pywin32)\r\n* wxPython (optional) (https://wxpython.org)\r\n\r\nIf wxPython is not available, InputScope will not have its tray program,\r\nand will not recognize multi-monitor setups in mouse statistics.\r\n\r\nFor application statistics in Linux, the `x11-utils` system package needs to be installed.\r\n\r\n\r\nAttribution\r\n-----------\r\n\r\nHeatmaps are drawn with heatmap.js,\r\nreleased under the MIT License,\r\n(c) 2014 Patrick Wied, https://github.com/pa7/heatmap.js.\r\n\r\nIcon from Paomedia small-n-flat iconset,\r\nreleased under Creative Commons (Attribution 3.0 Unported),\r\nhttps://www.iconfinder.com/icons/285642/monitor_icon.\r\n\r\nKeyboard image modified from Wikipedia `File:ISO keyboard (105) QWERTY UK.svg`,\r\nreleased under the GNU Free Documentation License,\r\nhttp://en.wikipedia.org/wiki/File:ISO_keyboard_(105)_QWERTY_UK.svg.\r\n\r\n\r\nLicense\r\n-------\r\n\r\nCopyright (C) 2015 by Erki Suurjaak.\r\nReleased as free open source software under the MIT License,\r\nsee LICENSE.md.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Mouse and keyboard input heatmap visualizer and statistics",
    "version": "1.11",
    "project_urls": {
        "Homepage": "https://github.com/suurjaak/InputScope"
    },
    "split_keywords": [
        "mouse",
        "keyboard",
        "logging",
        "heatmap"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dda899732810c3492a16f02511984e2fc6cf16ee4e6cac1704024a05df3dead8",
                "md5": "cdc7439440182a70165e7355647e183f",
                "sha256": "1b4c101ec3b0bd14212df4f04cc8e8f5cac2e2c6a881c1ea18d4f18291ad977e"
            },
            "downloads": -1,
            "filename": "InputScope-1.11-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cdc7439440182a70165e7355647e183f",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 76920,
            "upload_time": "2024-04-17T17:35:26",
            "upload_time_iso_8601": "2024-04-17T17:35:26.613759Z",
            "url": "https://files.pythonhosted.org/packages/dd/a8/99732810c3492a16f02511984e2fc6cf16ee4e6cac1704024a05df3dead8/InputScope-1.11-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 17:35:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "suurjaak",
    "github_project": "InputScope",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "inputscope"
}
        
Elapsed time: 0.24350s