Click this picture to see a recorded demo as well:

This project relies on the legendary doomgeneric repository, and implements a new VSCode code window as the screen buffer.
It performs the following:
- Uses color schemes to output color.
- Overrides VS Code's built-in type command. When the active editor has a
doom://URI scheme, keystrokes are intercepted and their char codes sent to DOOM instead of being passed through to the editor viadefault:type. - Registers named VS Code commands (
doom.key.up,doom.key.ctrl, etc.) that map to DOOM key codes. These are bound to actual keyboard shortcuts inpackage.jsonkeybindings with a when clause (likelyeditorTextFocus && resourceScheme == 'doom'). - Performs press-and-release simulations: VSCode only gives you keydown events, not keyup. So
pressAndReleaseworks around this with a debounced release timer (150ms). On each keystroke, it immediately sends a key-press event to the DOOM process, and schedules a key-release 150ms later. If the same key fires again before the timer expires, the release is postponed — this keeps the key "held down" for continuous movement while the user holds the key.
Another cool thing about this project - it was 100% vibe-coded using Claude Code.
- Open VSCode in this directory.
- Press
F5. A new Window should appear. - Run
DOOM: Start Gameto start (see video).
Give it a go!
Jonathan Bar Or