datacubeR

¿Vale la pena invertir en un teclado?

6 meses usando un Corne

Mi viaje para comenzar a comenzar más rápido y sin dolor.

picture of me picture of me

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 y J, 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 la q 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:

picture of me

  • 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 y Alt 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.

picture of me

  • 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 como RAlt + ' 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 en RT(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 es Enter y un hold es la tecla Super, GUI o Windows. 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 el CAPS 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 hago Ctrl C secuencial, y no Ctrl + 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 ejemplo Ctrl K A es un acorde de Jupyter Notebook que me permite seleccionar todo lo que esté entre paréntesis. O Ctrl R K lo uso para reiniciar kernel y Ctrl R A para correr todo (Run All). Súper útil.

  • Una cosa bien chora que tengo configurado es que doble Shift es Caps 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 el CAPS 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 hago OSL(0) Del y si quiero borrar tres hago OSL(0) + (Del Del Del). Ahora si quiero quedarme en esa capa hago un doble tap a OSL(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 un ipython y ejecutar inmediatemente %load_ext autoreload y %autoreload 2 para inmediatemente reconocer nuevos módulos.
  • pd me escribe import pandas as pd.
  • np me escribe import numpy as np.
  • plt me escribe import 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).

picture of me

  • 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 ejemplo OSL(0) L, es equivalente a la flecha a la derecha, para salir de paréntesis, comillas, etc. (En VSCode puedo usar directamente Tab 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 presionado OSL(0).
  • Donde normalmente va la y y la o tengo Home y End respectivamente. Son teclas que uso muchísimo para moverme rápido en una línea. La u y la i son el PageDown y PageUp 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 presiono Control 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 y m me sirven como * y / respectivamente.
  • Finalmente RT(1) sirve como mi Delete.
  • Además en mi mano izquierda tengo controles de mis servicios multimedia: La f es para Play/Pause. La s para retroceder y la d para adelantar. Además el equivalente a la r es para subir volumen y la v 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”.

picture of me

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.

picture of me

  • Mi tecla h corresponde a = y mi tecla j 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 presionar RT(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) y LT(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.

Alfonso

Go to top