📄 rotatefb.c
字号:
#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <sys/mman.h>#include <fcntl.h>#include <string.h>#include <termios.h>#include <unistd.h>#include <errno.h>#include <linux/fb.h>int rotatefb_main(int argc, char *argv[]){ int c; char *fbdev = "/dev/graphics/fb0"; int rotation = 0; int fd; int res; struct fb_var_screeninfo fbinfo; do { c = getopt(argc, argv, "d:"); if (c == EOF) break; switch (c) { case 'd': fbdev = optarg; break; case '?': fprintf(stderr, "%s: invalid option -%c\n", argv[0], optopt); exit(1); } } while (1); if(optind + 1 != argc) { fprintf(stderr, "%s: specify rotation\n", argv[0]); exit(1); } rotation = atoi(argv[optind]); fd = open(fbdev, O_RDWR); if(fd < 0) { fprintf(stderr, "cannot open %s\n", fbdev); return 1; } res = ioctl(fd, FBIOGET_VSCREENINFO, &fbinfo); if(res < 0) { fprintf(stderr, "failed to get fbinfo: %s\n", strerror(errno)); return 1; } if((fbinfo.rotate ^ rotation) & 1) { unsigned int xres = fbinfo.yres; fbinfo.yres = fbinfo.xres; fbinfo.xres = xres; fbinfo.xres_virtual = fbinfo.xres; fbinfo.yres_virtual = fbinfo.yres * 2; if(fbinfo.yoffset == xres) fbinfo.yoffset = fbinfo.yres; } fbinfo.rotate = rotation; res = ioctl(fd, FBIOPUT_VSCREENINFO, &fbinfo); if(res < 0) { fprintf(stderr, "failed to set fbinfo: %s\n", strerror(errno)); return 1; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -