¿Vale la pena invertir en un teclado?
6 meses usando un Corne
Soy un fanático de la productividad. Siento que como Científico de Datos tenemos que ser sumamente eficientes, y utilizar todos los recursos posibles que nos den comodidad y rápidez. Sí, también es verdad que soy un hacker frustrado (básicamente porque siento que soy muy poco informático), pero por lo mismo, hace unos años es que estoy invirtiendo mucho tiempo en ser mejor computín. Y entre aprender mucho más de todo lo que no sé de informática, también dedico mucho tiempo a escribir rápido en el teclado. De hecho practico regularmente en plataformas como MonkeyType y estoy rondando los 80-100 wpm (palabras por minutos en inglés: words per minute). El tema es que un poco inspirado por Hola Mundo, pero por sobre todo por chris@machine y ThePrimeagen es que siento que uno tiene que trabajar primordialmente con el teclado. Esto por dos cosas:
Cambié mi mouse vertical, porque en verdad me estaba dando tendinitis por un movimiento muy antinatural que estaba haciendo al bajar. Ahora uso uno de trackball, pero igual uno pierde tiempo moviendo la mano al mouse, aunque no quiera notarlo.
Cambié mi teclado y aprendí a hacer touch typing para escribir más rápido, sin mirar el teclado y con todos los dedos. Realmente he notado una mejora muy notoria en esto y si bien es un cambio a mediano-largo plazo, el forzarme a escribir sin mirar y con la técnica correcta me ha dado muchos beneficios.
Un tercer punto y que es algo completamente nuevo, es que decidí cambiarme a Neovim. Esto porque creo que es la única manera de dejar de utilizar el mouse, y poder depender sólo del teclado. Lamentablemente este cambio ha sido el más costoso, en términos de curva de aprendizaje y de configurar el
maldito editor
. No creo que sea algo para todos, definitivamente no lo es. Pero me siento orgulloso de haberme atrevido y demasiado satisfecho con mi entorno de programación.
Más acerca de cómo ha sido el cambio a Neovim pronto!!
Ahí es cuando entra el Corne. No quería el Corne la verdad. Porque se está volviendo too mainstream
y como que piensan que es el único teclado que hay. Yo en verdad quería el Sofle
(pero sólo por ser rebelde), porque ví a este tipo decir que el Corne era demasiado difícil de aprender porque tenía muy pocas teclas (Spoiler, cuesta unas dos semanas, pero no es tan difícil como dice).
Pero cuando ví que Zone Keyboards tenía esta versión con carcasa de madera, la verdad es que no me pude resistir. Aunque yo lo pillé en oferta a un precio muchísimo menor que el que indican ahora.
Cuando compré el teclado tenía la intención trabajar un poco con VIM, pero sin VIM. Porque, como he dicho varias veces, no había encontrado una buena solución para el REPL en Python, y porque realmente no me gustaba tener que presionar la i
cada vez que quiero comenzar a escribir. Hoy la historia es distinta y todas mis molestias eran sólo un tema de costumbre.
Es verdad, se pueden usar los key bindings de VIM en VSCode, pero ¿qué pasa con el resto?
Yo tenía anteriormente el GK68XS que es un buen teclado, me gustaba harto, pero con varias limitaciones que probablemente a nadie le afectan excepto a mí. Primero lo bueno:
- Compacto, 65% con teclas dedicadas a los números. Lejos lo que más me ha costado acostumbrarme en el Corne.
- Bluetooth.
- Switches Cherry MX Rojos (de excelente calidad).
- Programable.
- Macros.
- Tiene triple barra espaciadora que permitía usar teclas modificadores con los pulgares.
Ahora los contra:
- Cherry MX Rojos. Son demasiado sensibles, probablemente los Café serían mejor, con mis switches actuales me equivocó infinitamente menos debido a que requieren más intencionalidad al tipear. Escribo menos sin querer queriendo.
- Staggered. Si se fijan tiene las columnas como en pendiente negativa, lo cuál si haces touch typing, implicará una rotación de la muñeca izquierda horrible. ¡Y duele!
- Flechas a la derecha, lo cual implica un retraso horrible cada vez que quieres usarlas. Además de perder la posición de home row (Tener tus dedos descansando en
A
,S
,D
,F
yJ
,K
,L
,;
). FN
no modificable. Fijo y a la derecha, lo cuál no me gustaba.- Sólo una función por tecla.
No es terrible, de verdad que no. Ese teclado ahora es de mi hermano y está feliz usándolo.
¿Entonces qué tiene de distinto cualquier teclado mecánico basado en QMK (ojo, cualquiera sirve, no sólo el Corne)?
Yo creo que es la programabilidad (ni siquiera sé si eso es una palabra). Pero me refiero a que realmente se puede definir todo. Ahora, ¿es perfecto? No, no lo es. Y si uno quiere realmente el teclado perfecto hay que invertir mucho más dinero (principalmente en hardware, los pro-micro que son los controladores que tengo no tienen tanta capacidad, pero cumplen). Al menos a mí me gusta.
Lo bueno
- Que es separado, lo cual permite que la espalda se relaje mucho más. Esto es verdad. Estar con los brazos hacia adentro genera tensión en los trapecios. Tener los brazos a la altura del hombro realmente ayuda.
- Columnar: Las teclas están en columnas, por ejemplo, la
a
está inmediatamente abajo de laq
y no abajo a la derecha. Ya tengo absolutamente cero dolor de muñecas, incluso usando una distribución tan nefasta como QWERTY. Y esto no me tomó tanto tiempo en acostumbrarme como decían. - Cada tecla puede tener demasiadas funcionalidades al mismo tiempo (lo cual es casi agobiante).
- Tiene pantallitas leds con indicadores y buenas luces RGB de fondo (aunque yo las tengo apagadas la mayor parte del tiempo).
- Las teclas de Pulgar son lo máximo. Y realmente permiten que uno no tenga que abandonar la posición de home row nunca. Además tienes 6 por lo tanto es harta funcionalidad extra.
Lo malo
- Es cableado. Hay versiones inalámbricas, pero son DIY y no sé soldar.
- Tiene una pequeña latencia. Probablemente imperceptible para muchos, pero yo la siento cuando estamos cerca de los 80-90 wpm (Update: Es posible que esto sea sólo una percepción mía. He probado con el terminal Kitty que es mucho más fluido y una mejor calidad de cable y ya casi no siento desfase).
- Los switches Gateron café son increíbles, pero un poco toscos. Siento que hay que lubricarlos, aunque me da una lata inmensa hacerlo. Pero a pesar de so, realmente me permite escribir equivocándome muy poco.
- El sonido no es tan agradable como pensé que sería. No me molesta, pero me gustaba mucho más el de mi teclado anterior. He visto algunos hacks, pero me da lata desarmar el teclado para ponerle goma eva adentro.
- Algunas funcionalidades súper cool lo hacen un teclado lento. Afortunadamente yo encontré mi configuración ideal sin tener que usar cosas como los combos, o los tap dance, que realmente traban el teclado (de manera más perceptible).
- Me es casi imposible teclear en un teclado Staggered nuevamente. No porque se me haya olvidado, sino porque no le achunto a las teclas. Cuando tengo que usar un teclado que no es el mío, tengo que recurrir al clásico escribir sólo con los índices y mirando, pero puede que sea yo el ñurdo.
Los combos se utilizan normalmente para hacer lo que se llama los Home Row Modifiers. Por ejemplo si presionas la a
es una a
, pero si la mantienes es un Alt
. Era excelente la idea, pero presionar significa que el teclado literalmente tiene que esperar 200ms para detectar si es un tap o un hold y escribiendo rápido eso se nota.
Lo mismo los tap dance. Esto es cuando presionas una tecla hace algo, pero si lo presionas dos rápido hace otra cosa. Como yo uso principalmente una distribución en inglés, quería que un doble tap de la n
sea una ñ
. Pero nuevamente el delay para detectar si es un tap o un doble tap.
Personalización
Bueno una de las gracias es que era completamente personalizado. Y la verdad es que yo elegí desde el color de los keycaps, hasta los simbolitos:
- En el Mayus, está básicamente mi logo, que cree hace ya varios años increíblemente con una librería en R que se llamaba algo como Hex, o algo así.
Ctrl
yAlt
son los símbolos de Mac, que encuentro harto más bonitos que simplemente colocarle el nombre.- Abajo tengo el logo de Zone Keyboards, un poco para agradecer y hacer propaganda al teclado, que está bonito. Y tengo el logo de
PopOS
, mi Sistema Operativo. - A la derecha tengo la patita de la Kira, mi perrita y las otras son teclas estándar.
- A la derecha decidí colocar las flechas estilo VIM. Esto porque llevo mucho tiempo intentando aprendérmelas, y creo que por fín puedo decir que me acostumbré, en especial la flecha izquierda es como difícil acordarse.
Bueno, a lo que nos interesa, ¿cómo lo tengo configurado?. Esto fue realmente una lata y estuve como 3+ semanas moviéndolo todo el día, todos los días. Pero realmente siento que mi distribución está como quiero. Tengo en total 4 capas las cuales voy a describir a continuación.
Capa Principal
La capa principal la verdad es que es muy estándar. Es una distribución QWERTY con varias moficicaciones. Por un tema de orden me referiré a esta capa como referencia para que se entienda la posición de otras funcionalidades. Además me referiré a las teclas de Pulgar como LT(idx)
y RT(idx)
donde idx=1,2,3
siendo el 1
la tecla más interior y 3
la más exterior de cada mano (L: Izquierda, R: Derecha).
La filosofía detrás es poder tener todos mis Mods (Ctrl
, Shift
y Alt
) en mi mano izquierda, cosa de combinar atajos con el uso del Mouse en caso de ser necesario. Además la posición debe ser lo más ergonómica posible.
- La tecla
' "
sirve como mi´
. Esto porque utilizo una distribución llamada US International Keyboard with dead keys. Normalmente si yo quiero el'
necesito presionar la tecla dos veces, lo cual encuentro lento, por lo que lo remapee comoRAlt + '
lo que entrega directamente el´
. - No uso la tecla
/ ?
y en vez de eso la cambio por- _
, ya que el guión bajo se utiliza muchísimo más al momento de programar y quiero tenerla muy a la mano. - Una cosa que a mucho les parece extraño es que uso el espacio en
RT(2)
y no enRT(1)
. No sé, lo encuentro una posición mucho más natural y que mantiene mi mano más relajada. Se lo copié a un chico indio de Youtube que no recuerdo su nombre como para darle el crédito. RT(3)
tiene doble funcionalidad. Un tap esEnter
y un hold es la teclaSuper
,GUI
oWindows
. En el caso de Pop esto permite lanzar el Launcher. Como dije, esto es una funcionalidad que da cierto Lag (debo esperar 1 segundo para activarlo), pero dado que el Hold lo utilizo en contadas ocasiones no me afecta como sí lo haría en una letra o un símbolo.- La tecla
Esc
la hago como un doble Tap sobre elCAPS LOCK
. Todos mis modificadores son
One Shot Keys
. Es decir si hago tap deja el modificador presionado hasta la siguiente tecla. Por lo tanto, si quiero hacer Copy hagoCtrl C
secuencial, y noCtrl + C
(dejándo ambos presionados), lo cual es particularmente útil para escribir mayúsculas rápidas y no escribir dos mayúsculas por error. Lo bueno de estas teclas es que si por costumbre las dejo en Hold igual funciona. Tener como One Shots me permite usar acordes por ejemploCtrl K A
es un acorde de Jupyter Notebook que me permite seleccionar todo lo que esté entre paréntesis. OCtrl R K
lo uso para reiniciar kernel yCtrl R A
para correr todo (Run All). Súper útil.Una cosa bien chora que tengo configurado es que doble
Shift
esCaps Word
. Esta funcionalidad permite colocar en mayúsculas y transformar-
en_
hasta que presione un espacio. Lo cual permite por ejemplo crear constantes sin tener que activar y desactivar elCAPS LOCK
.- Además todas mis capas OSL son
One Shot Layers
. Si la presiono una vez cambia a la capa indicada sólo para la siguiente tecla, si la dejo presionada quedo en esa capa hasta que suelte el OSL. Por ejemplo si quiero eliminar sólo un caracter hagoOSL(0) Del
y si quiero borrar tres hagoOSL(0) + (Del Del Del)
. Ahora si quiero quedarme en esa capa hago un doble tap aOSL(0)
o cualquier otra capa y me quedo ahí hasta desactivarla (con la misma tecla que la activé). Esto lo uso normalmente con la capa de navegación o la numérica cuando tengo que sólo recorrer un archivo o cuando tengo que escribir sólo operaciones aritméticas respectivamente (obviamente cuando no estoy en Neovim).
Otra ventaja de usar One Shot Layers es que me permite combinaciones muy rápidas sin equivocarme, como se garantiza que la siguiente tecla será modificado por el modificador o la capa, cualquier desincronización en mis dedos se perdona.
Quizás la funcionalidad más potente del teclado es la Leader Key
. la cual se ubica donde en RT(1) de la capa 2. La Leader Key
me permite generar comandos con ciertas combinaciones de teclas de hasta 5 teclas. Esta es la parte que quizás más modifico del teclado, ya que a medida que voy encontrando cosas interesantes las agrego. Para usar las combinaciones debo presionar RT(1) 2 veces y luego puedo hacer la combinación que me interesa.
t
me abre/cierra el terminal de VSCode.p
me permite abrir el explorador de VSCode y navegarlo con flechas.py
me permite abrir unipython
y ejecutar inmediatemente%load_ext autoreload
y%autoreload 2
para inmediatemente reconocer nuevos módulos.pd
me escribeimport pandas as pd
.np
me escribeimport numpy as np
.plt
me escribeimport matplotlib.pyplot as plt
.dd
Selecciona todo y copia.
Y tengo algunas combinaciones secretas con claves y cosas que me da lata recordar, pero que no compartiré acá 🤗.
Capa de Navegación (Capa 0)
Esta es la capa que utilizo para moverme. La activo con OSL(0)
. Está inspirada en las teclas de navegación de VIM y algunas cosillas extras. Esta es probablemente la capa que más utilizo. Incluso más que las letras (Esto porque uso Vimium para navegar en Chrome, es decir, puedo usar atajos de VIM para moverme en el navegador).
- Esta capa la activo con la tecla que normalmente uno tiene el
CAPS LOCK
. Un tap me permite que la siguiente tecla pertenezca a esta capa, por ejemploOSL(0) L
, es equivalente a la flecha a la derecha, para salir de paréntesis, comillas, etc. (En VSCode puedo usar directamenteTab
gracias a la extensión TabOut, pero en otros ambientes no puedo). Si hago doble tap bloqueo esta capa para quedarme navegando sin tener que dejar presionadoOSL(0)
. - Donde normalmente va la
y
y lao
tengoHome
yEnd
respectivamente. Son teclas que uso muchísimo para moverme rápido en una línea. Lau
y lai
son elPageDown
yPageUp
respectivamente. - Lo que más ocupo es dejar presionado
Shift
más las flechas que sería equivalente al visual mode de VIM y si presionoControl
y hacia los lados salto por palabras palabras, mientras que hacia arriba/abajo hago scroll. Me permite moverme sin casi necesitar el mouse. Esto lo hago sólo cuando no tengo disponible los atajos de VIM, por ejemplo, en el navegador, o en Github. - Acá la tecla
- _
está mapeado a?
. Y además' "
está realmente mapeado a'
(la comilla simple). - Las teclas
n
ym
me sirven como*
y/
respectivamente. - Finalmente
RT(1)
sirve como miDelete
. - Además en mi mano izquierda tengo controles de mis servicios multimedia: La
f
es para Play/Pause. Las
para retroceder y lad
para adelantar. Además el equivalente a lar
es para subir volumen y lav
para bajar volumen. - La tecla equivalente a la
g
la tengo mapeada a un espacio, en caso que tenga la mano derecha en el Mouse y rápidamente necesite agregar un espacio.
Capa Numérica (Capa 1)
Esta es por lejos la capa que más me ha costado usar. Acá utilizo OSL(1)
como tap para colocar un sólo número, y dejo presionado en el caso de algún número de más de un caracter. Luego de mucho probar varias estrategias me quedé con una configuración en dos filas: del 1
al 5
y del 6
al 0
. Al principio me costó mucho esto, pero fue la única manera de dejar de presionado LT(1)
mientras usaba dedos de otra mano, que al menos a mí me alivió mucho el dolor que tenía.
La filosofía acá fue: “Si es que tengo que dejar una tecla presionada para hacer una combinación, que presione con una y genere la combinación con la otra”.
Además la tecla n
me sirve como mi ñ
. El botón de tildes, acá me sirve como mi comilla simple. Y acá sí utilizo la tecla al lado del .
como mi ?
. Si bien estas teclas están repetidas, la mayoría de las veces las uso desde esta capa.
Capa de Símbolos (Capa 2)
Esta capa está exclusivamente dedicada a todos los símbolos.
- Mi tecla
h
corresponde a=
y mi teclaj
corresponde a el símbolo+
. Son los únicos en mi mano derecha, porque no tenía más espacio y por alguna razón me acomoda presionarRT(1)
y estas teclas. - En la parte izquierda, la fila superior son todos los símbolos asociados a números hasta el 5, excepto el
@
que cambie por"
. Estuve un tiempo obligado a usar un teclado en español y me gustó mucho la posición de las comillas ahí, por lo que las dejé. El resto normalmente lo tengo en otro lugar. - El Home Row izquierdo es la apertura de paréntesis
(
,[
&
,{
y\
respectivamente. Esto porque{
se utiliza como desplazamiento en VIM y me acomodó mucho tenerlo directamente bajo mi índice. - En la fila inferior están sus opuestos:
]
,]
|
,}
y@
. - En las teclas
LT(2)
yLT(1)
están los símbolos de`
y~
respectivamente.
Más simbología que eso creo que no tengo ni necesito.
Capa de Configuración
Solía tener una capa de configuración, que si ven algún tutorial todos suelen ponerla en una capa presionando LT(1)
y RT(1)
. Yo la verdad, encontré que no me aportaba y rara vez la ocupaba. Por lo tanto, decidí dejar de agregarla, lo cual genera un teclado con menos memoria ocupada y más rapidito.
Además, como se puede ver, no tengo teclas de función. No las ocupo. Y en verdad no las he echado de menos. Eventualmente si las necesito las iré agregando.
Debo decir que en verdad llegar a esta configuración me costó bastante y está inspirada en miles de configuraciones que ví. Si bien existen configuraciones numéricas que todavía me trabo, me siento súper cómodo como está. Lo mismo con los símbolos, es algo que ya tengo sumamente integrado y que hago rápido en forma de acorde. Por ejemplo RT(1) A
permite abrir paréntesis rápidamente y no es necesario que deje nada presionado
Espero que mi configuración les pueda servir de inspiración para la suya (si es que tienen) o que les anime a probar algo parecido. Lo bueno es que no hay nadie mejor que yo para escribir en mi teclado. Lo malo, nadie más puede usarlo. Pero bueno, no es mi intención que alguien más lo use.
Nos vemos a la otra.