Archivo de la categoría: Tecnología

Oneliner: Para «teclear» un texto copiado gracias a xdotool

Soy muy fan de los scripts oneliner (link a la wikipedia en ingles). Porque es como en las películas cuando un hacker pulsa un botón y se dispara todo tipo cosas por la pantalla, es como la leche condensada.

Hace años conocí también xdotool que es un herramienta para simular ratón y teclado desde terminal, me encanto porque es poderosa.

Pues hace unos días me fallaba el keepass para copiar&pegar un password para usarlo para abrir otro keepass, y como era el típico password invocación a Satán pasaba de estar un  rato escribiendo.

Y para teclear algo del portapapales es tan simple:

sleep 5; xdotool type -- "$(xclip -o -selection clipboard)"

OJO: que creo que con wayland xdotool no funciona.

Como convertir una imagen base64 de muchos megas directamente sin pasar por un editor de texto

Alguna vez pasa que inspeccionando llamadas del navegador ves que te viene una imagen en vez de en binario, te viene como un chorrón de caracteres en base64 y antes lo que hacía era hacer un html tonto con un tag de imagen y copiar y pegar en un vim (porque con otros editores era imposible) y esperar minutos a que eso se llenara de caracteres, era un sufrimiento y me daba pena por el vim.

Pero pensando, «jo si tengo el base64 de la imagen en el portapapeles….con el comando xclip de GNU/Linux seguro que puedo pipearlo para convertirlo directamente»….y efectivamente, se puede hacer y tarda microsegundos.

xclip -selection clipboard -o | base64 -d > imagen.png

Es que xclip es muy grande, es de esos comandos tontos que no recuerdas que están ahí pero que ayudan un montón.

Deshabilitar un touchpad roto o muy sensible en un portátil sin botón especial de deshabilitar touchpad (con GNU/Linux of course)

Querido/a lector/a no se si os ha pasado que algunas veces por curro u ocio tienes un portátil sin botón especial (de esos de FN + ) para deshabilitar el touchpad y te sucede 1 o 2 cosas o ambas a la vez de que el mamón de el:

  • o al mínimo roce con «el jamoncillo del dedo gordo» mientras escribe hace un click o te mueve el ratón
  • o con la vibración de escribir por estar roto hace cosas raras

Hago una pausa para hacer eco de mi descubrimiento, «el jamoncillo del dedo gordo» se llama Eminencia tenar .

Pues no hay cosa que genere mas odio e invoque mas demonios cuando te falla una tecla del teclado o un ratón no hace click algunas veces….bueno quizá cuando te falla un mando de videoconsola y encima estas jugando contra un amigo y le dices «oye he perdido porque me falla el mando» y encima te vacila y no te cree.

Y también hay otro sentimiento peor, el pozo de tristeza e impotencia de cuando te falla un mando de una videoconsola antigua/vieja/retro y sabes que ya no puedes volver a tenerla bien, porque o ya no venden piezas (ojala avance la impresión 3D para evitar eso) o porque los asquerosos de los especuladores te venden un mando roñoso de esa consola vieja a precio de piso en Madrid.

Bueno volviendo al tema no tienes suerte con el portátil y no tiene el botón, pero por contra tienes suerte de ser inteligente y usar GNU/Linux.

Pues hay varias maneras de deshabilitar temporalmente ese cabroncete de touchpad, elige tu camino:

Simulando la pulsación de la tecla fantasma de toggle touchpad

  1. Necesitas la maravillosa herramienta xdotool que simula el teclado y el ratón (ideal para jugadores de mmorpg que quieren dormir pero quieren farmear).
    sudo apt install xdotool
  2. Y después tienes que buscar cual keycode numérico  es la tecla que no tienes de «toggle touchpad», spoiler 199 (creo que casi siempre).
    $ xmodmap -pke | grep -i touch
    
    keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
    
    keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
    
    keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
  3. Simular la pulsación de la tecla, que puede ser con el número o con la constante de X11.
    xdotool key XF86TouchpadToggle

    o

    xdotool key 199

Xorg/X11 (wayland NPI) deshabilitando temporalmente

  1. Primero listar todos input que tienes enganchados al GNU/Linux.
    $ xinput 
    
    ⎡ Virtual core pointer id=2 [master pointer (3)]
    
    ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
    
    ⎜ ↳ MSNB0001:00 04F3:314A Mouse id=11 [slave pointer (2)]
    
    ⎜ ↳ Logitech USB Optical Mouse id=10 [slave pointer (2)]
    
    ⎜ ↳ MSNB0001:00 04F3:314A Touchpad id=12 [slave pointer (2)]
    
    ⎜ ↳ ETPS/2 Elantech Touchpad id=16 [slave pointer (2)]
    
    ⎣ Virtual core keyboard id=3 [master keyboard (2)]
    
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    
    ↳ Video Bus id=6 [slave keyboard (3)]
    
    ↳ Video Bus id=7 [slave keyboard (3)]
    
    ↳ Power Button id=8 [slave keyboard (3)]
    
    ↳ Sleep Button id=9 [slave keyboard (3)]
    
    ↳ Intel HID events id=13 [slave keyboard (3)]
    
    ↳ Intel HID 5 button array id=14 [slave keyboard (3)]
    
    ↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
    
    ↳ MSI WMI hotkeys id=17 [slave keyboard (3)]
    
    ↳ DELL Dell QuietKey Keyboard id=18 [slave keyboard (3)]
    
    ↳ WH-1000XM3 (AVRCP) id=19 [slave keyboard (3)]
  2. Y algunas veces tienes varios touchpad….pues prueba a ver cual es «verdadero», a deshabilitarlo:
    $ xinput disable 12
  3. Y para habilitarlo así:
    $ xinput enable 12

Y así consigues no sufrir cuando tienes un portátil así de cansino.

Algo huele raro en Wayland y el pobre X11 (o su fork X11libre)

Aunque parecía que lo de wayland iba camino de rosas parece que no esta siendo tan positivo el cambio…me gustaría tener tiempo para analizarlo bien bien, porque ya ha pasado en el pasado con el tema de systemd que  provoco el nacimiento de Devuan.

No me da buena espina el ataque y el trato que ha habido el desarrollador Enrico Weigelt:

Además momento he recopilado estos links sobre el tema de Wayland.

 

Mis opiniones sobre la IA (en 2025)

Nos han hecho una entrevista sobre la IA en la cooperativa y como no va ser la voz única la mía (aunque ya estoy viendo pedantería, soy de los que prefiere hablar mal, barriobajero pero que se me entienda aunque haga parecer que tengo menos intelecto…y ya tengo poco…a ser un pedante para estirar bien el cuello). Pues pego por aquí mis respuestas porque no quiero que se pierdan.

¿Qué quiere decir hacer investigación en IA desde una mirada cooperativa y crítica?

Desde nuestro caso como nuestros clientes son entidades judiciales o científicas, no podemos quedarnos en nuestro algoritmo da X porque “lo ha dicho una máquina”, por lo que todo tiene que ser contrastado y científicamente comprobable.

Quizá pensando en otros campos en IA y la discriminación del algoritmo, no deberíamos volver a caer el problema de “lenguaje científico y o lenguaje de leyes” y que en ciudadano medio cuando cierta beca/subvención u otro papeleo legal le sea negado por la acción IA/algoritmo, se le explique en lenguaje humano y que tenga un humano para recurrirlo. Pero que te voy a contar si las páginas públicas de gestiones papeleo legal están tan mal hechas….guiño guiño sobre sobre….

¿Cómo articuláis el conocimiento tecnológico con la justicia social y la perspectiva colectiva?

Estábamos en un punto bonito hasta hace 5 años, porque con “cualquier patata” podías hacer maravillas con GNU/Linux (el que no usaba Linux es porque o no sabía que tiene solución…o porque no quería que tiene menos solución), a parte estaba Arduino y sus clónicos oficiales y no oficiales para la parte física.

Pero otra vez hemos perdido la batalla (aunque la guerra no esta decidida…espero), para la IA se necesita potencia de cálculo (en el entrenamiento, pero es el que decide “cómo va pensar la IA”) y por desgracia esta muy constreñido a plataformas cerradas como Nvidia.

Hay que solucionar eso, mucha gente ya esta peleando (mismamente la gente de Arduino esta buscando maneras baratas de entrenar IAs), pero no se si llegaremos a volver la misma casi-justa pelea que había en la época de las Webs, con un server LAMP cutre de una Pyme haciendo lo mismo o mejor que una gran corporación con su mega y ultra caro centro de datos.

¿Creéis que es posible democratizar los algoritmos? ¿Cómo podemos poner la tecnología al servicio del bien común?

La FSFe (Fundación Software Libre Europa) tiene desde hace años una campaña con el eslogan “¿Dinero Público? ¡Código Público!” . Opino que aunque sea reduccionista en el caso de la IA financiada con dinero público debería ser liberada como software libre, pero no solo he hacer una liberación en condiciones y gestión de la comunidad entorno a ella, no simplemente soltar un zip en una página web.

Para poner la tecnología al servicio del bien común, hay que crear entornos tanto físicos, como económicos, como humanos para llevarlo a cabo, porque para entenderlo la misma frase se puede llevar a “poner la salud al servicio del bien común”….¿Y qué implica eso? ¿Dejar un libro gordo en una biblioteca de “Como curarte las enfermedades”?

No, implica tener hospitales, material médico, tener médicos, tener personal de todo tipo para trabajar en equipo con ellos y mantener hospitales y el material médico.

A principios de los 2000 Extremadura lo hizo excelente con su proyecto innovador a nivel mundial de alfabetización tecnológica que su punta de lanza era LinEx pero era mucho mas, era profesionales en centros de formación, profesionales de todo tipo trabajando en el proyecto.

Quizá imitar eso pero (lo siento por los nacionalismo) centralizado, para no duplicar el esfuerzo.

«Cosas» que le faltan a la app de Netflix

Cómo el community manager de Netflix España se ha limpiado el culo con mis tweets. Da la casualidad que tengo una web y que puedo ponerlos aquí también para que ayudarles a ahorrar en papel higiénico.

Por cierto este fue el hilo de tweet ¿Hola @NetflixES ?…

¿Hola @NetflixES ? ¿Por qué la aplicación de Android no tiene una opción para ocultar las pelis/series que ya hemos visto? Abro hilo de fallos de usabilidad de la aplicación  🧵
¿Por qué no son clickables las cosas como director, actor...para buscar más pelis del mismo director?
¿Por qué no hay un filtro por edad? Para incluso al revés, tienes ganas de ver una peli de terror de las de verdad de +18 con mucha sangre y no una que podría pasar por una peli de sobremesa.
Y el más sincero y valiente. ¿Por qué no pone un mensaje de "no tenemos esa película" cuando buscas por un título exacto? ...en vez de marearte con otras que a peor ni se parecen.
Ya por frikear. ¿Una categoría de pelis/series para escuchar? Porque muchos hacemos las tareas hogareñas antes de finalizar el día y no somos camaleones, y una peli que nos acompañe y la entendamos sin verla, pues sí.
Y hasta ahí mis peticiones/consejos/bugs .

Pero podíais ser un poco buena gente y buscarme el LinkedIn que siempre viene bien algún curro más.

¿De verdad es tan frustante esto del capitalismo? Que le mandas inconvenientes de un producto que te venden (o alquilan) y no son capaces de arreglarlo. ¿Pido una hoja de reclamación de clientes?

Por cierto, he visto que la community manager de Netflix España, ahora es una tal: Laura Soriano .

 

Teclado de portátil se queda pulsada una tecla, solución en Linux amputar la tecla gangrenada

En el portátil del curro que lo que me fastidia es que no es una marca mala, es un Thinkpad (de los e ahora) me esta fallando el teclado no funcionan las teclas flecha abajo y la de suprimir.

Pero el problemón es que al azar se activa la tecla supr sin tocarla ni nada y se queda activa, haciendo destrozos considerables cuando estoy programando.

Así que mientras conseguimos arreglarlo y no físicamente, voy a buscar la solución software, que es muy parecida a amputar una pierna gangrenada.

Lo espectacular de GNU/Linux es que puedes hacer y deshacer cosas que serían impensables de poder hacer en el sistema desoperativo de las ventanas o de la manzana.

Voy a crear una regla para hwdb para deshabilitar la tecla…muerto el perro se acabo la rabia.

Lo primero es encontrar el teclado:

$ cat /proc/bus/input/devices | grep -i keyboard -B2 -A10

I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4 leds 
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

--

I: Bus=0003 Vendor=413c Product=2106 Version=0110
N: Name="DELL Dell QuietKey Keyboard"
P: Phys=usb-0000:04:00.3-2.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.2/1-2.2:1.0/0003:413C:2106.0002/input/input10
U: Uniq=
H: Handlers=sysrq kbd event9 leds 
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

Listando ese fichero sale todo lo que esta enganchado al sistema operativo, pero he filtrado a teclado, me sale el externo y el del portátil.

De ahí tienes que buscar el event<num> que sea tu teclado, esta en el campo Handlers, en mi caso es el event4.

Instalas evetest que vigila los eventos de sistema y te va dar el valor MSC_SCAN de la tecla suprimir o la que quieras matar.

sudo evtest /dev/input/event4

Yo la cace o pesque mientras estaba escribiendo esto:

Event: time 1747226204.341909, -------------- SYN_REPORT ------------
Event: time 1747226204.345745, type 4 (EV_MSC), code 4 (MSC_SCAN), value 0d
Event: time 1747226204.345745, type 1 (EV_KEY), code 13 (KEY_EQUAL), value 0
Event: time 1747226204.345745, -------------- SYN_REPORT ------------
Event: time 1747226204.351976, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.351976, type 1 (EV_KEY), code 111 (KEY_DELETE), value 1
Event: time 1747226204.351976, -------------- SYN_REPORT ------------
Event: time 1747226204.596393, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.596393, type 1 (EV_KEY), code 111 (KEY_DELETE), value 2
Event: time 1747226204.596393, -------------- SYN_REPORT ------------
Event: time 1747226204.626565, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.626565, type 1 (EV_KEY), code 111 (KEY_DELETE), value 2
Event: time 1747226204.626565, -------------- SYN_REPORT ------------

Es d3

También necesitas el MODALIAS que hay varias alternativas para sacarlo.

O usando:

sudo udevadm info /dev/input/eventX
O usando:

sudo udevadm info --attribute-walk --name=/dev/input/event4

Pero a mi no me ha salido el dichoso MODALIAS.

Así que gracias a la doc de Arch (todos los linuxeros independientemente de nuestra distro favorita debemos reconocer el trabajo de la comunidad de Arch) he encontrado otra manera.

$ cat /sys/devices/platform/i8042/serio0/modalias 
serio:ty06pr00id00ex00

El path lo sacas de Sysfs del hacer el cat /proc/bus/input/devices anterior.

Cómo es al azar mi caso, dejo la ventana ahí pacientemetne a ver si pesca o caza la tecla fantasma de suprimir.

Añadir la tecla a una regla de hwdb.

sudo nano /etc/udev/hwdb.d/11-deshabilitar-supr-tecla.hwdb

Y añades las lineas (ojo con el espacio en blanco de KEYBOARD):

evdev:<modalias>
 KEYBOARD_KEY_<MSC_SCAN>=reserved

En mi caso:

evdev:serio:ty06pr00id00ex00
 KEYBOARD_KEY_d3=reserved

Activarlo (puede ser reiniciando) o con el siguiente par de comandos:

sudo systemd-hwdb update
sudo udevadm trigger /dev/input/event4

Y a disfrutar con tu portátil con la tecla gangrenada amputada.

Nota: algunas veces el modalias esta mal por alguna razón que desconozco. Hay otra forma de sacarlo:

sudo udevadm test /sys/class/input/event4 2>&1 | grep modalias
Y saldrá mucha mierda, entre toda veras lineas como:

event4: hwdb modalias key: "input:b0011v0001p0001eAB83-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw"

Pues el modalias es el input con todo el churro y en donde el guion se mete el * (que no se si es para casar todos lo que hay separados por comas).

input:b0011v0001p0001eAB83-*

Extra: También puedes remapear (como en los videojuegos) una tecla pocha por otra, es de la misma manera pero añadiendo una segunda fila (recuerda el espacio en blanco:

KEYBOARD_KEY_4d=z

Donde el 4d es la tecla que quieres usar para la sustitución y el z es la tecla.

DNI Electrónico en GNU/Linux (Linux Mint 22.1)

El DNI electrónico (link a la wikipedia) cuando funciona es una delicia, pero hacerlo funcionar es lo todavía tiene muchos roces, aunque no muchos…y espero que los funcionarios según salgan versiones años siguientes siga al menos funcionando como ahora o mejorando (porque el autofirma…que no tenga opción de zoom y sea purito asqueroso 💩 Java es como frotarte los cojones con un rayador de quesos.

Y como me a tocado formatear el ordenador y volver a ponerle un GNU/Linux, desde hace años uso Debian para uso personal y para profesional Linux Mint. Y en este caso es el portátil del curro pues eso Linux Mint.

Y cierto es que hay muchos tutoriales por internet de muy buena gente bloguera y linuxera explicandolo, pero aquí me lo dejo un poco como autonotas para mi yo del futuro y para el que pase.

¿Para que se usa el DNI electrónico?

  • Para firmar documentos (PDFs del curro y papeles legales que piden los funcionarios).
  • Acceder a las web públicas.

(jo tiene casi 50 años la peli de las 12 pruebas de Asterix y que bien retrata el papeleo legal con los funcionarios)

Instalar DNI Electrónico

Primero a ver si funciona el lector DNI electrónicos USB, raro a estas alturas de la película pero bueno fabricantes gilipollas que venden productos rotos (que no funcione en GNU/Linux es igual a roto) hay.

Yo uso un el comando diff pipeando lsb y en 10 segundos de espera otro lsb, no se son muchos segundos pero como las clavijas USB tienen un estado cuantico mejor tener tiempo.

diff -u <(lsusb) <(sleep 10; lsusb)

Instalar PKCS#11

Descargándolo de la web de la policía

Antiguamente para instalar un paquete deb eran dos pasos usar el dpkg y después resolver las dependencias, pero desde hace años se puede hacer directamente con apt.

$ sudo apt install ./libpkcs11-dnie_1.6.8_amd64.deb --fix-broken

En teoría ya esta instalado y en firefox se vera, si vas a Ajustes y buscas certificados debe aparecer.

Allí tienes que añadir un nuevo dispositivo dando al botón de Cargar, yo le pongo de nombre DNIE y el fichero es:

/usr/lib/libpkcs11-dnie.so

Entonces si le das a Iniciar Sesión, te pedida la clave que metiste en la maquina de las oficinas del DNI en la Policía. Si todo va bien se iniciará la sesión. Si fallas 3 veces, te va tocar volver a la oficina a desbloquear el DNI.

Para probarlo lo mejor ir a la Carpeta Ciudadana y ver si puedes entrar.

Y o te pide la clave o si ya has iniciado sesión saldrá un mensaje de aviso parecido a este.

Firmar documentos

Bueno ahora lo del Java asqueroso  .

Hay que descargarlo desde Autofirma, te va dar un zip que dentro esta el paquete debian. Para instalarlo:

$ sudo apt install ./AutoFirma_1_8_3.deb –fix-broken

Ojo que te tumba el firefox….supongo para enganchar el autofirma al firefox. Y mucho paquete debian pero no pide java11 de dependencias, así que se instala y si clickas en el menú en el icono de Autofirma se queda un rato rascando y se cierra. Así que instalar Autofirma:

$ sudo apt install openjdk-11-jre

Y ya esta debería funcionar:

Eliges Continuar DNIe y pruebas a firmar cualquier PDF.

Y esta.

Spectrum: ¿Por qué RANDOMIZE USR para cargar código máquina? (parte 4)

Realmente el típico:

10 RANDOMIZE USR 666

Es un hack similar al usar la cucaracha en una play1 o el boot cd del reno rudolf de Dreamcast. Porque el Basic de los Spectrum no tenían una instrucción especifica para cambiar de lenguaje o ejecutar código maquina.

Pero lo curioso de el RANDOMIZE USR o el cargador en Basic inicial que tenía esta instrucción. Es que se usaba en todos los juegos comerciales (compilados/escritos en binario o código máquina).

¿Y por qué RANDOMIZE USR? Pues en las news de spectrum (jo que viejo me siento) alguien lo pregunto hace casi veinte años.

La respuesta corta es que es la manera menos peligrosa de ejecutar código maquina porque no cambia registros de CPU ni de memoria.

Y la respuesta larga, es lo mismo pero explicando que RANDOMIZE es la instrucción para iniciar el generador de números aleatorios de los spectrum. Y espera un número que viene en USR pos_mem es la forma de llamar al código maquina en esa posición. El RANDOMIZE espera que algún día le devuelva algún número pero nunca ocurre.

¿Y por qué no se usa directamente USR pos_mem? Pues la respuesta es simple, porque no se puede en el Basic del Spectrum y hay que engañarlo usando otro comando que podría hasta ser PRINT .

Alternativas de software libre y open source a herramientas de código cerrado

Encuentra una alternativa open-source para llevar a cabo tus proyectos. ¿Se me ha pasado alguna? Recomiéndanos tus proyectos y herramientas de software libre y open-source favoritas.

Seguir leyendo Alternativas de software libre y open source a herramientas de código cerrado