Huh, an idea would be physical buttons that a program listens to, and when you hit the key, the program sends a message to the OS to switch the keyboard layout to a particular one. So an Elgato Stream Deck or Razer Stream Controller.
So you'd have a button for each keyboard layout, and you'd just have to form the habit of smashing the key for e.g. Russian before typing a message in Russian.
For a more complicated solution, I suppose it'd be possible to detect which USB device sent a signal, and use this to detect which keyboard you're using. Maybe there'd need to be a workaround, like hitting Caps Lock on and off so the app has time to react and change the OS keyboard layout, before you type.
I’ve mapped Caps Lock to EN and Shift + Caps Lock to RU. Really stopped thinking about “what keyboard layout is on rn”, just subconsciously press Caps every time I start typing something in English. Pretty easy to replicate with Karabiner on macOS (and on Linux it’s supported out of the box).
If you really want a dedicated keyboard though yeah, would be a bit harder but might be possible to do something with Karabiner as well. The device_if condition might work here: https://karabiner-elements.pqrs.org/docs/json/complex-modifi...
Edit: this might work but I haven’t tried: