особо благодарен буду за куски кода
вот, кстати, так получаю состояние модификаторов для linux консоли:
Код: Выделить всё
#include <sys/ioctl.h>
#include <stdio.h>
#include <fcntl.h>
int fd;
int linux_bioskey(void)
{
char c;
int status;
c = 6;
status = 0;
int ret = ioctl(fd, TIOCLINUX, &c);
//printf("%d\n", ret);
if ( ret == 0)
{
if (c & 0x01)
{
/* Right or left shift is pressed */
status |= 0x03;
}
if (c & 0x04)
{
/* Control key is pressed */
status |= 0x04;
}
if (c & 0x0A)
{
/* Alt key is pressed */
status |= 0x08;
}
}
return(status);
}
int main()
{
int n;
char *name = ttyname(0);
fd = open(name, O_RDONLY);
while(1)
{
n = linux_bioskey();
if(n!=0)printf("%d\n",n);
}
}
но данный способ не подходит для виртуальных терминалов (/dev/pts/)