Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Estas funciones estan bajo la licencia GPL v3
- #include <stdio.h>
- int key_aski (int i)
- {
- struct tabla_aski *p;
- p = t_aski;
- while(p->ascii){
- p++;
- if (i ==p->ascii)return p->keycode;
- }
- return 0;
- }
- /*
- int scancode(unsigned char c,char *buffer,int salir)
- {
- switch(c & 0x7f) {
- case 1: //esc
- strcat(buffer,"Esc");
- salir++;
- break;
- case 2: //1
- if(capslock==0) {
- printk("1");
- strcat(buffer,"1");
- } else if(capslock==1) {
- printk("!");
- strcat(buffer,"!");
- }
- break;
- case 3: //2
- if(capslock==0) {
- printk("2");
- strcat(buffer,"2");
- } else if(capslock==1) {
- printk("%c",'"');
- strcat(buffer,(char *)'"');
- }
- break;
- case 4: //3
- if(capslock==0) {
- printk("3");
- strcat(buffer,"3");
- } else if(capslock==1) {
- printk("#");
- strcat(buffer,"#");
- }
- break;
- case 5: //4
- if(capslock==0) {
- printk("4");
- strcat(buffer,"4");
- } else if(capslock==1) {
- printk("$");
- strcat(buffer,"$");
- }
- break;
- case 6: //5
- if(capslock==0) {
- printk("5");
- strcat(buffer,"5");
- } else if(capslock==1) {
- printk("%");
- strcat(buffer,"%");
- }
- break;
- case 7: //6
- if(capslock==0) {
- printk("6");
- strcat(buffer,"6");
- } else if(capslock==1) {
- printk("&");
- strcat(buffer,"&");
- }
- break;
- case 8: //7
- if(capslock==0) {
- printk("7");
- strcat(buffer,"7");
- } else if(capslock==1) {
- printk("/");
- strcat(buffer,"/");
- }
- break;
- case 9: //8
- if(capslock==0) {
- printk("8");
- strcat(buffer,"8");
- } else if(capslock==1) {
- printk("(");
- strcat(buffer,"(");
- }
- break;
- case 10: //9
- if(capslock==0) {
- printk("9");
- strcat(buffer,"9");
- } else if(capslock==1) {
- printk(")");
- strcat(buffer,")");
- }
- break;
- case 11: //0
- if(capslock==0) {
- printk("0");
- strcat(buffer,"0");
- } else if(capslock==1) {
- printk("=");
- strcat(buffer,"=");
- }
- break;
- case 12: //'
- if(capslock==0) {
- printk("'");
- strcat(buffer,"'");
- } else if(capslock==1) {
- printk("?");
- strcat(buffer,"?");
- }
- break;
- case 13: //¿
- if(capslock==0) {
- printk("%c",es[7]);
- strcat(buffer,"¿");
- } else if(capslock==1) {
- printk("%c",es[8]);
- strcat(buffer,"¡");
- }
- break;
- case 16: //q
- if(capslock==0) printk("q");
- else if(capslock==1) printk("Q");
- strcat(buffer,"q");
- break;
- case 17: //w
- if(capslock==0) printk("w");
- else if(capslock==1) printk("W");
- strcat(buffer,"w");
- break;
- case 18: //e
- if(capslock==0) {
- if(tilde==0) printk("e");
- else if(tilde==1) printk("%c",es[3]);
- }
- else if(capslock==1) printk("E");
- tilde=0;
- strcat(buffer,"e");
- break;
- case 19: //r
- if(capslock==0) printk("r");
- else if(capslock==1) printk("R");
- strcat(buffer,"r");
- break;
- case 20: //t
- if(capslock==0) printk("t");
- else if(capslock==1) printk("T");
- strcat(buffer,"t");
- break;
- case 21: //y
- if(capslock==0) printk("y");
- else if(capslock==1) printk("Y");
- strcat(buffer,"y");
- break;
- case 22: //u
- if(capslock==0) {
- if(tilde==0) printk("u");
- else if(tilde==1) printk("%c",es[6]);
- } else if(capslock==1) printk("U");
- tilde=0;
- strcat(buffer,"u");
- break;
- case 23: //i
- if(capslock==0) {
- if(tilde==0) printk("i");
- else if(tilde==1) printk("%c",es[4]);
- } else if(capslock==1) printk("I");
- tilde=0;
- strcat(buffer,"i");
- break;
- case 24: //o
- if(capslock==0) {
- if(tilde==0) printk("o");
- else if(tilde==1) printk("%c",es[5]);
- } else if(capslock==1) printk("O");
- tilde=0;
- strcat(buffer,"o");
- break;
- case 25: //p
- if(capslock==0) printk("p");
- else if(capslock==1) printk("P");
- strcat(buffer,"p");
- break;
- case 26: //'
- tilde = 1;
- break;
- case 27: //+
- if(capslock==0) {
- printk("+");
- strcat(buffer,"+");
- } else if(capslock==1) {
- printk("*");
- strcat(buffer,"*");
- }
- break;
- case 30: //a
- if(capslock==0) {
- if(tilde==0) printk("a");
- else if(tilde==1) printk("%c",es[2]);
- }
- else if(capslock==1) printk("A");
- tilde=0;
- strcat(buffer,"a");
- break;
- case 31: //s
- if(capslock==0) printk("s");
- else if(capslock==1) printk("S");
- strcat(buffer,"s");
- break;
- case 32: //d
- if(capslock==0) printk("d");
- else if(capslock==1) printk("D");
- strcat(buffer,"d");
- break;
- case 33: //f
- if(capslock==0) printk("f");
- else if(capslock==1) printk("F");
- strcat(buffer,"f");
- break;
- case 34: //g
- if(capslock==0) printk("g");
- else if(capslock==1) printk("G");
- strcat(buffer,"g");
- break;
- case 35: //h
- if(capslock==0) printk("h");
- else if(capslock==1) printk("H");
- strcat(buffer,"h");
- break;
- case 36: //j
- if(capslock==0) printk("j");
- else if(capslock==1) printk("J");
- strcat(buffer,"j");
- break;
- case 37: //k
- if(capslock==0) printk("k");
- else if(capslock==1) printk("K");
- strcat(buffer,"k");
- break;
- case 38: //l
- if(capslock==0) printk("l");
- else if(capslock==1) printk("L");
- strcat(buffer,"l");
- break;
- case 39: //ñ
- if(capslock==0) printk("%c",es[0]);
- else if(capslock==1) printk("%c",es[1]);
- strcat(buffer,(char*)es[1]);
- break;
- case 40: //{
- if(capslock==0) {
- printk("{");
- strcat(buffer,"{");
- } else if(capslock==1) {
- printk("[");
- strcat(buffer,"[");
- }
- break;
- case 43: //}
- if(capslock==0) {
- printk("}");
- strcat(buffer,"}");
- } else if(capslock==1) {
- printk("]");
- strcat(buffer,"]");
- }
- break;
- case 86: //<
- if(capslock==0) {
- printk("<");
- strcat(buffer,"<");
- } else if(capslock==1) {
- printk(">");
- strcat(buffer,">");
- }
- break;
- case 44: //z
- if(capslock==0) printk("z");
- else if(capslock==1) printk("Z");
- strcat(buffer,"z");
- break;
- case 45: //x
- if(capslock==0) printk("x");
- else if(capslock==1) printk("X");
- strcat(buffer,"x");
- break;
- case 46: //c
- if(capslock==0) printk("c");
- else if(capslock==1) printk("C");
- strcat(buffer,"c");
- break;
- case 47: //v
- if(capslock==0) printk("v");
- else if(capslock==1) printk("V");
- strcat(buffer,"v");
- break;
- case 48: //b
- if(capslock==0) printk("b");
- else if(capslock==1) printk("B");
- strcat(buffer,"b");
- break;
- case 49: //n
- if(capslock==0) printk("n");
- else if(capslock==1) printk("N");
- strcat(buffer,"n");
- break;
- case 50: //m
- if(capslock==0) printk("m");
- else if(capslock==1) printk("M");
- strcat(buffer,"m");
- break;
- case 51: //,
- if(capslock==0) {
- printk(",");
- strcat(buffer,",");
- } else if(capslock==1) {
- printk(";");
- strcat(buffer,";");
- }
- break;
- case 52: //.
- if(capslock==0) {
- printk(".");
- strcat(buffer,".");
- } else if(capslock==1) {
- printk(":");
- strcat(buffer,":");
- }
- break;
- case 53: //-
- if(capslock==0) {
- printk("-");
- strcat(buffer,"-");
- } else if(capslock==1) {
- printk("_");
- strcat(buffer,"_");
- }
- break;
- case 42: //LShift
- if(capslock==0) capslock=1;
- else if(capslock==1) capslock=0;
- break;
- case 54: //RShift
- if(capslock==0) capslock=1;
- else if(capslock==1) capslock=0;
- break;
- case 56: //LAlt
- lalt=0;
- break;
- case 28: //Enter
- if(strcmp(buffer,"")!=0) salir++;
- break;
- case 29: //LCtrl
- break;
- case 57: //Espacio
- printk(" ");
- strcat(buffer," ");
- break;
- case 58: //Bloq Mayus
- if(capslock==0) capslock=1;
- else if(capslock==1) capslock=0;
- break;
- case 14: //Retroceso
- if(strcmp(buffer,"")!=0) {
- tot=strlen(buffer)-1;
- buffer[tot]='\0';
- DEFAULT_COLUMN-=2;
- printk(" ");
- DEFAULT_COLUMN-=2;
- curmov();
- }
- break;
- //faltan declarar un monton todavia...
- }
- return salir;
- }*/
- int ascancode(unsigned char c,char *buffer,int salir)
- {
- switch(c & 0x7f) {
- case 42: //LShift
- if(capslock==0) capslock=1;
- else if(capslock==1) capslock=0;
- break;
- case 54: //RShift
- if(capslock==0) capslock=1;
- else if(capslock==1) capslock=0;
- break;
- case 56: //Alt
- lalt=1;
- break;
- }
- return salir;
- }
- int get_code() {
- int c;
- c = inb(0x64);
- if ((c & 1) == 0) {
- int comp;
- comp = inb((5)+0x3f8);
- if (comp & 0x01){
- c = inb((0)+0x3f8);
- return (key_aski(c));
- }
- return(0);
- }
- c = inb(0x60);
- return((c));
- }
- int scanf(char *buffer)
- {
- int salir=0;
- while(salir==0){
- unsigned char c = get_code();
- if ((c & 0x80)!=0) {
- //salir=scancode(c,buffer,0);
- } else if (c!=0) {
- salir=ascancode(c,buffer,0);
- }
- curmov();
- }
- if (strcmp(buffer,"")!=0) printk("\n");
- curmov();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement