Linux内核提供函数 ioctl 用于控制底层设备与描述符。参数KDSETLED指示小键盘灯的状态,0x01为scroll lock灯亮,0x02为num lock灯亮, 0x04为caps lock灯亮。
#include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> #include <linux/kd.h> #include <sys/types.h> #include <sys/ioctl.h> int ERROR=-1; int main(int argc, char** argv) { int fd; if ((fd = open("/dev/console", O_NOCTTY)) == ERROR) { perror("open"); exit(ERROR); } ioctl(fd, KDSETLED, 0x01); usleep(50000); ioctl(fd, KDSETLED, 0x02); usleep(50000); ioctl(fd, KDSETLED, 0x04); usleep(50000); ioctl(fd, KDSETLED, 0x01); close(fd); return 0; }
编译:gcc test.c -o test
root用户运行, 指示灯依次闪亮,最后scroll lock灯亮。