{"id":34020558,"url":"https://github.com/niteshctrl/positionkey","last_synced_at":"2026-05-31T19:32:39.730Z","repository":{"id":57454260,"uuid":"428221693","full_name":"niteshctrl/positionkey","owner":"niteshctrl","description":"Multi-platform python package for mapping key strokes to mouse clicks.","archived":false,"fork":false,"pushed_at":"2024-03-08T07:13:06.000Z","size":57,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-15T03:54:03.858Z","etag":null,"topics":["keyboard-shortcuts","python","tdac"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/positionkey/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niteshctrl.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-11-15T10:39:36.000Z","updated_at":"2023-12-28T20:26:25.000Z","dependencies_parsed_at":"2022-08-29T15:00:17.511Z","dependency_job_id":null,"html_url":"https://github.com/niteshctrl/positionkey","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/niteshctrl/positionkey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fpositionkey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fpositionkey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fpositionkey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fpositionkey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niteshctrl","download_url":"https://codeload.github.com/niteshctrl/positionkey/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niteshctrl%2Fpositionkey/sbom","scorecard":{"id":689189,"data":{"date":"2025-08-11","repo":{"name":"github.com/niteshctrl/positionkey","commit":"ba978c10efd497bf906098c4f3048b520ea1de6c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/python-publish.yml:16","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/niteshctrl/positionkey/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/niteshctrl/positionkey/python-publish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:32","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/21 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-22T01:52:49.075Z","repository_id":57454260,"created_at":"2025-08-22T01:52:49.075Z","updated_at":"2025-08-22T01:52:49.075Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33746507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["keyboard-shortcuts","python","tdac"],"created_at":"2025-12-13T15:02:40.912Z","updated_at":"2026-05-31T19:32:39.724Z","avatar_url":"https://github.com/niteshctrl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![pkj](https://s3.amazonaws.com/niteshctrl.com/images/positionkey.png)\n\n\n# Position Key: Relax your fingers\nPositionKey is a multi-platform python package for mapping key strokes to mouse clicks.\n\n\n## Installation\n\n### Install with pip\nPositionKey is available on PyPI as ```positionkey```. \n1. Install PositionKey:\n```\npip install positionkey\n```\nFor positionkey for function properly, the dependencies will automatically be installed.\n\n### Local Installation\nPositionKey is compatible with Linux and Windows systems. To install a local version:\n\n1. Run installation command from the root directory:\n```\npip install .\n```\n\n\n## Why use PositionKey?\n\n\n## Usage\n* Currently, there are four keys mapped: **D, V, L and C** which stands for Dismiss, Verify, Long and Cancel respectively. These four keystrokes can store and hit four positions on the GUI screen.\n* Say if we need to alternately click on two buttons on the computer's screen, just map the click to any two of the mentioned keys and hit the keys alternately on the keyboard as per need.\n* We can record the pixel positions of keys D, V, L, C via the numeric keys 1, 2, 3, 4 respectively. The current position of the mouse pointer will be recorded whenever the above numeric keys are pressed while the script is running.\n* The four (x, y) positions will be stored in a CSV file named 'click_positions.csv' in the current directory for resuming the same positions on succesive runs.\n* The four positions defaults to (700, 0) pixel of the screen where 700 is the X-coordinate and 0 is the Y-coordinate.\n* There is a partition function which will virtually divide the computer screen into two halves: Left and Right. The script will only run when the mouse pointer is on the left of the partition line(vertical) while won't work if the mouse pointer is on the right side of the partition line(Vertical). The partition line can be recorded by hitting the key \"P\" on the keyboard.\n\n  \n## Licence\n[MIT Licence](https://github.com/niteshctrl/positionkey/blob/main/LICENSE)\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniteshctrl%2Fpositionkey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniteshctrl%2Fpositionkey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniteshctrl%2Fpositionkey/lists"}