Dictat que sobreviu al terminal
Dictat que no s’enganxa, sense avís, en terminals, SSH, tmux i teclats no QWERTY. Per què falla el porta-retalls i què fa el mode de tecleig.
Els desenvolupadors que proven eines de dictat topen sovint amb una fallada de forma molt concreta. L'eina funciona de meravella a la demostració. Funciona a Notes, a Slack, al navegador. Després dones el focus a un terminal, dictes una frase i o bé no apareix res, o bé apareix una cosa que no és el que has dit, o bé n'apareix la meitat i l'altra meitat ara és misteriosament al teu porta-retalls. De vegades funciona en local i mor en el moment que et connectes per SSH a una màquina.
El patró és prou constant com perquè no cregui que sigui un error d'un producte concret. És una conseqüència de com insereix text tota la categoria, i falla precisament als llocs on viu un desenvolupador.
Això importa més ara que fa dos anys. Si dirigeixes el Claude Code amb la veu —el flux de treball que vaig descriure a Com dirigir el Claude Code amb la veu—, aleshores el terminal no és una app entre moltes. És l'app. És on cauen els teus prompts, on els teus agents esperen redireccions, on tota la història dels carrils paral·lels funciona o no. Una eina de dictat inestable als terminals és, per a un vibe coder, inestable en la seva única feina.
Per què l'enganxat s'espatlla precisament allà on viuen els desenvolupadors?
Aquesta és la mecànica al nivell de la categoria. La majoria d'eines de dictat insereixen text de la mateixa manera: posen la frase transcrita al porta-retalls del sistema i després sintetitzen una pulsació de Cmd+V a l'app amb focus. És un valor per defecte sensat: enganxar és instantani, funciona a gairebé tots els camps de text gràfics i no ha calgut pràcticament cap enginyeria app per app.
El problema és tot allò de què depèn discretament aquesta suposició.
Depèn que l'app amb focus interpreti Cmd+V com a «enganxa». Els terminals sovint no ho fan: molts fan servir Cmd+V per a una altra cosa o per a res, el tmux i el vim tenen les seves pròpies idees sobre què vol dir enganxar, i una sessió d'SSH remota pot interpretar una ràfega de text enganxat de maneres que la màquina local no pot predir. Enganxat entre claudàtors, mode de còpia, mode d'inserció contra mode normal: el món del terminal és ple d'estats on un enganxat sintètic cau malament o no cau enlloc.
Depèn que el porta-retalls estigui disponible i sense vigilància. Els gestors de porta-retalls el reescriuen. Els gestors de contrasenyes el netegen o el protegeixen deliberadament —una funció de seguretat que converteix «enganxa el meu dictat» en «no enganxis res», en silenci—. I fins i tot quan tot funciona, l'eina acaba de sobreescriure el que tenies copiat. L'SHA del commit que portaves d'una finestra a l'altra ha desaparegut, substituït per la teva pròpia frase. Per a algú que fa malabars amb diversos carrils, això no és una molèstia menor: el porta-retalls estava fent una feina.
I depèn —aquest és el punt que sorprèn la gent— de la teva disposició de teclat. Quan una eina recorre a simular pulsacions, la manera ingènua és enviar codis de tecla: les posicions físiques de les tecles. Els codis de tecla es tradueixen a caràcters a través de la teva disposició. En QWERTY, el codi de la «V» produeix una V. En Dvorak, aquesta mateixa posició física és una altra lletra. Així doncs, una eina que simula codis físics en una disposició Dvorak, AZERTY o Colemak produeix text que sembla haver passat per un xifratge de substitució. Els usuaris reporten galimaties i suposen que ha fallat el reconeixement de veu. No ha fallat: la parla era perfecta, la inserció l'ha desordenada.
Res d'això no és mala fe ni mandra de ningú. L'enganxat des del porta-retalls és el valor per defecte correcte per al 90 % dels casos. Simplement, els desenvolupadors passen el dia dins de l'altre 10 %.
Què vol dir de debò «teclejar-ho en comptes d'enganxar-ho»
El Keebye té un ajust anomenat insert_mode amb dos valors: paste, que és el que ve per defecte, i type.
El mode de tecleig no enganxa. A macOS fa servir CGEventKeyboardSetUnicodeString, una API que adjunta el text Unicode real a un esdeveniment de tecla sintètic. El caràcter viatja dins del mateix esdeveniment; no es consulta a través de la teva disposició de teclat. Això el fa independent de la disposició per construcció: Dvorak, AZERTY, Colemak, escriguis com escriguis, el text que arriba és el text que s'ha transcrit, perquè mai no hi ha hagut cap traducció de codi físic a caràcter que pogués sortir malament.
La segona propietat del mode de tecleig és la que importa a qui viu al terminal: no toca mai el porta-retalls. Zero operacions de porta-retalls en aquesta via de codi. El contingut del teu porta-retalls continua sent teu: l'SHA sobreviu, el gestor de contrasenyes no té res contra què protegir-se, el gestor de porta-retalls no té res a registrar.
I com que els terminals i les sessions remotes es poden ofegar amb text que arriba més ràpid del que escriu cap humà, el mode de tecleig es marca el ritme deliberadament: el text entra en fragments de 16 caràcters amb 4 mil·lisegons de pausa entre fragments. Prou ràpid perquè una frase caigui en molt menys d'un segon; prou mesurat perquè un panell de tmux per SSH ho rebi com a pulsacions que pot seguir, i no com un bloc que ha d'interpretar.
El mode d'enganxat hi continua sent, i continua sent el valor per defecte, perquè és genuïnament més ràpid per a blocs grans de text a apps gràfiques normals: un missatge de Slack de tres paràgrafs arriba com un sol enganxat en comptes d'un degoteig de fragments. Fins i tot el mode d'enganxat ha après la lliçó de les disposicions, però: el Cmd+V sintètic fa servir el codi físic de la tecla V, o sigui que enganxar en si no s'espatlla en disposicions no QWERTY com sí que ho poden fer els mètodes basats en consultar caràcters.
La configuració pràctica per a la feina amb agents és senzilla: posa insert_mode a type, dona el focus al terminal on s'executa el Claude Code, mantén premuda la tecla, digues la redirecció i deixa anar. El prompt arriba com hi arribarien les pulsacions, perquè, pel que fa al terminal, això és el que són. Tens una versió pas a pas d'aquesta configuració, amb els detalls d'SSH i tmux inclosos, a la guia de dictat al terminal.
Els límits sincers
El mode de tecleig és més lent que l'enganxat per a textos llargs: això és aritmètica, no un defecte. Les pulsacions fragmentades amb pauses de ritme triguen més que un únic esdeveniment d'enganxat, i si dictes uns quants paràgrafs dins d'un document, el mode d'enganxat et semblarà més àgil. Precisament per això l'enganxat continua sent el valor per defecte i el mode de tecleig és una cosa que actives a la configuració; el mode correcte depèn d'on va el teu text.
Algunes aplicacions limiten la freqüència de l'entrada sintètica o la filtren, normalment per motius de seguretat, i cap estratègia d'inserció no se n'escapa del tot: una app que rebutja esdeveniments sintètics els rebutja de qualsevol eina de dictat.
I per ser clars sobre què afirma i què no afirma aquest article: la queixa que l'enganxat s'espatlla als terminals és un patró de tota la categoria del dictat, no pas un defecte exclusiu de cap competidor. Altres eines tenen les seves pròpies respostes i els seus propis punts forts; hem escrit comparacions sinceres a Keebye vs Superwhisper i Keebye vs Wispr Flow, incloent-hi on cadascuna et pot encaixar millor.
La inserció és la meitat poc lluïda del dictat
El reconeixement de veu s'endú tota l'atenció: noms de models, afirmacions de precisió, recomptes de llengües. Però una eina de dictat té dues feines: sentir-te bé i, després, fer arribar el text on és el teu cursor sense perdre'l ni malmetre'l. La segona feina sembla trivial i és on la categoria falla discretament els desenvolupadors, perquè la segona feina és fàcil al TextEdit i difícil en un panell de tmux d'una màquina remota sota una disposició Dvorak.
Si els teus prompts cauen en terminals —i si dirigeixes agents de programació, hi cauen—, la inserció no és una nota al peu. És la diferència entre una eina que ensenyes i una eina que fas servir. Els modes de fallada relacionats tenen el mateix regust, per cert: que l'arrencada en fred del micròfon es mengi la primera paraula d'un dictat és una altra queixa de tota la categoria amb una explicació mecànica, i la vam desenvolupar a per què les apps de dictat es mengen la teva primera paraula.
El Keebye és en accés anticipat per a macOS. Si el teu dictat s'ha esfumat alguna vegada entre la teva boca i un terminal, comença la prova gratuïta aquí sota, activa el mode de tecleig i torna a provar el mateix prompt. L'SHA que has copiat es queda al porta-retalls mentre les paraules arriben com a Unicode teclejat.
Prova la teva via de terminal més difícil
Comença la prova gratuïta, activa el mode de tecleig i prova el prompt d’SSH o de tmux que sempre trenca l’enganxat.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Continua llegint
Dictar prompts a agents paral·lels, carril a carril
Portar dos o tres agents de programació alhora converteix el prompt en el coll d’ampolla. Un flux de veu per alimentar carrils paral·lels sense sortir del que.
Claude Code amb la veu: construir en carrils paral·lels
Amb agents de codi IA, teclejar és el coll d’ampolla. Un flux pràctic per dictar prompts, revisions i canvis de rumb en carrils paral·lels a macOS.
Digues el que he dit: dictat sense la reescriptura de la IA
El dictat amb IA reescriu el que dius: perd matisos i capgira sentits. Per què el poliment amb LLM et parafraseja i Keebye es manté literal.