devAlice
← Multi-OS

Asignación de teclado Mac ↔ Windows — Karabiner + PowerToys Keyboard Manager

Suaviza la división Cmd ↔ Ctrl entre los dos sistemas operativos. Configuración de Karabiner-Elements (Mac) y PowerToys Keyboard Manager (Windows) más cinco reasignaciones habituales.

La mayor fricción para quien usa Mac y Windows es el intercambio de Cmd ↔ Ctrl. macOS usa Cmd + C para copiar; Windows usa Ctrl + C. En Mac, Ctrl está en la incómoda esquina inferior; en Windows, la tecla Win apenas se usa. Tras adaptarse a un SO, las manos siguen equivocándose en el otro.

Creo que el objetivo no es hacer que un sistema imite al otro por completo, sino reducir el coste de cambio de contexto. Antes intentaba adaptarme mentalmente cada vez que cambiaba de máquina; ahora, con unas pocas reasignaciones clave, el cerebro deja de gastar energía en recordar qué tecla corresponde a cada sistema.

Esta guía unifica el comportamiento de las teclas en ambos SO con Karabiner-Elements (Mac) y PowerToys Keyboard Manager (Windows). Cinco reasignaciones habituales + asignaciones por aplicación + resolución de problemas.

Destinatarios: desarrolladores que usan Mac y Windows. Los usuarios de teclado externo (HHKB, Filco, etc.) aplican los mismos principios.

TL;DR

  1. Mac: Karabiner-Elements (brew install --cask karabiner-elements)
  2. Windows: paquete PowerToys (winget install Microsoft.PowerToys) → Keyboard Manager
  3. Asigna la misma tecla física → la misma acción en ambos SO (unifica Cmd ↔ Ctrl)
  4. Los teclados externos pueden cambiar de SO automáticamente mediante capa / interruptor dip
  5. Si la política corporativa bloquea PowerToys, usa AutoHotkey como sustituto

Requisitos previos

  • macOS 14+ y Windows 11 22H2+ en ambas máquinas
  • Derechos de administrador en ambas

1. Enfoque — ¿qué lado se adapta?

Tres opciones:

A. Hacer que Mac se comporte como Windows (usuarios de Windows nuevos en Mac)

  • Asigna Cmd → Ctrl con Karabiner
  • Algunos atajos nativos de Mac dejan de funcionar (Spotlight, etc.)
  • Recomendación: media

B. Hacer que Windows se comporte como Mac (usuarios de Mac forzados a Windows)

  • Asigna Win → Ctrl (o al revés) con PowerToys
  • Algunos atajos nativos de Windows dejan de funcionar (Win + Tab, etc.)
  • Recomendación: media

C. Ajustar moderadamente ambos lados (el más habitual)

  • Respeta las teclas nativas de cada SO; solo unifica los atajos que usas a diario
  • Curva de aprendizaje más suave
  • Recomendación: alta

Esta guía se centra en el Enfoque C. Los enfoques A y B reutilizan la misma configuración, pero con tablas de asignación distintas.


2. Mac — Configuración de Karabiner-Elements

2.1 Instalación

brew install --cask karabiner-elements

O descarga desde karabiner-elements.pqrs.org.

El primer inicio solicita cinco permisos de macOS:

  • Monitorización de entrada (Karabiner)
  • Monitorización de entrada (Karabiner-EventViewer)
  • Accesibilidad (Karabiner)
  • Accesibilidad (karabiner_grabber)
  • Herramientas de desarrollo (opcional)

Ajustes del sistema → Privacidad y seguridad → concede cada uno.

2.2 Detección del teclado

Karabiner detecta automáticamente los teclados externos. En Settings → Devices se listan todos.

2.3 Modificaciones simples

Usa la pestaña Simple Modifications para añadir una pareja de teclas.

DeA
right_controlright_command
caps_lockescape (o control para usuarios de vim)
right_optionright_command (opcional — amplía el área de Cmd)

2.4 Modificaciones complejas

Las asignaciones condicionales se definen en JSON. Edita ~/.config/karabiner/karabiner.json o añádelas desde la interfaz gráfica.

Caso habitual: hacer que Cmd + tecla actúe como Win + tecla al estilo Windows en un teclado externo:

{
  "description": "Map left_command to left_control (for Windows layout keyboard)",
  "manipulators": [
    {
      "type": "basic",
      "from": { "key_code": "left_command" },
      "to": [{ "key_code": "left_control" }],
      "conditions": [
        {
          "type": "device_if",
          "identifiers": [
            { "vendor_id": 1278, "product_id": 33 }  // ID del teclado externo
          ]
        }
      ]
    }
  ]
}

Encuentra el vendor/product ID de tu teclado externo con Karabiner-EventViewer.


3. Windows — PowerToys Keyboard Manager

3.1 Instalar PowerToys

winget install Microsoft.PowerToys

O descarga desde github.com/microsoft/PowerToys.

3.2 Activar Keyboard Manager

Inicia PowerToys → menú izquierdo → Keyboard Manager → activa el interruptor Enable Keyboard Manager.

3.3 Reasignar una tecla

Haz clic en Remap a key → añade una pareja.

TeclaAsignada a
Bloq MayúsEsc
Ctrl derechoWin derecho (coincide con la posición de Cmd en Mac)
Alt derechoCtrl derecho

3.4 Reasignar un atajo

Remap a shortcut — acorde a acorde.

Caso habitual: Cmd + Space de macOS (Spotlight) → Alt + Space de Windows (PowerToys Run):

DeA
Win + SpaceAlt + Space
Win + CCtrl + C
Win + VCtrl + V
Win + TabAlt + Tab

Deja «Target App» vacío para aplicarlo globalmente; rellénalo para limitarlo a una app concreta.

3.5 Alternativa con AutoHotkey (cuando PowerToys está bloqueado)

AutoHotkey es un único ejecutable con el mismo efecto. mac-like.ahk:

; Hace que Win+tecla se comporte como Ctrl+tecla estilo Mac
LWin & c::Send ^c
LWin & v::Send ^v
LWin & x::Send ^x
LWin & z::Send ^z
LWin & a::Send ^a
LWin & s::Send ^s
LWin & Space::Send !{Space}  ; PowerToys Run

Ejecuta mac-like.ahk → queda activo en la bandeja del sistema.


4. Cinco reasignaciones habituales (recomendadas)

Aplica en ambos SO:

IntenciónMac (Karabiner)Windows (PowerToys)
Bloq Mayús → Esccaps_lockescapeBloq Mayús → Esc
Ampliar modificadores derechosright_optionright_commandAlt derecho → Ctrl derecho
Ampliar modificadores izquierdos(por defecto)Ctrl derecho → Win derecho
Alternar IME (teclado externo)right_commandf19 + atajo IME(alternancia IME nativa de Windows)
Coherencia de nueva pestaña(Cmd+T por defecto)(PowerToys: mantiene Ctrl+T)

5. Teclados externos — cambio automático de SO (opcional)

Algunos teclados (HHKB, Niz Plum, etc.) incluyen interruptores dip o teclas de modo OS para diseños que reconocen el SO host.

HHKB Professional Hybrid

  • Interruptores dip en la parte posterior, o Fn+Q/W/E en el dispositivo
  • Modo Mac / Modo Win / Modo Lite

Niz Plum

  • Fn+/ en el dispositivo, o cambio de diseño mediante software

Teclados personalizados QMK/VIA

  • Asignación por capas mediante firmware VIA / QMK
  • Cambio automático según el puerto USB al que se conecta

Cuando el teclado externo dispone de sus propios modos de SO, Karabiner y PowerToys tienen menos protagonismo.


6. Asignación por aplicación (patrones habituales)

macOS — frontmost_application_if de Karabiner

Asignación que se activa en una app específica:

{
  "description": "VS Code only: Cmd+B → Ctrl+B (same shortcut as Linux/Win)",
  "manipulators": [
    {
      "type": "basic",
      "from": { "key_code": "b", "modifiers": { "mandatory": ["left_command"] } },
      "to": [{ "key_code": "b", "modifiers": ["left_control"] }],
      "conditions": [
        {
          "type": "frontmost_application_if",
          "bundle_identifiers": ["^com\\.microsoft\\.VSCode$"]
        }
      ]
    }
  ]
}

Windows — Target App de PowerToys

En Remap a shortcut, establece Target App al nombre del proceso:

  • VS Code: Code.exe
  • Chrome: chrome.exe
  • WSL: wt.exe (Windows Terminal)

7. Verificación

Mac

# Comprueba que Karabiner está disparando
open /Applications/Karabiner-EventViewer.app
# → Pulsa teclas; los eventos aparecen. Las asignaciones se muestran como transformación de → a.

Windows

  • PowerToys → Keyboard Manager → lista de reasignaciones
  • Escribe en cualquier campo de texto, confirma el comportamiento reasignado
  • (AutoHotkey) Icono H verde en la bandeja del sistema

8. Resolución de problemas

macOS Sequoia sigue revocando los permisos de Karabiner

  • Tras las actualizaciones de macOS, el modelo de seguridad suele volver a solicitar permisos
  • Ve a Ajustes del sistema → Privacidad y seguridad → desactiva y reactiva Monitorización de entrada / Accesibilidad para Karabiner
  • O reinstala Karabiner-Elements

PowerToys Keyboard Manager no funciona en algunas apps

  • Las apps ejecutadas como administrador (algunos juegos) eluden PowerToys
  • Ejecuta PowerToys como administrador (icono de bandeja → Restart as administrator)

Tras la asignación, solo el teclado externo se comporta mal

  • Karabiner: en Devices, selecciona el teclado y activa «Modify events from this device»
  • PowerToys: las teclas específicas del fabricante (p. ej., botones laterales del Logitech G502) no se pueden reasignar

La tecla de alternancia IME de macOS deja de funcionar

  • Ajustes del sistema → Teclado → Fuentes de entrada → Atajos: comprueba el atajo IME
  • Con Karabiner, asigna el right_command del teclado externo al atajo IME:
    {
      "from": { "key_code": "right_command" },
      "to": [{ "key_code": "japanese_kana" }]   // reconocido por el IME coreano
    }

Windows Win + L (bloqueo) fue reasignada

  • Atajo de seguridad del sistema reservado. PowerToys no puede interceptarlo (Windows tiene prioridad)
  • AutoHotkey tampoco puede anularlo
  • Sin solución alternativa: elige otro atajo

Conflicto de IME Mac vs Windows en un teclado Bluetooth compartido

  • El mismo teclado Bluetooth emparejado con ambas máquinas: el estado IME del último SO usado persiste
  • Usa el interruptor de modo OS del teclado (HHKB Fn+Q/W/E)
  • O desempareja y vuelve a emparejar al cambiar de máquina

9. Siguientes pasos


Referencias

Historial de cambios

  • 2026-05-16: Primer borrador. Instalación de Karabiner + PowerToys + cinco reasignaciones habituales + por aplicación + teclados externos + seis casos de resolución de problemas.