Hi all,
In my Python application running on Raspberry Pi under Raspbian I use Pygame to display some software-generated images via framebuffer. I don’t need any input from mouse, keyboard or any other devices, all I need is a convenient way of using framebuffer. I initialize Pygame in the following way: class FramebufferStaticImage(object): black = (0, 0, 0) white = (255, 255, 255) _ENV_VAR_DISPLAY = "DISPLAY" _instance = None def __init__(self, log): "Ininitializes a new pygame screen using the framebuffer" # Based on "Python GUI in Linux frame buffer" # http://www.karoltomala.com/blog/?p=679 if FramebufferStaticImage._instance != None: raise Exception("No more than 1 instance of FramebufferStaticImage is allowed!") FramebufferStaticImage._instance = self self._log = log self._log.info("[fb_static_image] Init: entered") self._screen = None # Try ensure using framebuffer and not X11 display even if it exists if self._ENV_VAR_DISPLAY in os.environ: del os.environ[self._ENV_VAR_DISPLAY] os.putenv('SDL_FBDEV', '/dev/fb0') os.putenv('SDL_VIDEODRIVER', 'fbcon') os.environ['SDL_NOMOUSE'] = '1' #### os.putenv('SDL_NOMOUSE', '1') self._log.debug("Current environment is: {env}", env = os.environ) import pygame pygame.display.init() self._width = pygame.display.Info().current_w self._height = pygame.display.Info().current_h self._log.info("[fb_static_image] Framebuffer size: {width} x {height}", width = self._width, height = self._height) self._screen = pygame.display.set_mode( (self._width, self._height), pygame.FULLSCREEN) # Clear the screen to start self._screen.fill(self.black) # Initialise font support pygame.font.init() # Render the screen pygame.display.update() self._log.info("[fb_static_image] Init: leaving") Problem #1: I have mouse pointer at the top left corner of Pygame-drawn images. I want mouse pointer to be hidden. I know that I can disable mouse pointer using pygame.mouse.set_visible, but here comes Problem #2: I have to run my application with sudo in order for pygame to not raise “unable to open a console terminal” exception. But I want to run my application without root rights, because this increases my application’s security. There are some posts on forums that recommend setting SDL_NOMOUSE=1 environment variable before initializing pygame which should skip mouse initialization and maybe make it possible to get rid of sudo, but this doesn’t work for me: I still need to use sudo and mouse pointer is still there. If this makes any difference, I have no mouse or keyboard attached to the Raspberry Pi, I connect to it using SSH. I use Pygame version 1.9.2~pre~r3348-2~bpo8+rpi1 libsdl-image1.2 version 1.2.12-5+b1 libsdl1.2debian version 1.2.15-10+rpi1 Does SDL_NOMOUSE work for anyone using recent Pygame versions? Is it possible to skip mouse initialization in Pygame? P.S. This question was originally posted on StackExchange <https://raspberrypi.stackexchange.com/questions/69007/how-to-completely-disable-mouse-in-pygame>, but it seems I chose the wrong section. For this reason or another, I haven’t got any straight answer yet, so I write here and hope for the best :)