{"id":39251776,"url":"https://github.com/iamkroot/asus-numpad","last_synced_at":"2026-01-18T00:05:05.487Z","repository":{"id":40700880,"uuid":"428760479","full_name":"iamkroot/asus-numpad","owner":"iamkroot","description":"Linux driver for Asus laptops to activate numpad on touchpad","archived":false,"fork":false,"pushed_at":"2025-04-01T07:38:49.000Z","size":149,"stargazers_count":41,"open_issues_count":11,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-01T08:37:43.287Z","etag":null,"topics":["asus","driver","linux","numpad","rust","touchpad"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/iamkroot.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}},"created_at":"2021-11-16T17:54:37.000Z","updated_at":"2025-04-01T07:37:27.000Z","dependencies_parsed_at":"2024-09-15T21:22:05.284Z","dependency_job_id":"968db608-ce13-4351-b3dd-831dbf235885","html_url":"https://github.com/iamkroot/asus-numpad","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/iamkroot/asus-numpad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamkroot%2Fasus-numpad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamkroot%2Fasus-numpad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamkroot%2Fasus-numpad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamkroot%2Fasus-numpad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamkroot","download_url":"https://codeload.github.com/iamkroot/asus-numpad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamkroot%2Fasus-numpad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28523062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T23:53:28.710Z","status":"ssl_error","status_checked_at":"2026-01-17T23:52:20.131Z","response_time":85,"last_error":"SSL_read: 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":["asus","driver","linux","numpad","rust","touchpad"],"created_at":"2026-01-18T00:05:01.015Z","updated_at":"2026-01-18T00:05:05.473Z","avatar_url":"https://github.com/iamkroot.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Asus Touchpad Numpad Driver\n\nLinux tool to allow using the numpad that is overlayed on various Asus Laptop touchpads.\n\n## Features\nThis builds upon the work done in [asus-touchpad-numpad-driver](https://github.com/mohamed-badaoui/asus-touchpad-numpad-driver), and adds more goodies that bring it closer to parity with the official Windows driver-\n* Hold to toggle numlock/cycle brightness\n* Drag to trigger calculator (on supported models)\n* Allows using the touchpad when numlock is active\n* Ignores touches in margins (outside the numpad)\n* Integration with system's NumLock state - toggle with external keyboards\n\n## Installation\n### Prerequisites\n* Install `libevdev`\n    * Debian / Ubuntu / Linux Mint / Pop!\\_OS / Zorin OS: `sudo apt install libevdev2`\n    * Arch Linux / Manjaro: `sudo pacman -S libevdev`\n    * Fedora: `sudo dnf install libevdev`\n\n### Use prebuilt binary\n* Download from [`Releases`](https://github.com/iamkroot/asus-numpad/releases) page\n* Copy to some directory in PATH. (Further instructions assume it is in `/usr/bin/`)\n\n**OR**\n\n### Compile from source\n* Install the Rust 2021 toolchain using [`Rustup`](https://rustup.rs)\n* `sudo -E cargo install --root /usr --git=\"https://github.com/iamkroot/asus-numpad\"`\n\n## Run\n* `sudo modprobe i2c-dev` and `sudo modprobe uinput`\n    * You can have them be loaded automatically at boot. Consult [ArchWiki](https://wiki.archlinux.org/title/Kernel_module#Automatic_module_loading_with_systemd) for details\n* Create the config file at `/etc/xdg/asus_numpad.toml` and add `layout = \"LAYOUT\"`, where `LAYOUT` is one of `UX433FA`, `M433IA`, `UX581`, `GX701`, `GX531` or `G533`. See [Configuration](#Configuration) for more options.\n\n* `sudo asus-numpad`\n\n## Running without `sudo`\nIt is best to run this program through a separate Unix user that is allowed to access input devices.\n```bash\n# create a group `uinput` and add a `udev` rule for it\n# needed to be able to create a dummy virtual keyboard\nsudo groupadd uinput\necho 'KERNEL==\"uinput\", GROUP=\"uinput\", MODE:=\"0660\"' | sudo tee /etc/udev/rules.d/99-input.rules\n\n# create a system user called \"asus_numpad\" which is a part of the required groups,\n# so that the program can access the touchpad events and control its brightness\nsudo useradd -Gi2c,input,uinput --no-create-home --system asus_numpad\n```\n\nAfter a reboot, check that the permissions are correct:\n* `ls -l /dev/uinput` should show `crw-rw---- 1 root uinput ... /dev/uinput` (The `uinput` after `root` is important)\n* Similarly, `ls -l /dev/i2c-*` should be owned by `i2c` group\n* Finally, `groups asus_numpad` should include `input`, `i2c` and `uinput`.\n\n## Systemd Service\nTo enable autoloading at boot, a systemd service has been provided.\n* If you have added the new user from previous section, add `User=asus_numpad` the end of `[Service]` section in `tools/asus-numpad.service`.\n* Run the following\n    ```bash\n    # copy the systemd service to a known location\n    sudo cp tools/asus-numpad.service /etc/systemd/system/\n\n    # enable and start the service\n    sudo systemctl enable --now asus-numpad.service\n    ```\n\n## Configuration\nThe config file is stored in TOML format at `/etc/xdg/asus_numpad.toml`. It supports the following params:\n\nname | type | default | desc\n--- | --- | --- | ---\n`layout` | `string` | **Required** | One of `UX433FA`, `M433IA`, `UX581`, `GX701`, `GX531` or `G533`.\n`calc_start_command` | \u003col type=\"a\"\u003e\u003cli\u003e Array of [`EV_KEY`](https://docs.rs/evdev-rs/latest/evdev_rs/enums/enum.EV_KEY.html), or \u003c/li\u003e \u003cli\u003e `{cmd = \"some_binary\", args = [\"arg1\", \"arg2]}` \u003c/li\u003e | `[\"KEY_CALC\"]` | Defines what is to be done when calc key is dragged. \u003cbr\u003e If variant `a` is used, the specified keys will be pressed. Variant `b` allows running an arbitrary command. \n`calc_stop_command` | Same as `calc_start_command` | _Not specified_ | Defines what is to be done when calc key is dragged the second time. Useful for closing/killing a launched process. If not specified, the `calc_start_command` will be triggered. \n`disable_numlock_on_start` | `bool` | `true` | Specifies whether we should deactivate the numlock when starting up.\n\n### Running commands as main user\nIf you are running the daemon under a different user as discussed in [Running without `sudo`](#running-without-sudo), and you have specified custom commands in the configuration, then you'll find that the commands are actually running under the `asus_numpad` user. This may or may not be irksome based on what the command does (it won't have access to your user's files).\n\nYou can use `sudo` for in order to run the commands as your main user account:\n1. `sudo visudo` to edit the `sudoers` file\n2. At the very end, add `asus_numpad ALL=(__YOUR_USERNAME__) NOPASSWD: ALL` (replace `__YOUR_USERNAME__` with your actual username!)\n3. In `asus_numpad.toml`, specify the commands as `{cmd = \"sudo\", args = [\"-u\", \"__YOUR_USERNAME__\", \"some_binary\", \"arg1\", \"arg2\"]`\n\n## Todo\n\nThe following features are planned and implemented for the app:\n* [x] Support UX433FA and M433IA\n* [x] Hold the numpad button to toggle it\n* [x] Use [i2cdev](https://crates.io/crates/i2cdev) crate for setting brightness\n* [x] Handle Calc Key\n* [x] Cycle through multiple brightness options\n* [x] Ignore touches in margins\n* [x] Support more numpad layouts (UX581 and GX701)\n* [x] Logging for debugging purposes\n* [x] Set model via program argument\n* [x] Systemd service to enable autostart\n* [x] Run without `sudo`\n* [x] Start Calc only on drag instead of tap\n* [x] Don't panic on errors - exit gracefully\n* [x] Integration with system's NumLock state (toggle with external keyboards)\n* [x] `strip` release binaries\n* [x] Re-triggering Calc Key should _close_ the previously opened calc\n* [x] Run custom command on triggering Calc Key\n* [ ] Autodetect laptop model\n* [ ] Disable numpad if idle for more than a minute\n\n## Acknowledgements\n* This is a rewrite of [asus-touchpad-numpad-driver](https://github.com/mohamed-badaoui/asus-touchpad-numpad-driver)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamkroot%2Fasus-numpad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamkroot%2Fasus-numpad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamkroot%2Fasus-numpad/lists"}