작성자 : 문경원
작성일 : 2009년 02월08일
출처   : http://www.fsp21.org
참여 인원 : 유영창, 이영민, 문경원 , 이원재
                                                                                                                                                                                                      

1. 개요
임베디드 장비에 연결된 입력 장치의 입출력을 처리하기 위한 목적으로 만들어진 라이브러리 입니다
.

 

키보드, 마우스, 터치 스크린 등의 장치가 연결이 되면 입력 디바이스 드라이버에서 이벤트 드라이버로 처리가 됩니다.  

 이벤트 드라이버로 처리 되면서 가정 좋은 점은 장치를 신경 쓸 필요 없이 공통된 형식의 데이터를 사용자에게 제공해 주는 것이다.

 

             struct input_event{

                 struct timval        time;

                 unsigned short      type;

                 unsigned short      code;

                 unsigned int       value;

             };

 

위의 input_event 구조체는 방금 전에 말한 공통된 데이터 형의 값입니다.

각각의 멤버 변수에 대해 알아 봅시다.

 

*  time

입력 이벤트가 발생한 시간 정보 입니다.

 

*  type

터치와 마우스란 입력장치는 사용자가 입력한 위치정보를 발생하는 장치입니다.

그러나 위치정보의 의미가 다릅니다. 터치는 절대값(ABS_X, ABS_Y ..._)의 위치정보를 제공하고, 마우스는 변화량의 위치정보(REL_X, REL_Y)를 제공합니다.

 

터치는 터치의 입력범위가 정해져 있기 때문에 사용자가 입력(누르는)하는 곳의 값이 고정된 값이들어 옵니다.

 

하지만 마우스는 고정 위치 값이 존재하지 않고, 마우스를 움직일 때 얼마나(상대적 변화량)움직이는가에 대한 상대적 변화량과, 방향 정보를 제공합니다.

이렇게 다른 타입을 구분하기 위한 정보를 ‘type’ 멤버가 제공한다.

 

*  code

code’ 멤버는 입력정보는 세분화하는 분류다. 설명이 쉽지 않다. 예로 설명하자.

마우스는 입력정보가 여려가지다.

좌버튼, 우버튼, 위로휠, 아래로 휠, 좌로이동, 우로이동, 위로이동, 아래로 이동 등등 이런 입력정보를 구분하기 위한 멤버이다.

이런 세분화하는 분류는 ‘code’에 따라 다르게 분류됩니다.

 

 

*  value

value’ 멤버는 ‘code’ 멤버의 해당하는 입력 값이다. 역시 예로 설명하자.

마우스가 우로 이동한 입력이 발생한다면, code’멤버에 우로이동이란 값과 함께 얼마나

우로 이동했는지에 대한 값(변화량)이 ‘value’멤버로 제공됩니다.

 

위 설명했듯이 input_event의 각각의 멤버 변수는 장치에 따라 의미하는 바가 다릅니다. 따라서 이벤트 디바이스 드라이버를 사용하는 사용자는 각 장치마다 input_event의 멤버 변수 값을 다르게 구별해야 하는 약간의 번거로움이 있는데 ixLib를 사용하시면 이런 문제가 깔끔히 해결됩니다.

   

 

 

ixLib에서는 장치에 따른 멤버변수의 의미를 분리하여 IE_XXX 이벤트 형식으로 전달합니다. IE_XXX 이벤트에 대해서는 앞으로 언급 하겠습니다.




ixLib개념.png

그림에 보듯이ixLib는 입력 장치에서 발생한 입출력 데이터를 ixLib Low 입력 처리하여 input_event을 직접 읽어 올 수 도 있습니다.

 

또한 입력 디바이스에서 발생하는 마우스 입력, 키보드 입력, 터치 스크린 같은 입력 데이터를 처리 할 수 있으며, exLib와 연동하여 입력 데이터를 가공하여 사용자가 보다 인지하기 쉬운 형태의 이벤트(IE_XXX)를 발생 시켜 줍니다.

 

IE_XXX 이벤트의 종류는 마우스, 키보드 터치 이벤트가 있습니다.

입력 디바이스 드라이버에 대한 보다 자세한 설명은 아래 주소의 내용을 참조 하세요.

http://forum.falinux.com/zbxe/?mid=lecture_tip&page=2&document_srl=504915&listStyle=&cpage=



1.1. ixLib 의 특징

l  쉬운 설치

별도의 다른 프로그램의 설치 가 필요 없고 , ixLib소스를 참조하는 것 만으로 사용 가능합니다.

 

l  입력 장치 (마우스, 터치 스크린, 키보드) 자동 검색 기능을 제공해 줍니다.

 

l  IxLib 단독으로 사용하여 입력 데이터을 전달합니다.

 

l  ixLibexLib와 연동하여 입력 데이터 이벤트를 IE_XXX 이벤트로 하여 사용자가 보다 쉽게 입력 이벤트 데이터를 처리 할 수 있게 해줍니다.

 

l  터치스크린 보정 기능이 있다.

 

l  gxLib와 연동하여 그래픽 처리 가능함

 

l  무료로 제공

Fsp21 또는 FALinux Forum회원이라면 누구나 개발에 동참 할 수 있으며, 회원이 아니더라도 exLib가 제시한 저작권만 유의한다면 무료로 사용 가능

 

 

ixLib는 입력 디바이스 드라이버에서 발생한 LOW데이터 제공해주며, LOW데이터를 가공하여, 사용자가 쉽게 사용할 수 있는 IE_xxx  이벤트를 발생시키는 역할을 수행하는 라이브러리 입니다.

 

여기서 말하는 입력 데이터는 마우스, 터치스크린, 키보드 등의 입력 장치에서 발생하는 입력을 말하며,

LOW데이터란 입력 디바이스에서 발생한 최초의 데이터 형태 (input_evnet구조체) 의 데이터를 말합니다.

 


1.2.  ixLib의 기능

l  자동 입력 장치 검색 후 exLib에 등록 기능

l  자동 mknod 기능

l  터치스크린 보정 기능

 

l  마우스, 터치스크린, Low 데이터를 처리기능

l  마우스, 터치스크린, 입력 데이터를 처리 후 IE_XXX 이벤트 발생 기능

l  마우스, 터치스크린, 입력 Low 데이터를 처리기능


 IE_KEY_XXX이벤트.png

l  키보드 Low 데이터를 처리기능

l  키보드 입력 데이터를 처리 후 IE_XXX 이벤트 발생 기능


IE_Mouse_XXX이벤트.png



1.3. ixLib의 라이센스
GPL V2 를 따릅니다.