Risposte:
C'è una sezione dedicata a questo in → Preferenze di Sistema → Tastiera :
Apri i tasti modificatori ... e riassegnali da qui:
Queste impostazioni sono specifiche per ogni tastiera esterna che hai collegato. Si "attaccheranno" tra i riavvii e ogni volta che si scollega una tastiera esterna e la si ricollega.
La soluzione macOS integrata non ha funzionato per me perché non esiste alcuna opzione per selezionare una tastiera diversa.
Per macOS Sierra a Mojave (versione attuale al momento), Karabiner-Elements fa esattamente questo. Puoi trovare la pagina GitHub su https://github.com/tekezo/Karabiner-Elements .
Funziona in background. Nelle preferenze, si configura il dispositivo di destinazione per la modifica e si ricorda le impostazioni. Ho una tastiera bluetooth (Logitech G613) in cui vengono scambiati solo il CMD e ALT di quella tastiera. Uso questa tastiera tra il mio PC e Mac.
Di seguito puoi vedere un esempio di Karabiner-Elements v12. Non mostra il mio G613 perché non è collegato in questo momento.
Uso Karabiner per il mio KB esterno, penso che sia l'unica utility attualmente disponibile ma Google è tuo amico. Per quanto riguarda la seconda domanda, per quanto ne so, solo se riesci a trovare un modo per eseguire Karabiner quando il KB esterno è collegato ma non diversamente. HTH.