miércoles, 24 de junio de 2020

Detectar teclas Av Pág y Re Pág en Free Pascal



Dentro de las mejoras que tengo planeadas para mis juguetes laborales estaba la visualización de resultados en múltiples páginas, por lo cual, para navegar entre las páginas disponibles quise usar las teclas Av Pág y Re Pág, obviamente al usar var := ReadKey detectaba la pulsación, pero no la tecla por ser tecla especial, investigando un poco descubrí que es porque, al ser especial, detecta dos códigos, el primero es 0 (cero) y en el segundo viene el identificador, gracias al programa de ejemplo pude detectar esa y otras teclas más:

program detectachar;
uses
crt;
var a : char;
begin
repeat
a := readkey;
if a=#0 then
begin
a := readkey;
writeln('Tecla especial= ', ord(a));
end
else
writeln('Tecla normal= ', ord(a));
until a=#27;
end.

Básicamente, para saber qué tecla especial es hay que suar dos veces readkey, el primero para validar si es tecla normal (diferente de 0 (cero)) y si es tecla especial (devuelve 0 (cero)) con el segundo readkey obtener la tecla especial pulsada.

Así podré detectar si se pulsa Av Pág, Re Pág o las flechas de dirección del teclado (arriba, abajo, izquierda, derecha).

viernes, 19 de junio de 2020

Error drm:drm_atomic_helper_wait_for_flip_done Debian 10



En mi laptop Dell Latitude D630, al instalar Debian 10, me aparecen estos mensajes al iniciar:
drm_atomic_helper_wait_for_flip_done

Googleando un poco, la solución está en editar el grub con:
sudo nano /etc/default/grub

Y en la línea que dice:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Modificar para que quede así:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=SVIDEO-1:d"

Guardar, cerrar y generar de nuevo el menú de grub con:
sudo update-grub

Reiniciar, y listo.

WiFi bcm4311 Debian 10

Configurar conector MySQL/MariaDB en c para cygwin en Windows

Hace días, en mis pocos tiempos libres, se me ocurrió tener un entorno de programación en c... No sé el porqué, siendo que principalmente uso Windows, en mi trabajo he codificado mis aplicaciones en Free Pascal, mi sistema administrativo lo hice en PHP, he jugueteado un poco con Visual Basic para mis aplicaciones gráficas de Windows, así que no hay muchas razones para cambiar a c, no c++ ni c#, el simple, clásico, odiado y amado c a secas...



En fin, comencé a usar mi Laptop de personal, en ella uso Windows 10, cmder, cygwin y MariaDB. El primer problema que me encontré fue que, como usualmente uso Free Pascal, al instalar el entorno instala su propia versión de gcc, la cual se carga antes que el gcc de cygwin, me causó muchos dolores de cabeza darme cuenta de ese detalle, de momento lo solucioné simplemente renombrando el gcc.exe a gccR.exe de la carpeta de instalación de Free Pascal, hasta el momento no he tenido problemas por hacer eso, quién sabe más adelante.



Como uso solo modo texto, he querido usar la librería ncurses, ya la usé en Python, así que quise usarla también usarla en c, para ello instalé libncurses-devel desde el instalador de cygwin, simple y a la hora de compilar uso la opción -lncurses



Tuve bastantes problemas para encontrar la solución a la hora de compilar con mysql en c, pero tan simple que era instalar desde el instalador de cygwin el paquete libmariadb-devel y ya! Bueno, además,hay que cambiar el #include <mysql.h> por #include <mysql/mysql.h>





martes, 16 de junio de 2020

Conectar a MariaDB/MySQL desde c en Debian 10

Aclaro, antes de seguir leyendo este post, no esperes una gran y detallada explicación, es un post tipo "Lo hice y me funcionó... no me preguntes porqué"
sudo apt-get install default-libmysqlclient-dev libncurses-dev


lunes, 15 de junio de 2020

Customizando mi Debian en mi Mini Laptop



Lo primero fue deshabilitar la suspención
su
systemctl mask sleep.target suspend.target hibernate.target

Para mi computadora, activo el inicio de sesión automático, para evitar
equivocaciones con el ingreso del teclado:
nano /etc/systemd/logind.conf

Descomentar:
#NAutoVTs=6 

Modificar para que quede:
NAutoVTs=1

Guardar y cerrar

Ejecutar:
systemctl edit getty@tty1

Y escribir en el fichero que se crea:
[Service]
ExecStart=-/sbin/agetty --autologin user_name --noclear %I 38400 linux
ExecStart=

Guardar y cerrar

Ejecutar:
systemctl enable getty@tty1.service

Y reinciar con:
systemctl reboot

En seguida configurar el teclado
su
apt-get install console-data

Para poder usar el kbdrate tuve que hacer los siguientes cambios:
chgrp adm /usr/sbin/kbdrate /usr/sbin/reboot /usr/sbin/poweroff (Nota: adm ya estaba creado y mi usuario ya era parte de ese grupo)
ln -s /usr/sbin/kbdrate /usr/bin/kbdrate
ln -s /usr/sbin/reboot /usr/bin/reboot
ln -s /usr/sbin/poweroff /usr/bin/poweroff
chmod u+s,o-rwx /sbin/kbdrate /usr/bin/reboot /usr/bin/poweroff

Editar el .bashrc
nano .bashrc

Añadir al final:
kbdrate -r 20 -d 500 -s
setleds -num
setleds +num

Instalar sudo
apt-get install sudo

Editar el listado de los usuarios de sudo
nano /etc/sudoers

Y añadir mi usuario al listado
user    ALL=(ALL:ALL) ALL

Ampliar fuentes
nano /etc/apt/sources.list

Agregar contrib non-free:
deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free

Guardar y actualizar con 
apt-get update
apt-get upgrade

Instalar drivers wifi
apt-get install firmware-ralink
modprobe rt2800pci
ifconfig wls33 up

Instalar WiCd
apt-get install wicd-curses

Instalar la base del entorno gráfico:

sudo apt-get install openbox xinit xterm menu python-xdg gmrun

Crear la configuración del entorno gráfico:
nano ~/.xinitrc
/usr/bin/X11/xterm &
exec openbox-session 

Gusto personal de ejecutar inmediatamente el emulador de terminal al iniciar el modo gráfico

Para copiar los ficheros de configuración de openbox y dejarlo funcional inmediatamente:

mkdir ~/.config/openbox/
cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml
cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
cp /etc/xdg/openbox/autostart ~/.config/openbox/autostart

Por último, la configuración para gmrun en openbox:
nano ~/.config/openbox/rc.xml 

Añadir:
<keybind key="Alt-F2">
<action name="Excecute"><command>gmrun</command></action>
</keybind>
En modo gráfico descubrí links2, me gustó, es muy rápido, sin embargo, limitado porque no tiene javascript, pero bastante bueno, se instala y ejecuta con los comandos:
sudo apt-get install links2
links2 -g

Y al parecer es todo. Post para no olvidar.