続 jfbterm for FreeBSD

確かに動いた。んでも、VESA フレームバッファコンソールは -current には既に無いし、いつものマウスが横にしか動かない病が発生したのでパッチが必要だった。
あー、でも BS キーと DEL キーで文字消せないなぁ。環境の設定が何か必要なのかなぁ。

--- framebuffer.c.orig	2009-03-20 21:35:06.000000000 +0900
+++ framebuffer.c	2009-03-20 22:17:03.000000000 +0900
@@ -1004,8 +1004,6 @@
 #elif defined (__NetBSD__)
 	if (ioctl(self->fd, WSDISPLAYIO_GTYPE, &wsdisplay_type) == -1)
 		errx(1, "%s is not a framebuffer device.", self->device);
-	if (wsdisplay_type != WSDISPLAY_TYPE_VESA)
-		errx(1, "%s is not a framebuffer device.", self->device);
 #elif defined (__OpenBSD__)
 	if (ioctl(self->fd, WSDISPLAYIO_GTYPE, &wsdisplay_type) == -1)
 		errx(1, "%s is not a framebuffer device.", self->device);
--- mouse.c.orig	2009-03-20 21:58:23.000000000 +0900
+++ mouse.c	2009-03-20 22:06:39.000000000 +0900
@@ -49,6 +49,7 @@
 #if defined (__FreeBSD__)
 #include <sys/mouse.h>
 #elif defined (__NetBSD__) || defined (__OpenBSD__)
+#include <sys/ioctl.h>
 #include <time.h>
 #include <dev/wscons/wsconsio.h>
 #endif
@@ -561,6 +562,13 @@
 		mouse.packetSize = mousemode.packetsize;
 	}
 #endif
+#if defined (__NetBSD__) && defined(WSMOUSEIO_SETVERSION)
+	if (mouse.type == MOUSE_TYPE_WSMOUSE) {
+		int version = WSMOUSE_EVENT_VERSION;
+		if (ioctl(mouse.fd, WSMOUSEIO_SETVERSION, &version) == -1)
+			err(1, "ioctl(WSMOUSEIO_SETVERION");
+	}
+#endif
 	if (mouse.type != MOUSE_TYPE_BUSMOUSE) {
 		setBaudRate(B9600, mouse.cFlag);
 		setBaudRate(B4800, mouse.cFlag);
広告を非表示にする