/* a simple keyboard ledController
* (C) by Rainer Sickinger
* e-mail: unix4ever@gmx.net
*/
#include <sys/ioctl.h>
#include <sys/kd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#define DEVICE "/dev/tty1"
#define ENDLOS 1
#define FAIL 0
#define SUCC 1
#define NOLIGHT 0x0
#define ALLLIGHT 0X7
#define RLIGHT 0X1
#define MLIGHT 0x4
#define LLIGHT 0x2
int setLight(int device, const unsigned int state){
/*a very primitive method*/
if(ioctl(device, KDSETLED, state)){
fprintf(stderr, "KONNTE LICHT NICHT EINSCHALTEN!!!\n");
return FAIL;
}/*end if*/
return SUCC;
}/*end if*/
int printMenu(){
int puffer;
printf("BOMBASTIC LED CONTROLLER\n"\
"========================\n\n"\
"Was moechten Sie machen:\n"\
"KEY LED1 LED2 LED3\n"\
"---------------------------\n"\
"-1- OFF OFF OFF \n"\
"-2- ON ON ON \n"\
"-3- ON OFF OFF \n"\
"-4- OFF ON OFF \n"\
"-5- OFF OFF ON \n"\
"-6- E N D E \n"\
"---------------------------\n"\
"ihre eingabe bitte> ");
scanf("%d", &puffer);
return puffer;
}/*end printMenu*/
int main(void){
int device;
int usrInput;
/*open the device*/
device = open(DEVICE, O_WRONLY);
if(device == -1){
fprintf(stderr, "FEHLER bein oeffnen des DEVICES!\n");
return 0;
}/*end if*/
while(ENDLOS){
system("clear");
usrInput = printMenu();
switch(usrInput){
case 1:{
setLight(device, NOLIGHT);
break;
}/*end off off off*/
case 2:{
setLight(device, ALLLIGHT);
break;
}/*end on on on*/
case 3:{
setLight(device, LLIGHT);
break;
}/*end on off off*/
case 4:{
setLight(device, MLIGHT);
break;
}/*end off on off*/
case 5:{
setLight(device, RLIGHT);
break;
}/*end off off on*/
case 6:{
close(device);
return 0;
}/*end close programm*/
default:{
printf("inputFailure!\n");
continue;
}/*end input failure*/
}/*end swicht*/
}/*end while*/
return 0;
}/*end main*/