Ich bin mir nicht sicher, ob es der einzig mögliche Weg ist, aber
ich habe gelesen, dass man etwas in einen Ort namens Framebuffer schreiben muss, um ein einzelnes Pixel an einer Stelle Ihrer Wahl auf den Bildschirm zu bringen.
> Also wurde ich neugierig, ob es möglich ist, in diese Stelle einzudringen und etwas hineinzuschreiben, um ein einzelnes Pixel irgendwo auf dem Bildschirm anzuzeigen.
Akzeptierte Antwort:
Ja, außerhalb des X-Servers, in tty, versuchen Sie den Befehl:
cat /dev/urandom >/dev/fb0
Wenn bunte Pixel den Bildschirm füllen, ist Ihr Setup in Ordnung, und Sie können versuchen, mit diesem kleinen Skript zu spielen:
#!/usr/bin/env bash
fbdev=/dev/fb0 ; width=1280 ; bpp=4
color="\x00\x00\xFF\x00" #red colored
function pixel()
{ xx=$1 ; yy=$2
printf "$color" | dd bs=$bpp seek=$(($yy * $width + $xx)) \
of=$fbdev &>/dev/null
}
x=0 ; y=0 ; clear
for i in {1..500}; do
pixel $((x++)) $((y++))
done
wo die Funktion 'Pixel' eine Antwort sein sollte… schreibe ein Pixel auf den Bildschirm, indem du die Bytewerte (blau-grün-rot-alpha) auf dem x-y-Offset des Geräts /dev/fbX änderst, das der Frame-Puffer für die Videokarte ist.
oder versuchen Sie es mit einem Liner-Pixel-Zeichnen (gelb auf x:y=200:100, wenn die Breite 1024 ist):
printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0
AKTUALISIERUNG: Dieser Code funktioniert sogar innerhalb des X-Servers, wenn wir X einfach so konfigurieren, dass es den Frame-Puffer verwendet. durch Angabe von fb0 in /usr/share/X11/xorg.conf.d/99-fbdev.conf