From 58b90915d5450316a5062ef0a294ec6ab4f68cfe Mon Sep 17 00:00:00 2001 From: Ing Date: Sun, 14 Jan 2024 00:31:16 +0800 Subject: [PATCH] add fbsize --- fbsize/Makefile | 10 ++++ fbsize/fbsize | Bin 0 -> 16560 bytes fbsize/main.c | 91 +++++++++++++++++++++++++++++++++++++ files/initrd/opt/rr/fbszie | Bin 0 -> 16560 bytes 4 files changed, 101 insertions(+) create mode 100644 fbsize/Makefile create mode 100644 fbsize/fbsize create mode 100644 fbsize/main.c create mode 100644 files/initrd/opt/rr/fbszie diff --git a/fbsize/Makefile b/fbsize/Makefile new file mode 100644 index 00000000..a537fa58 --- /dev/null +++ b/fbsize/Makefile @@ -0,0 +1,10 @@ + +CFLAGS = -Wall -pedantic + +all: fbsize + +fbsize: main.o + cc -o $@ $^ + +clean: + rm -f fbsize *.o diff --git a/fbsize/fbsize b/fbsize/fbsize new file mode 100644 index 0000000000000000000000000000000000000000..1a6c1e72fcdc4eb6ed34457c1552c382f8933e56 GIT binary patch literal 16560 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 +#include +#include +#include +#include +#include +#include + +#define VERSION "1.0" + +int main(int argc, char *argv[]) +{ + int c; + + while (1) + { + int option_index = 0; + static struct option long_options[] = { + {"resolution", required_argument, 0, 'r'}, + {"buffer", required_argument, 0, 'b'}, + {"offset", required_argument, 0, 'o'}, + {"screen", required_argument, 0, 's'}, + {"help", no_argument, 0, 'h'}, + {0, 0, 0, 0}}; + + c = getopt_long(argc, argv, "r:b:o:s:h", long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 'r': + case 'b': + case 'o': + case 's': + int fbfd = 0; + struct fb_var_screeninfo var_info; + + // 打开设备文件 + fbfd = open(optarg, O_RDWR); + if (fbfd == -1) + { + perror("Error: cannot open framebuffer device"); + return 1; + } + + // 获取屏幕参数 + if (ioctl(fbfd, FBIOGET_VSCREENINFO, &var_info) == -1) + { + perror("Error reading variable information"); + return 1; + } + + if (c == 'r') + { + printf("%dx%d\n", var_info.xres, var_info.yres); + } + else if (c == 'b') + { + printf("%dx%d\n", var_info.xres_virtual, var_info.yres_virtual); + } + else if (c == 'o') + { + printf("%dx%d\n", var_info.xoffset, var_info.yoffset); + } + else if (c == 's') + { + printf("%dx%d\n", var_info.height, var_info.width); + } + + // 关闭设备文件 + close(fbfd); + break; + case 'h': + case '?': + printf("Usage: %s [options] \n", argv[0]); + printf("Version: %s\n", VERSION); + printf("Options:\n"); + printf(" -r, --resolution Display the resolution of the screen\n"); + printf(" -b, --buffer Display the resolution of the framebuffer\n"); + printf(" -o, --offset Display the offset of the screen\n"); + printf(" -s, --screen Display the size of the screen\n"); + printf(" -h, --help Display this help message\n"); + return 0; + default: + return 1; + } + } + + return 0; +} \ No newline at end of file diff --git a/files/initrd/opt/rr/fbszie b/files/initrd/opt/rr/fbszie new file mode 100644 index 0000000000000000000000000000000000000000..1a6c1e72fcdc4eb6ed34457c1552c382f8933e56 GIT binary patch literal 16560 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