Qt Embedded 키보드 구동 분석(아래)

키보드 구동 플러그인은 도대체 어떻게 작동합니까?어떻게 해야만 그것으로 하여금 판의 버튼 메시지에 응답하게 할 수 있습니까?이러한 의문들은 완전한 키보드 처리 플러그인을 분석해야만 대답할 수 있다. 다음은 가장 기본적인 pc101이라는 키보드 플러그인이 어떻게 실현되었는지 살펴보자.우선, 플러그인에 대해 말하자면 먼저 하나의 플러그인의 구조를 실현해야 한다. 이 프레임워크의 코드는Qt의 플러그인 규범을 따라야 하고 키보드 구동 플러그인의 특징에 부합해야 한다.어려워요?허허, 사실은 매우 간단하다. 단지 두 함수만이 스스로 실현해야 한다.
관련된 코드:
키보드plugin 프레임워크:src/plugins/kbddrivers/usb/main.cpp
키보드 driver handler의 실현: src/gui/embedded/qkbdusbqws.cpp
플러그인 프레임워크main.cpp
4
class QUsbKbdDriver : public QKbdDriverPlugin  
{
public:  
    QUsbKbdDriver();  
    QStringList keys() const;  
    QWSKeyboardHandler* create(const QString &driver, const QString &device);  
};
keys는 현재driver 플러그인의 키 값을 되돌려줍니다. 다른 플러그인의 키 값과 충돌하지 않으면 됩니다.create는 당신이 실현한 QWSKeyboardHandler 파생류의 실례를 되돌려줍니다.
키보드 처리 실례 구현 qkbdusbqws.h  
4
class QWSUsbKeyboardHandler : public QWSPC101KeyboardHandler  
{  
public:  
    QWSUsbKeyboardHandler(const QString&);  
    virtual ~QWSUsbKeyboardHandler();  
private:  
    QWSUsbKbPrivate *d;  
};
코드로 볼 때 이Handler의 클래스는QWSKeyboardHandler의 기본 클래스에서 파생되어야 하는 것 외에 특별한 요구가 없다.그러나 이에 대응하는 cpp 파일은 사실 많은 기능을 실현했고 편폭 관계는 전체 코드를 붙일 수 없다. 이에 따라 일반적인 키보드 드라이브 플러그인 절차를 다음과 같이 정리한다.
1. 키보드 장치를 열고 초기화 - 일반적으로 오픈을 호출하고 장치 구동에 의해 결정된다
2. 키보드 이벤트 모니터링 - 일반적으로 QSocketNotifier로 키보드 fd 모니터링
3. 키보드 이벤트가 발생할 때 키보드 이벤트 정보를 읽는다. 예를 들어 누르거나 들어올리는 등이다. 보통read를 호출하거나 ioctl을 호출하는 것은 키보드 드라이브에 달려 있다.
4. 키보드 이벤트 정보를 얻은 후 키 값, 아래 등 정보를 Qt 내부 키보드 이벤트 형식으로 번역하고 프로세스 Key Event를 호출하여 이벤트를 나누어 줍니다.
5. 분석 함수 장치 닫는 것을 잊지 마라
90% 이상의 Keyboard Driver Handler는 이러한 절차를 따라 키보드를 처리하는데, 만약 우리가 자신의 플러그인을 쓰려고 한다면 틀림없이 이렇게 써도 틀림없다.구체적인 코드는 아마도 예를 좀 더 보아야 할 것이다.

좋은 웹페이지 즐겨찾기