Remix.run Logo
netsharc 7 hours ago

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.

notpushkin 2 hours ago | parent [-]

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:

    {
      "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 }]
            }
          ]
        }
      ]
    }