重映射自定义键盘

完成了俄罗斯方块,其中最为困难的是如何重映射自定义键盘,需要修改的是qt- 2.3.7 /src/kernel/qkeyboard_qws.cpp,在这里添加自定义键盘;参考代码如下

class QWSiMX1KeyboardHandler : public QWSKeyboardHandler

{

       Q_OBJECT

public:

       QWSiMX1KeyboardHandler();

       virtual ~QWSiMX1KeyboardHandler();

 

private slots:

       void readKeyboardData();

 

private:

       unsigned char iMX1_keyVal;

       QSocketNotifier *iMX1_notifier;

      

};

 

QWSiMX1KeyboardHandler::QWSiMX1KeyboardHandler()

       : QWSKeyboardHandler()

{

       iMX1_notifier= 0;

       kbdFD=open("/dev/i 2c -keypad", O_NDELAY);

       if (kbdFD>=0){

              iMX1_notifier= new QSocketNotifier( kbdFD, QSocketNotifier::Read, this );   

       }

       else{

              qWarning("Cannot open /dev/i 2c -keypad");

       }

 

       connect( iMX1_notifier, SIGNAL(activated(int)),this,

               SLOT(readKeyboardData()) );

 

       iMX1_keyVal= 0;

}

 

QWSiMX1KeyboardHandler::~QWSiMX1KeyboardHandler()

{

       if (kbdFD>=0){

              ::close(kbdFD);

              kbdFD=-1;

              delete iMX1_notifier;

              iMX1_notifier=0;

       }

}

 

void QWSiMX1KeyboardHandler::readKeyboardData()

{

       int keyCode= Qt::Key_unknown;

      

       read(kbdFD, &iMX1_keyVal, 1);

 

       //qDebug("iMX1_keyVal=%d", int(iMX1_keyVal));

      

       switch (iMX1_keyVal)

       {

              case 251: keyCode= Qt::Key_Up;     break;

              case 191: keyCode= Qt::Key_Down;     break;

              case 127: keyCode= Qt::Key_Left;     break;

              case 223: keyCode= Qt::Key_Right;     break;

              case 247: keyCode= Qt::Key_F1;     break;

              case 253: keyCode= Qt::Key_F2;     break;

              case 255: break;

              default: qWarning("unrecognised iMX1_keyVal %d", int(iMX1_keyVal));

       }

       processKeyEvent( 0, keyCode, 0, true, false );

}

包括,对自定义键盘类的申明,构造函数,析构函数和readKeyboardData()函数。

还需要在QWSKeyboardHandler *QWSServer::newKeyboardHandler( const QString &spec )函数中添加:handler= new QWSiMX1KeyboardHandler();实例化自定义的键盘类。

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值