From b551fb4f970877a879d56e2cc07e622545b8bb4c Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Sun, 28 Dec 2025 18:53:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E8=97=8F=E9=BC=A0=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- face_rec.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/face_rec.py b/face_rec.py index 9219f87..719adff 100644 --- a/face_rec.py +++ b/face_rec.py @@ -22,14 +22,40 @@ from compreface.service import RecognitionService, DetectionService def hide_cursor(): """隐藏鼠标光标(Linux/X11)""" try: - import subprocess - # 创建空白cursor文件 - xbm = '/tmp/invisible_cursor.xbm' - with open(xbm, 'w') as f: - f.write('#define w 1\n#define h 1\n#define hot_x 0\n#define hot_y 0\nstatic char curs[] = {0};') - subprocess.run(['xsetroot', '-cursor', xbm, xbm], check=False) - except Exception: - pass + import ctypes + from ctypes import cdll, c_char_p, c_void_p, c_int, byref + + libx11 = cdll.LoadLibrary('libX11.so.6') + + # 打开 Display + display = libx11.XOpenDisplay(None) + if not display: + print("Cannot open X display") + return + + root = libx11.XDefaultRootWindow(display) + + # 创建空白 bitmap + no_data = b'\x00' + bitmap = libx11.XCreateBitmapFromData(display, root, no_data, 8, 8) + + # 创建完全透明的光标(前景和背景都是0,即透明) + black = c_int(0) + invisible_cursor = libx11.XCreatePixmapCursor(display, bitmap, bitmap, + byref(black), byref(black), 0, 0) + + # 设置到根窗口 + libx11.XDefineCursor(display, root, invisible_cursor) + libx11.XFlush(display) + + print("Cursor hidden successfully") + + # 清理 + libx11.XFreeCursor(display, invisible_cursor) + libx11.XFreePixmap(display, bitmap) + libx11.XCloseDisplay(display) + except Exception as e: + print(f"Hide cursor error: {e}") class FaceRecognitionSystem: