Yeah I want this. I acquired a keyboard for a language I’m learning and was disappointed that I couldn’t physically switch my hands between keyboards to use the other’s layout. I thought the computer would be smarter, mais non.
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 sol…
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:
{
"manipulators": [
{
"type": "basic",
"from": {
"any": "key_code",
"modifiers": { "optional": ["any"] }
},
"to": [
{ "select_input_source": { "language": "^ja$" } },
{ "from_event": true }
],
"conditions": [
{
"type": "device_if",
"identifiers": [{ "vendor_id": 1111, "product_id": 2222 }]
}
]
}
]
}