將矩陣鍵盤加入到QT4中使用

2021-06-07 20:08:01 字數 2921 閱讀 7979

這個資料貌似不多,如果找的到貌似也不全,當然也可以將矩陣鍵盤做成外掛程式到qt中,我實施了一下,還是因為資料不全,自己資質也有限,沒能繼續做下去,能使我做下去的也只有這種要耗費大量精力的簡單重複勞動。下面開始講一下我如何將矩陣鍵盤加入到qt4中使用的。

首先就是改qt的原始檔,我改了/src/gui/embedded中的幾個檔案,他們分別是qkbddrive***ctory.cpp(這個檔案是用來載入你的鍵盤的),myqkbd_qws.h。myqkbd_qws.cpp(這兩個檔案分別是你自己寫的鍵盤介面的標頭檔案和原始檔,當然使用這個的前提是你的鍵盤驅動已經可以使用了)。

#ifndef qkbdtty_qws_h

#define qkbdtty_qws_h

#include #ifndef qt_no_qws_keyboard

#ifndef qt_no_qws_kbd_tty

class qwsmykbprivate;

class qwsmykeyboardhandler : public qwskeyboardhandler

;#endif // qt_no_qws_kbd_tty

#endif // qt_no_qws_keyboard

#endif // qkbdtty_qws_h

這個是標頭檔案。

#include "qkbdtty_qws.h"

#if !defined(qt_no_qws_keyboard) && !defined(qt_no_qws_kbd_tty)

#include #include #include #include #include #include #include #include #include class qwsmykbprivate : public qobject

private q_slots:

void readkeyboarddata();

private:

qwsmykeyboardhandler *m_handler;

qstring terminalname;

int buttonfd;

int kbdidx;

int kbdbufferlen;

unsigned char *kbdbuffer;

qsocketnotifier *notifier;

};qwsmykeyboardhandler::qwsmykeyboardhandler(const qstring &device)

: qwskeyboardhandler(device)

qwsmykeyboardhandler::~qwsmykeyboardhandler()

qwsmykbprivate::qwsmykbprivate(qwsmykeyboardhandler *h, const qstring &device)

: m_handler(h)

printf("open /dev/atao_button ok!\tbuttonfd=%d\n",buttonfd);

if ( buttonfd >= 0 )

kbdbufferlen = 80;

kbdbuffer = new unsigned char [kbdbufferlen];

kbdidx = 0;

}qwsmykbprivate::~ qwsmykbprivate()

delete notifier;

notifier = 0;

delete kbdbuffer;;

}void qwsmykbprivate::readkeyboarddata()

m_handler->processkeyevent( unicode, keycode, 0, true, false );

m_handler->processkeyevent( unicode, keycode, 0, false, false);

// m_handler->processkeyevent( 0, keycode, 0, true, false );

}#include "qkbdtty_qws.moc"

#endif // qt_no_qws_keyboard ||qt_no_qws_kbd_tty

這個是原始檔。

以上兩段**沒有什麼問題,主要是之前的作者把它直接覆蓋了qkbdtty_qws.h和qkbdtty_qws.h這兩個檔案,我沒有這樣做,自己新建了檔案,但是這樣就涉及到乙個問題:這個鍵盤要到qkbddrive***ctory.cpp下註冊才能使用,我仿照qkbdtty_qws.h和上面的參考資料註冊了一下。

#ifndef qt_no_mykbd

if ( driver == 「mykbd」 || driver.isempty() )(這段**看自己的程式)

return new mykbdhandler( device );

#endif

註冊完了可以開始make&make install了,但是前提是必須在make之前修改makefile檔案,因為增加了myqkbd_qws.h和myqkbd_qws.cpp檔案,必須增加它們到makefile裡面,當然由於在這我增加的檔案的地位和qkbdtty_qws.h及qkbdtty_qws.cpp地位相當,因此在有qkbdtty_qws.h和qkbdtty_qws.cpp的地方就模仿寫一下自己檔案的依賴就可以了。

最後就可以make&make install了。

在編qt程式的時候,主要用到libqtgui.so開頭的動態檔案,把他們放到開發板中去,標頭檔案用到的是include/qtgui中的檔案。我增加了myqkbd_qws.h檔案,在檔案中寫入了真正的該檔案的位址,這樣qt程式就可以找到這個標頭檔案了,那麼qt也就可以響應矩陣鍵盤了。

最最後還要在開發板上設定環境變數:export qws_keyboard=mykbd:/dev/mykeyboard

將Apache service加入到開機啟動中

最近vps有的時候會無故重啟,每次都要手動開啟apache太麻煩,加到啟動項裡好了 cp usr local apache2 bin apachectl etc rc.d init.d sudo vim etc rc.d init.d apachectl檔案頭加入以下內容 bin sh chkcon...

將redis服務加入到window服務

將redis服務加入到window服務 1 在cmd命令視窗下執行 redis server.exe service install redis.windows.conf loglevel verbose 示例 e wrcold520 redis 3.2.100 windows 32 redis r...

將python檔案加入到python環境變數中

在python中,如何把乙個python資料夾 及其包含的python檔案 加入到python環境變數中以方便其他python檔案呼叫呢。有兩種方法,下面對其進行簡單的介紹。1.import sys 匯入系統自帶的sys模組,然後將需要加入的資料夾的路徑進行追加或者插入,如下 import sys ...