I'd like a Windows app that I've been calling I/O (IOU)... maybe I/O ou.

When I use the app on PCA and connect via a USB cable to PCB, PCB thinks I've plugged in a USB dock with 'attached' screens, keyboard, mouse, speakers, webcam, network, etc. PCB should never know that these devices are not real. The 'attached' devices should be configurable in the app and be integrated into PCA as follows:

  1. Screens can either be windows on PCA, or virtual screens (i.e. enable-able via PCA's vanilla Windows' display options). The latter could be implemented as an immutable window that is full screen on the virtual screen and wouldn't actually be visible on PCA. In AR/VR all of the virtual screens could be displayed in virtual space the same way normal screens can.
  2. The mouse on PCA should pass through to PCB when the mouse cursor is over the window or virtual screen. For the latter, if the virtual screen is set up to be to the right of PCA's actual screen (in display options), and PCB's virtual screen is set to duplicate PCBs actual screen, then mouse movement between screens should look and feel as if PCB's screen is attached to PCA.
  3. The keyboard on PCA should similarly be affected, with keystrokes being sent to PCB when one of it's virtual screens is the "active window".
  4. Audio devices should make the sounds from PCB audible on PCA. Ditto microphones from PCA to PCB, etc.
  5. Any webcam on PCA should be made available on PCB as a USB webcam.
  6. Folders on PCA can be provided to PCB as external storage devices.
  7. Network connectivity should be provided to PCB.
  8. More pseudo devices?
  9. Cross OS support - for PCA and/or PCB
  10. Multiple child PCs?
  11. over network instead of USB

Importantly, the devices that PCB sees, should not require installing additional drivers beyond the generic drivers normally available with Windows itself. Having said that, for iterative development purposes and as a miscellaneous catchall, other actual devices on PCA that aren't (yet) 'fakable' as generic versions could be made available to PCB using plain passthrough. Many of the configuration options intersect with the options of RDP, VMs (VirtualBox etc), and video conferencing.