{"id":16494546,"url":"https://github.com/portellam/generate-evdev","last_synced_at":"2026-03-05T21:31:28.038Z","repository":{"id":208044993,"uuid":"720700290","full_name":"portellam/generate-evdev","owner":"portellam","description":"Easily setup a virtual Keyboard-Video-Mouse (KVM) switch for Virtual Machines (VMs) on the Linux desktop. Bash script.","archived":false,"fork":false,"pushed_at":"2025-06-24T23:08:16.000Z","size":82,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-17T19:43:56.676Z","etag":null,"topics":["automated","bash","devices","evdev","event","hugepages","input","kvm","libvirt","linux","passthrough","pci","qemu","script","vfio","virtual-machine","virtualization"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/portellam.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}},"created_at":"2023-11-19T10:19:17.000Z","updated_at":"2025-04-08T02:57:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"398b8536-cabf-4ddc-ab7f-368a7de5652d","html_url":"https://github.com/portellam/generate-evdev","commit_stats":{"total_commits":24,"total_committers":1,"mean_commits":24.0,"dds":0.0,"last_synced_commit":"b342526b170d27951d18306c3771d1a60a97802d"},"previous_names":["portellam/generate-evdev"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/portellam/generate-evdev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fgenerate-evdev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fgenerate-evdev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fgenerate-evdev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fgenerate-evdev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/portellam","download_url":"https://codeload.github.com/portellam/generate-evdev/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fgenerate-evdev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30150404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T21:15:50.531Z","status":"ssl_error","status_checked_at":"2026-03-05T21:15:11.173Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automated","bash","devices","evdev","event","hugepages","input","kvm","libvirt","linux","passthrough","pci","qemu","script","vfio","virtual-machine","virtualization"],"created_at":"2024-10-11T14:14:19.796Z","updated_at":"2026-03-05T21:31:28.006Z","avatar_url":"https://github.com/portellam.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Generate Evdev\n### v1.0.2\nEasily setup a virtual Keyboard-Video-Mouse (KVM) switch for Libvirt/QEMU\nVirtual Machines (VMs).\n\n## [Download](#4-download)\n#### View this repository on [Codeberg][01] or [GitHub][02].\n[01]: https://codeberg.org/portellam/generate-evdev\n[02]: https://github.com/portellam/generate-evdev\n##\n\n## Table of Contents\n- [1. Why?](#1-why)\n- [2. Related Projects](#2-related-projects)\n- [3. Documentation](#3-documentation)\n- [4. Download](#4-download)\n- [5. Usage](#5-usage)\n- [6. Filenames and pathnames modified](#6-filenames-and-pathnames-modified)\n- [7. Contact](#7-contact)\n- [8. References](#8-references)\n\n## Contents\n### 1. Why?\nSwitch device inputs between Host and VM(s) or Guest(s). Requires devices to\nremain connected to be seen by Guests (similar to the limitations within the\nPS/2 cable standard, unlike USB).\n\n### 2. Related Projects\nTo view other relevant projects, visit [Codeberg][21]\nor [GitHub][22].\n\n[21]: https://codeberg.org/portellam/vfio-collection\n[22]: https://github.com/portellam/vfio-collection\n\n### 3. Documentation\n- What is VFIO?[\u003csup\u003e[2]\u003c/sup\u003e](#2)\n- VFIO Discussion and Support[\u003csup\u003e[3]\u003c/sup\u003e](#3)\n- Hardware-Passthrough Guide[\u003csup\u003e[1]\u003c/sup\u003e](#1)\n\n### 4. Download\n- Download the Latest Release:\u0026ensp;[Codeberg][41] or [GitHub][42].\n\n- Download the `.zip` file:\n    1. Viewing from the top of the repository's (current) webpage, click the\n        drop-down icon:\n        - `···` on Codeberg.\n        - `\u003c\u003e Code ` on GitHub.\n    2. Click `Download ZIP` and save.\n    3. Open the `.zip` file, then extract its contents.\n\n- Clone the repository:\n    1. Open a Command Line Interface (CLI) or Terminal.\n        - Open a console emulator (for Debian systems: Konsole).\n        - **Linux only:** Open an existing console: press `CTRL` + `ALT` + `F2`,\n        `F3`, `F4`, `F5`, or `F6`.\n            - **To return to the desktop,** press `CTRL` + `ALT` + `F7`.\n            - `F1` is reserved for debug output of the Linux kernel.\n            - `F7` is reserved for video output of the desktop environment.\n            - `F8` and above are unused.\n    2. Change your directory to your home folder or anywhere safe:\n        - `cd ~`\n    3. Clone the repository:\n        - `git clone https://www.codeberg.org/portellam/generate-evdev`\n        - `git clone https://www.github.com/portellam/generate-evdev`\n\n[41]: https://codeberg.org/portellam/generate-evdev/releases/latest\n[42]: https://github.com/portellam/generate-evdev/releases/latest\n\n### 5. Usage\n#### 5.1. Verify Installer is Executable\n1. Open the CLI (see [Download](#4-download)).\n\n2. Go to the directory of where the cloned/extracted repository folder is:\n`cd name_of_parent_folder/generate-evdev/`\n\n3. Make the installer script file executable: `chmod +x installer.bash`\n    - Do **not** make any other script files executable. The installer will perform\n  this action.\n    - Do **not** make any non-script file executable. This is not necessary and\n  potentially dangerous.\n\n#### 5.2. `installer.bash`\n- From within the project folder, execute: `sudo bash installer.bash`\n\n```\n  -h, --help       Print this help and exit.\n  -U, --update     Update qemu.conf source file before install or uninstall.\n  -i, --install    Install generate-evdev to system.\n  -u, --uninstall  Uninstall generate-evdev from system.\n```\n\n#### 5.3. `generate-evdev`\n- From any folder, execute: `sudo bash generate-evdev`\n  - The CLI's shell (bash) should recognize that the script file is located in\n    `/usr/local/bin`.\n\n```\n-h, --help                Print this help and exit.\n    --dump-xml            Dump QEMU commandline (XML) output to file.\n    --hugepages           Include Hugepages as device for Libvirt/QEMU.\n    --output-event-paths  Output Event device paths only.\n    --output-input-paths  Output Input device paths only.\n    --restart-service     Restart Libvirtd system service after setup.\n    --set-user            Sets user ownership of Libvirt Input devices to current user. Default is root.\n    --undo-changes        Undo changes; restore file backups.\n```\n\n### 5.4. How to use with an online/running Guest machine\nPress `L-CTRL` + `R-CTRL` to switch between Host and Guest.\n\n### 6. Filenames and pathnames modified\n#### 6.1. System configuration files\n  - `/etc/libvirt/qemu.conf`\n\n#### 6.2. Paths for project binaries and files\n  - `/usr/local/bin/generate-evdev`\n  - `/usr/local/etc/generate-evdev.d/`\n\n### 7. Contact\nDo you need help? Please visit the [Issues][71] page.\n\n[71]: https://github.com/portellam/generate-evdev/issues\n\n### 8. References\n#### 1.\n\u0026nbsp;\u0026nbsp;**PCI passthrough via OVMF**. ArchWiki. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://wiki.archlinux.org/title/PCI_passthrough_via_OVMF.\u003c/sup\u003e\n\n#### 2.\n\u0026nbsp;\u0026nbsp;**r/VFIO**. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://www.reddit.com/r/VFIO/.\u003c/sup\u003e\n\n#### 3.\n\u0026nbsp;\u0026nbsp;**VFIO - ‘Virtual Function I/O’ - The Linux Kernel Documentation**.\nThe linux kernel. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://www.kernel.org/doc/html/latest/driver-api/vfio.html.\u003c/sup\u003e\n##\n\n#### Click [here](#generate-evdev) to return to the top of this document.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportellam%2Fgenerate-evdev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fportellam%2Fgenerate-evdev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportellam%2Fgenerate-evdev/lists"}