Bifrost v0.6.0
-----------------------------------------------------------------------------
Amiga Mouse and Keyboard Input Controller via PC (Windows/Mac/Linux)
-----------------------------------------------------------------------------
WHAT IS IT?
Bifrost is a lightweight background daemon that lets your Amiga share
the mouse and keyboard of a PC (Windows/Linux/Mac) on the same LAN - like
a software KVM switch, but without the switch or the extra cables.
A small server runs on the PC and captures the mouse/keyboard globally. The
Amiga client finds it automatically via a UDP broadcast (no IP address to
configure), connects over TCP, and injects the forwarded events directly
into AmigaOS via input.device.
Move the PC mouse to a configured screen edge and control is handed to the
Amiga; move back the other way (or press Scroll Lock) and you're back on
the PC. The cursor even reappears at the mirrored position on the other
screen, regardless of the two screens' resolutions.
== Note ==
Requires a TCP/IP stack on the Amiga (AmiTCP, Roadshow, or ApolloOS
networking) and Python 3 + pynput on the PC.
-----------------------------------------------------------------------------
COMPATIBILITY
== Works On ==
AmigaOS 2.0 or later, on a 68020+ CPU (stock or accelerated), with a
TCP/IP stack:
- AmiTCP (classic AmigaOS 3.x)
- Roadshow
- ApolloOS networking stack
== Tested On ==
Amiga side: only tested on AmigaOS 3.x hardware so far (AmigaOS 2.0+
should work but is untested). PC server: Windows recommended
(hardware-accurate mouse deltas); Linux/macOS supported on a
best-effort basis.
== Does NOT Work On ==
AmigaOS 1.x, plain 68000/68010 machines, or machines without a TCP/IP
stack or not on the same LAN as the PC.
== Known Limitation: Keyboard Layout ==
Both PC and Amiga must be set to a US keyboard layout. Bifrost's key
mapping is hardcoded for US - setting the PC and Amiga to the same
non-US layout (e.g. both Swiss-French) does NOT fix it; keys like Y/Z
will still come out swapped. Set the PC to a US layout and the Amiga to
SetMap usa1. Accented characters are not supported at all yet - they're
silently dropped.
-----------------------------------------------------------------------------
INSTALLATION
Bifrost needs both an Amiga side and a PC side installed - the Amiga
alone won't connect to anything.
== PC Server Setup (required) ==
The PC server is in the `BifrostServer/` folder of the .zip download
alongside this .lha (also on GitHub - see SUPPORT below).
1. Copy BifrostServer/ anywhere on the PC
2. cd BifrostServer
3. Windows: pwsh .\setup_venv.ps1 | Linux/macOS: ./setup_venv.sh
4. Windows: .venv\Scripts\python main.py | Linux/macOS: python main.py
The server starts broadcasting on the LAN immediately; no further PC-side
config is required for a default setup. See README.md in the .zip for
auto-start-at-login instructions.
Bifrost (Amiga side) can be installed using the included Installer script
or manually.
== Method 1: Amiga Installer (Recommended) ==
1. Download the Bifrost release archive
2. Extract to RAM: or any temporary location
3. Double-click the `Install Bifrost` icon
4. Follow the on-screen prompts
5. Reboot when installation completes
The Installer will copy `Bifrost` to `C:` and add it to your `S:User-Startup`
automatically.
== Method 2: Manual Installation ==
1. Copy `Bifrost` to `C:` (or `SYS:C/`)
2. Add to `S:User-Startup`:
```
# BEGIN Bifrost
C:Bifrost >NIL:
# END Bifrost
```
3. Restart or run `Bifrost` manually
-----------------------------------------------------------------------------
VERSION HISTORY
0.6.0 (08.08.2026)
Auto-negotiated TCP port: the PC embeds its actual TCP listening port in
the UDP discovery broadcast and the Amiga connects to it automatically.
The Amiga no longer takes a port argument at all - no more manually
passing a matching port on both sides when the PC's port isn't the
default. The UDP discovery port itself is fixed (7891), independent of
the TCP port, so it stays reachable regardless.
0.5.1 (31.07.2026)
Documentation-only release: README/guide mouse-tuning and CLI syntax
sections corrected to match the 0.5.0 behavior below. No code changes.
0.5.0 (27.07.2026)
Initial public release
-----------------------------------------------------------------------------
SUPPORT
Found a bug? Have a feature request? Open an issue on GitHub.
For bug reports, feature requests, or questions:
https://github.com/vbuzzano/Bifrost/issues
Special thanks to the Amiga community for the NewMouse protocol, and to
the VBCC and pynput developers.
Author: Vincent Buzzano
-----------------------------------------------------------------------------
LICENSE
MIT License
Copyright (c) 2026 Vincent Buzzano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
|