From 4ae78a9466dbb945f94eb0a3c0f2f6b621ade2a7 Mon Sep 17 00:00:00 2001 From: KenDickey Date: Sun, 25 Jul 2021 13:37:57 -0700 Subject: [PATCH 1/7] Works on RasPi 3 with RasPi Linux --- platforms/unix/vm-display-fbdev/sqUnixEvdevKeyMouse.c | 7 +++++-- platforms/unix/vm-display-fbdev/sqUnixFBDev.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/platforms/unix/vm-display-fbdev/sqUnixEvdevKeyMouse.c b/platforms/unix/vm-display-fbdev/sqUnixEvdevKeyMouse.c index 2b6bf6af8f..ecf9b4de0c 100644 --- a/platforms/unix/vm-display-fbdev/sqUnixEvdevKeyMouse.c +++ b/platforms/unix/vm-display-fbdev/sqUnixEvdevKeyMouse.c @@ -535,9 +535,12 @@ void kb_open(struct kb *kbdSelf, int vtSwitch, int vtLock) int rc; assert(kbDev.fd == -1); - kbDev.fd= open(kbDev.kbName= KEYBOARD_DEV_NAME, O_RDONLY|O_NONBLOCK); + if (kbDev.kbName == 0) { + kbDev.kbName= KEYBOARD_DEV_NAME; + } + kbDev.fd= open(kbDev.kbName, O_RDONLY|O_NONBLOCK); if (kbDev.fd < 0) { - DPRINTF("FAILED TO OPEN: %s\n", KEYBOARD_DEV_NAME); + DPRINTF("FAILED TO OPEN: %s\n", kbDev.kbName); failPermissions("console"); } else { DPRINTF("evdev opened Keyboard device %s\n", kbDev.kbName); diff --git a/platforms/unix/vm-display-fbdev/sqUnixFBDev.c b/platforms/unix/vm-display-fbdev/sqUnixFBDev.c index 316e521dcc..e5c516f4e7 100644 --- a/platforms/unix/vm-display-fbdev/sqUnixFBDev.c +++ b/platforms/unix/vm-display-fbdev/sqUnixFBDev.c @@ -395,6 +395,7 @@ static void display_parseEnvironment(void) if ((ev= getenv("SQUEAK_FBDEV"))) fbDev= strdup(ev); if ((ev= getenv("SQUEAK_KBMAP"))) kmPath= strdup(ev); if ((ev= getenv("SQUEAK_MSDEV"))) msDev= strdup(ev); + if ((ev= getenv("SQUEAK_KBDEV"))) kbDev.kbName= strdup(ev); if ((ev= getenv("SQUEAK_MSPROTO"))) msProto= strdup(ev); if ((ev= getenv("SQUEAK_VTLOCK"))) vtLock= 1; if ((ev= getenv("SQUEAK_VTSWITCH"))) vtSwitch= 1; @@ -414,6 +415,7 @@ static int display_parseArgument(int argc, char **argv) if (!strcmp(arg, "-fbdev")) fbDev= argv[1]; else if (!strcmp(arg, "-kbmap")) kmPath= argv[1]; else if (!strcmp(arg, "-msdev")) msDev= argv[1]; + else if (!strcmp(arg, "-kbdev")) kbDev.kbName= argv[1]; else if (!strcmp(arg, "-msproto")) msProto= argv[1]; else n= 0; /* not recognised */ From 14ae6c383e3837d59151e07ac497b6a21e5417bc Mon Sep 17 00:00:00 2001 From: KenDickey Date: Sun, 25 Jul 2021 13:41:17 -0700 Subject: [PATCH 2/7] for RasPi3 --- build.linux32ARMv6/squeak.cog.spur/build/mvm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.linux32ARMv6/squeak.cog.spur/build/mvm b/build.linux32ARMv6/squeak.cog.spur/build/mvm index e1fd0f57bc..0ccb75edb6 100755 --- a/build.linux32ARMv6/squeak.cog.spur/build/mvm +++ b/build.linux32ARMv6/squeak.cog.spur/build/mvm @@ -2,7 +2,8 @@ set -e # Spur VM with VM profiler and threaded heartbeat INSTALLDIR=sqcogspurlinuxhtRPi -OPT="-m32 -g -O2 -DNDEBUG -DDEBUGVM=0" +##OPT="-m32 -g -O2 -DNDEBUG -DDEBUGVM=0" +OPT=" -g -O2 -DNDEBUG -DDEBUGVM=0 -D_GNU_SOURCE -DUSEEVDEV" if [ $# -ge 1 ]; then INSTALLDIR="$1"; shift From 5ef63ba3550921f8891ad4c9f4947807dbc1bd1f Mon Sep 17 00:00:00 2001 From: KenDickey Date: Mon, 26 Jul 2021 08:03:31 -0700 Subject: [PATCH 3/7] Help text now matches current --- platforms/unix/vm-display-fbdev/sqUnixFBDev.c | 16 ++++++++-------- .../vm-display-fbdev/sqUnixFBDevFramebuffer.c | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/platforms/unix/vm-display-fbdev/sqUnixFBDev.c b/platforms/unix/vm-display-fbdev/sqUnixFBDev.c index e5c516f4e7..600f0ed821 100644 --- a/platforms/unix/vm-display-fbdev/sqUnixFBDev.c +++ b/platforms/unix/vm-display-fbdev/sqUnixFBDev.c @@ -340,7 +340,7 @@ static void display_winInit(void) #if defined(AT_EXIT) AT_EXIT(closeDisplay); #else -# warning: cannot release /dev/fb on exit! +# warning: cannot release /dev/fb0 on exit! # endif (void)recordMouseEvent; @@ -365,7 +365,7 @@ static void failPermissions(const char *who) fprintf(stderr, " (you might be able to load one with 'modprobe'; look in\n"); fprintf(stderr, " /lib/modules for something called 'fb.o'\n"); fprintf(stderr, " - you don't have write permission on some of the following\n"); - fprintf(stderr, " /dev/tty*, /dev/fb*, /dev/psaux, /dev/input/mice\n"); + fprintf(stderr, " /dev/tty*, /dev/fb*, /dev/input/event?, /dev/input/mouse0\n"); fprintf(stderr, " - you need to run Squeak as root on your machine\n"); exit(1); } @@ -374,12 +374,12 @@ static void failPermissions(const char *who) static void display_printUsage(void) { printf("\nFBDev