Intercambiando Ctrl por Caps Lock

October 28, 2016

Desarrolladores  General  Off topic 


Cuando uno pasa mucho tiempo desarrollando, de a poco tiende a buscar pequeñas mejoras a su productividad o velocidad de desarrollo, crea snippets de código, macros, exprime al máximo el IDE que esté utilizando, empieza a conocerse todos los atajos que pueda, y otro montón de otras cosas más.

Una de las cosas que hace tiempo empecé a hacer, fue intercambiar los botones Ctrl por Caps Lock. En un principio, la idea es bastante extraña y no parece resultar demasiado bien, sin embargo, a medida que pasa el tiempo y uno se va acostumbrando a esa nueva tecla, las cosas cambian mucho y los dedos se cansan menos al tener que moverse menos para conseguir los comunes Ctrl+a, v, c, x, z, y, y todos los que uno ya tenga asimilados y que sean de su propio IDE.

Para lograr ese intercambio de teclas, hay varios métodos, yo voy a detallar 3 de los que utilicé. En realidad los últimos 2 son similares

AutoHotKey

Tal vez esta forma sea una de las más simples y extendibles que hay. En caso que no lo conzcan, AutoHotKey ó AHK, es un programa que no sólo permite hacer mapeos de teclas, sino que nos permite crear un montón de macros diferentes, todas programables, y tiene un comunidad muy grande.

La forma de isntalarlo es simple, se lo descargan, instalan, y se ejecuta. En cuanto se ejecute por primera vez, aparecerá un cartel avisándonos que no tenemos un archivo de configuración y que lo creemos.

En algunas PCs se abre el bloc de notas con el archivo para editarlo, y en otras sólo nos avisa. En este último caso, vamos a tener que ir a la carpeta Mis Documentos y crear un archivo llamado AutoHotkey.ahk. Lo editamos y pegamos el siguiente texto:

Capslock::Ctrl

#Capslock::
If GetKeyState("CapsLock", "T") = 1  
    SetCapsLockState, AlwaysOff
Else  
    SetCapsLockState, AlwaysOn
Return  

Una vez guardado, sólo nos queda recargar el script, para esto vamos a la barra de tareas, hacemos click derecho en el ícono de AHK y seleccionamos Reload this script

Nota importante: No es necesario que esté todo lo que acabo de ponerles, la primer línea es suficiente, pero con eso, perdemos el funcionamiento de Caps Lock completamente.

Regedit

Este método, a diferencia de AHK sólo nos cambia Caps Lock por Ctrl pero lo hace de forma permanente. Otra de las cosas que noté, es que a veces AHK bloquea el envío de Ctrl cuando la PC está muy cargada, y suele ser medio molesto descubrir que no estás escribiendo sino enviando atajos de teclado a diestra y siniestra, con este método eso no pasa.

Para hacer esto, abrimos el registro y vamos a HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout y dentro de eso creamos un nuevo campo binary con el nombre Scancode Map y escribimos estos datos 00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Es muy importante reiniciar la PC para poder ver los resultados.

PowerShell

Este método es para aquellas personas que puedan utilizar la PowerShell de windows y no tienen ganas de navegar en el registro - La shell debe estar en modo administrador, por supuesto.

Una vez abierta, no es necesario crear ningún script, vamos copiando y pegando las líneas que están a continuación:

$hexData = "00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00".Split(',') | % { "0x$_"}

$kbLayout = 'HKLM:\System\CurrentControlSet\Control\Keyboard Layout'

New-ItemProperty -Path $kbLayout -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexData)  

O pueden descargarse el script en este link y ejecutarlo, el resultado es el mismo

Cierre

Espero les sirva y descubran la belleza, simplicidad y facilidad con la que más adelante van a confundir el Caps Lock con Ctrl cuando usen una PC ajena a la propia, y se encuentren escribiendo en mayúsculas cuando en realidad querían guardar el documento.

Bonus

Una de mis PCs (La que utiliza AutoHotKey) tiene un script más largo que además de intercambiar esas teclas, tiene unos mapeos extras. En este link lo pueden ver junto a una descripción de qué hace cada cosa