Skip to content

Repository files navigation

couch-parsec — Play FIFA / EA FC Co-op Over Parsec With a Keyboard as Player 2's Controller

couch-parsec: play FIFA co-op over Parsec using a keyboard as Player 2's controller

couch-parsec turns a keyboard into a real virtual Xbox 360 controller on Windows, so a friend with no gamepad can play local co-op FIFA / EA FC with you over Parsec, or on the same PC. It fixes the specific failure where Windows merges every keyboard into one input stream and Parsec re-injects a guest's keystrokes as the host's own — the reason "just have Player 2 use the keyboard" doesn't work by default.

Also useful for: turning a keyboard into an Xbox controller for any game that only supports one keyboard device, remote co-op without a second gamepad, and split-input local multiplayer on Windows in general.

Contents

The problem: why FIFA co-op over Parsec breaks with two keyboards

You and a remote friend want to play offline co-op on your copy of FIFA. Only one of you has a controller; the other only has a keyboard on their end of the Parsec call. That doesn't work, for two stacked reasons:

  1. Windows only ever exposes one "keyboard." Every physical keyboard attached to a PC gets merged into a single input stream, and FIFA's controller-assignment screen can only bind one player to it. There's no in-game setting that splits it — the OS itself has already flattened the distinction before the game ever sees a keystroke.
  2. Parsec makes it worse, not better. When your friend (the guest) presses a key, Parsec injects that keystroke on your PC (the host) as if you had typed it yourself. Both players end up feeding the exact same input stream, so FIFA sees one keyboard being mashed by two people — not two players.

Parsec does forward real gamepads correctly, creating a distinct virtual controller per guest. So the fix isn't a FIFA setting or a Parsec setting — it's to stop presenting a keyboard as a keyboard.

The fix: a real virtual gamepad, not a keystroke hack

couch-parsec uses the ViGEmBus driver to turn a keystroke stream into a real virtual Xbox 360 controller — one that Windows, Parsec, and FIFA all enumerate as genuine hardware, fully independent of the host's own keyboard/controller. Run it on the guest's PC and Parsec forwards their virtual pad like any other gamepad, so FIFA sees two separate, correctly assignable devices and each player claims their own side at team select.

The core tool (kb2pad.py) itself doesn't know anything about FIFA — it just maps keys to gamepad axes/buttons — so it works for any game that reads a controller, but the config, docs, and default key layout in this repo are tuned specifically for FIFA/EA FC Kick-Off co-op.

Quick start

  1. Install ViGEmBus (reboot after).
  2. Install Python (tick "Add python.exe to PATH").
  3. Double-click START_kb2pad.bat. It elevates to Administrator, installs vgamepad + keyboard, and starts the tool using kb2pad_config.json.
  4. Verify with Win+Rjoy.cplXbox 360 Controller for Windows.

Full walkthrough — topology choices, Parsec/FIFA settings, remapping, and troubleshooting — is in SETUP.md.

If you're Player 2 and just need to know which keys do what, see PLAYER2_KEYS.md.

How it works

keyboard ──► kb2pad (keystrokes) ──► virtual XInput pad ──► Parsec / game

kb2pad.py hooks a configurable set of keys, tracks their state, and drives a vgamepad virtual controller at up to 120 Hz — WASD-style keys become an analog stick (with diagonals normalized so holding two keys isn't faster than one), other keys map to face buttons, shoulders, triggers, and the d-pad. Everything is remappable in kb2pad_config.json.

py kb2pad.py --show-layout   # print the current key map and exit

Pause (Ctrl+Alt+P) hands the keyboard back to Windows instantly; quit (Ctrl+Alt+Q) releases the virtual pad.

Requirements

  • Windows (ViGEmBus is Windows-only)
  • Python 3.9+
  • ViGEmBus driver
  • pip install -r requirements.txt (handled by START_kb2pad.bat)
  • Administrator rights (needed for global key hooks / suppression)

FAQ

Can two people use one keyboard on Windows for separate players?

No — Windows merges every attached physical keyboard into a single logical input device, so a game can only ever assign "the keyboard" to one player. There is no OS or game setting that splits one keyboard into two independent inputs. couch-parsec works around this by converting one player's keystrokes into a virtual gamepad instead, which Windows treats as a completely separate device.

Why does Player 2's keyboard input get eaten by Player 1 over Parsec?

Because Parsec forwards a guest's keystrokes to the host by injecting them into the host's own keyboard input stream — the host OS can't tell they came from a different machine. If both players are typing, FIFA just sees one keyboard being pressed by two people, not two separate players.

Does Parsec support two keyboards or two players on one PC?

Parsec supports multiple gamepads per session — it creates a distinct virtual controller on the host for each connected guest gamepad. It does not support splitting keyboard input by player. That's the gap couch-parsec fills: it gives the guest a virtual gamepad (built from their keystrokes) so Parsec's existing per-guest gamepad support kicks in.

How do I play FIFA / EA FC local co-op with a friend who has no controller?

Have the friend run couch-parsec on their own PC. It creates a virtual Xbox 360 controller from their keystrokes using the ViGEmBus driver. Their Parsec client detects it as a real gamepad and forwards it to your PC, where FIFA sees it as a second, independently assignable controller — no physical gamepad required on either end. See Quick start.

Can I use this for games other than FIFA?

Yes. kb2pad.py just maps configurable keys to standard Xbox 360 gamepad axes and buttons — it has no FIFA-specific logic. It works with any game that reads a real XInput controller. This repo's default config and key layout are simply tuned for FIFA/EA FC Kick-Off co-op.

Do both players need to run this tool?

No. Only the player without a physical controller needs it — typically the Parsec guest. The other player keeps using their keyboard or controller normally on the host PC.

Honest limits

  • Offline modes only — online modes need per-player accounts and often run anti-cheat that objects to global key hooks.
  • A keyboard is a digital input; it can't match a real analog stick for dribbling/shot-power finesse. The walk_modifier key narrows the gap but doesn't close it.
  • If either player has an actual USB/Bluetooth gamepad, just use that — Parsec forwards real controllers natively with zero setup.

See SETUP.md for the full list.

License

MIT — see LICENSE.

About

Turn a keyboard into a virtual Xbox 360 controller on Windows so a friend can play FIFA / EA FC local co-op with you over Parsec.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages