Package DriverTeclado

Source Code of DriverTeclado.Eventos

/*
* File:        Eventos.java
*
*
*     This file is a part of MICE, a program designed for
*              people with severe motor disabilities to whom it is impossible
*              to use a traditional mouse. This application gives these people
*              the control of the physical mouse via another type of device.
*
* Authors:     Isabel Gonzalez
* Date:        2008/ 2009
*
* Company:     Colegio Publico de Educacion Especial Alborada, Zaragoza
*              DIIS, Universidad de Zaragoza
*
* License:     Copyright (C) 2008
*
*              This program is free software: you can redistribute it and/or modify
*              it under the terms of the GNU General Public License as published by
*              the Free Software Foundation, either version 3 of the License, or
*              (at your option) any later version.
*
*              This program is distributed in the hope that it will be useful,
*              but WITHOUT ANY WARRANTY; without even the implied warranty of
*              MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*              GNU General Public License for more details.
*
*              You should have received a copy of the GNU General Public License
*              along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*
*
*
*/




package DriverTeclado;

import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;



// Clase que me proporciona los metodos para que a partir de una tecla, ver qué elementos puedo enviar
// y ademas gestiona la configuracion de los eventos

public class Eventos {
   
    native boolean teclaLibre(String tecla);
    native void capturaTecla(String tecla);
   // static Logger log;
    public static String[] teclas= {"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","�",
                      "Z","X","C","V","B","N","M","SPACE","ENTER","ESC","flecha derecha","flecha izquierda",
                      "flecha arriba","flecha abajo","0","1","2","3","4","5","6","7","8","9"};
    // Almacenara las teclas disponibles
    List<String> disponibles= new ArrayList<String>();
    public static boolean arrastrando=false;
   
    // Parametros a enviar al nucleo
     public static final int  MOVIMIENTO = 0;
     public static final int  PARADA     = 1;
     public static final int  CLIC       = 2;
     public static final int  ARRASTRAR  = 3;
     public static final int  VELOCIDAD  = 4;
     public static final int  TIPO       = 5;
     public static final int  RELACION   = 6;
     public static final int  FIN        = 7;
     public static final int  NOMBRE        = 8;
     public static final int  MENSAJERATON   = 9;
     public static final int  FRENAR   = 10;
    
     // Estos son los dos parametros que recibimos
     public static int tipoCod;
     public static int parametro;
   
    
     public static int speedCursor = 50;
     public static int relacionVel = 0;

//    public String[] disponibles= new String[50];
    //listas finales que guardan los eventos una vez que la configuracion ha sido validada
    private static java.util.List <String> listaArriba = new ArrayList <String>();
    private static java.util.List <String> listaAbajo = new ArrayList <String>();
    private static java.util.List <String> listaDerecha = new ArrayList <String>();
    private static java.util.List <String> listaIzquierda = new ArrayList <String>();
    private static java.util.List <String> listaArrIzq = new ArrayList <String>();
    private static java.util.List <String> listaArrDch = new ArrayList <String>();
    private static java.util.List <String> listaAbjIzq = new ArrayList <String>();
    private static java.util.List <String> listaAbjDch = new ArrayList <String>();
    private static java.util.List <String> listaParar = new ArrayList <String>();
    private static java.util.List <String> listaClcIzq = new ArrayList <String>();
    private static java.util.List <String> listaClcDch = new ArrayList <String>();
    private static java.util.List <String> listaClcMed = new ArrayList <String>();
    private static java.util.List <String> listaDblClcIzq = new ArrayList <String>();
    private static java.util.List <String> listaArrastrar = new ArrayList <String>();
   
   
    public static java.util.List <java.util.List> conjuntoListas = new ArrayList <java.util.List>();
    public static boolean alPulsar;

    public Object[] d;
    public static Locale  Idiomas;
   
    public Eventos() {
           
        // Introduzco en el conjunto de las listas, las listas.
        conjuntoListas.add(0, listaArriba);
        conjuntoListas.add(1, listaAbajo);
        conjuntoListas.add(2, listaDerecha);
        conjuntoListas.add(3, listaIzquierda);
        conjuntoListas.add(4, listaArrIzq);
        conjuntoListas.add(5, listaArrDch);
        conjuntoListas.add(6, listaAbjIzq);
        conjuntoListas.add(7, listaAbjDch);
        conjuntoListas.add(8, listaParar);
        conjuntoListas.add(9, listaClcIzq);
        conjuntoListas.add(10, listaClcDch);
        conjuntoListas.add(11, listaClcMed);
        conjuntoListas.add(12, listaDblClcIzq);
        conjuntoListas.add(13, listaArrastrar);
    }
    static {
        try {
          
             System.loadLibrary("libs/prueba");
          
        } catch (UnsatisfiedLinkError e) {
            System.out.println("No se puede cargar la libreria dinamica");
        }

    }
    /////////////////////////////////////////////////////
    // METODOS PARA LA CONFIGURACION DE DRIVER TECLADO //
    /////////////////////////////////////////////////////
   
   public void almacenarLibres(){
       for (int i=0; i< teclas.length; i++){
         if (teclaLibre(teclas[i])){
             this.disponibles.add(teclas[i]);
         }
       }
       d=disponibles.toArray();
   }
   
   
   
    // Carga una configuracion de un XML almacenada previamente en el computador
    // y la asigna a las lista
    public void cargarConfiguracion(){
       
    }

    // Devuelve true si el elemento se encuentra en la lista
    public boolean estaEnLista(java.util.List <String> lista, String elemento){
        Iterator it = lista.iterator();
        String elem;
        boolean encontrado=false;
        while( it.hasNext() && encontrado==false) {
                elem= (String) it.next();
                encontrado= (elem.equals(elemento));
        }
        return(encontrado);
    }
  
       
    // Almacenara en las listas la configuracion elegida y ademas en el XML.
    public void guardarConfiguracionActual(){
       
    }
   
    // almacenara en las listas la configuracion elegida
    public void llenarListasDeInterfaz(){
       
    }
   
    // Almacenara en las listas lo almacenado en un fichero XML
    public void llenarListasDeXML(){
       
    }
    public void limpiar(){
        ArrayList <String> l;
        for(int i=0; i<conjuntoListas.size();i++){
            l= (ArrayList)conjuntoListas.get(i);
            l.clear();

       
        }
        
    }
    public void eliminar(){
        conjuntoListas.clear();
    }
   
    ///////////////////
    // Model--> List //
    ///////////////////
    // Almacena todas las listas desde todas las listas Model
    public void almacenarEventosDesdeModel(ArrayList <SortedListModel> aModel){
        java.util.List <String> lList;
        SortedListModel lModel;
       
        for (int i=0; i<conjuntoListas.size(); i++){
            lList= devolverLista(i);
            lModel= aModel.get(i);
            copiarDeModelaList(lModel, lList);
           
        }
       
    }
   
    private void copiarDeModelaList(SortedListModel lModel, List lList) {
       
        if (lModel.getSize()>0){
            Iterator it = lModel.iterator();
            String elem;     
            while( it.hasNext()) {
                    elem= (String) it.next();
                    lList.add((String)elem);
            }   
        }
       
    }
   
    // Devuelve la lista del indice indicado
    // Null si el indice no es correcto
    public java.util.List <String> devolverLista(int indice){
        java.util.List <String> lista;
        try{
           lista= conjuntoListas.get(indice);
           return(lista);
        }
        catch(IndexOutOfBoundsException e){
           return(null);
        }
    }
   
 
    // Devuelve todas las listas
    public java.util.List <java.util.List> devolverListas(){
        return(conjuntoListas);
      
    }
   
   
    // Metodo que muestra por pantalla una lista
    public void mostrarlista(java.util.List <String> lista){
       
        Iterator it = lista.iterator();
        String elem;     
        while( it.hasNext()) {
                elem= (String) it.next();
                System.out.println(elem);
        }
    }
   
    // Asigna una configuracion por defecto
    public void configuracionDefecto(){
        alPulsar=true;
        //arriba
        listaArriba.add("Q");listaArriba.add("W");listaArriba.add("E");
        listaArriba.add("R");listaArriba.add("T");listaArriba.add("Y");
        listaArriba.add("U");listaArriba.add("I");listaArriba.add("O");
        listaArriba.add("P");
        //abajo
        listaAbajo.add("Z");listaAbajo.add("X");listaAbajo.add("C");
        listaAbajo.add("V");listaAbajo.add("B");listaAbajo.add("N");
        listaAbajo.add("M");
        //izquierda
        listaIzquierda.add("A");listaIzquierda.add("S");listaIzquierda.add("D");
        listaIzquierda.add("F");listaIzquierda.add("G");
        //derecha
        listaDerecha.add("H");listaDerecha.add("J");listaDerecha.add("K");
        listaDerecha.add("L");listaDerecha.add("�");
        //clickIzquierdo
        listaClcIzq.add("SPACE");
      
    }
   
   
    //////////////////////////////////////////////////
    // METODOS PARA CODIFICAR EL QUE ENVIAR AL NUCLEO//
    //////////////////////////////////////////////////
   
   
    // A partir de una tecla integer me crea un evento con el string a enviar a nucleo
    // 81--> m0 (arriba)
    public static IntBuffer crearEvento(int tecla){
        ByteBuffer buffer = ByteBuffer.allocate(8);
        IntBuffer intBuffer = buffer.asIntBuffer();
       
        String cod= decodificar(tecla);
        buffer.flip();
        buffer.clear();
       
        // cambiado para comprobar, volver a poner cuaksndo sea la conexion
        if (!cod.equals(" ")){
           
            if (listaArriba.contains(cod)){
           
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 0);
                return(intBuffer);
            }
            else if (listaAbajo.contains(cod)){
           
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 1);
                return(intBuffer);
               
            }
            else if (listaDerecha.contains(cod)){
               
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 2);
                return(intBuffer);
               
            }
            else if (listaIzquierda.contains(cod)){
               
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 3);
                return(intBuffer);
               
            }
            else if (listaArrIzq.contains(cod)){
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 4);
                return(intBuffer);
               
            }
            else if (listaArrDch.contains(cod)){
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 5);
                return(intBuffer);
               
            }
            else if (listaAbjIzq.contains(cod)){
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 6);
                return(intBuffer);
               
            }
            else if (listaAbjDch.contains(cod)){
                intBuffer.put(0,MOVIMIENTO);
                intBuffer.put(1, 7);
                return(intBuffer);
               
            }
            else if (listaParar.contains(cod)){
                intBuffer.put(0,PARADA);
                intBuffer.put(1, 8);
                return(intBuffer);
               
            }
            else if (listaClcIzq.contains(cod)){
                intBuffer.put(0,CLIC);
                intBuffer.put(1, 9);
                return(intBuffer);
               
            }
            else if (listaClcDch.contains(cod)){
                intBuffer.put(0,CLIC);
                intBuffer.put(1, 10);
                return(intBuffer);
               
            }
            else if (listaClcMed.contains(cod)){
                intBuffer.put(0,CLIC);
                intBuffer.put(1, 11);
                return(intBuffer);
               
            }
            else if (listaDblClcIzq.contains(cod)){
                intBuffer.put(0,CLIC);
                intBuffer.put(1, 12);
                return(intBuffer);
               
            }
            else if (listaArrastrar.contains(cod)){
                if (!arrastrando){
                    intBuffer.put(0,ARRASTRAR);
                    intBuffer.put(1, 13);
                    arrastrando=true;
                    return(intBuffer);
                }
                else{
                    intBuffer.put(0,ARRASTRAR);
                    intBuffer.put(1, 14);
                    arrastrando=false;
                    return(intBuffer);
                }
               
            }
            else return (null);
        }
        else return (null);
    }
   
   
   
    // Realiza la conversion entre el numero de tecla y el string de la tecla correspondiente
    // 65--> "A"
    public static String decodificar (int tecla){
        if (tecla==65) return "A";
        else if (tecla==66) return "B";
        else if (tecla==67) return "C";
        else if (tecla==68) return "D";
        else if (tecla==69) return "E";
        else if (tecla==70) return "F";
        else if (tecla==71) return "G";
        else if (tecla==72) return "H";
        else if (tecla==73) return "I";
        else if (tecla==74) return "J";
        else if (tecla==75) return "K";
        else if (tecla==76) return "L";
        else if (tecla==77) return "M";
        else if (tecla==78) return "N";
        else if (tecla==192) return "�";
        else if (tecla==79) return "O";
        else if (tecla==80) return "P";
        else if (tecla==81) return "Q";
        else if (tecla==82) return "R";
        else if (tecla==83) return "S";
        else if (tecla==84) return "T";
        else if (tecla==85) return "U";
        else if (tecla==86) return "V";
        else if (tecla==87) return "W";
        else if (tecla==88) return "X";
        else if (tecla==89) return "Y";
        else if (tecla==90) return "Z";
        else if (tecla==32) return "SPACE";
        else if (tecla==48) return "0";
        else if (tecla==49) return "1";
        else if (tecla==50) return "2";
        else if (tecla==51) return "3";
        else if (tecla==52) return "4";
        else if (tecla==53) return "5";
        else if (tecla==54) return "6";
        else if (tecla==55) return "7";
        else if (tecla==56) return "8";
        else if (tecla==57) return "9";
        else if (tecla==27) return "ESC";
        else if (tecla==13) return "ENTER";
        else if (tecla==39) return "flecha derecha";
        else if (tecla==37) return "flecha izquierda";
        else if (tecla==38) return "flecha arriba";
        else if (tecla==40) return "flecha abajo";
        else return(" ");
     }

    void capturarTeclas() {
        System.out.println("Capturar teclas");
        for (int i=0; i<conjuntoListas.size(); i++){
            List al= conjuntoListas.get(i);
            if (al.size()!=0){
                for (int j=0; j<al.size();j++){
                   
                    capturaTecla((String)al.get(j));
                   
                }
            }
        }
    }

    static void enviarConfiguracionANucleo() {
       
        // Envio la velocidad del cursor
        Conexion.enviar(1);
       
        // Envio el tipo de movimiento (simple o doble)
        Conexion.enviar (2);       
        // Envio la relacion de la velocidad
        Conexion.enviar(3);
    }

}
TOP

Related Classes of DriverTeclado.Eventos

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.