• 4781阅读
  • 0回复

qte运行为什么会出现segmentation fault? [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-09
— 本帖被 XChinux 执行加亮操作(2010-09-11) —
qte运行为什么会出现segmentation fault?


昨天在我的板子上接盘接口总算移植的差不多了,可是运行的时候出现segmentation fault这样的错误
按键键值都对上了,可是按键还没有反映,具体操作如下:
export QTDIR=/OPT/QT
export QTEDIR=$QTDIR
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./amr -qws
键盘可以正常启动,但按下第一个按键之后就会出现segmentation fault的错误提示如下:
Creating mouse: Auto
call openKeyboard!
keyboards
no define QT_NO_STRINGLIST!
create keyboard drive
drive is usb
fd is 11           //在这里按下按键就出现下面的提示
n is 10
event.dummy1 is 1fb7
event.dummy2 is 7d8c0
event.type is 1
event.code is 45
event.value is 1
key_numlock is 4133
Segmentation fault
[root@hengda bin]#  



怀疑是代码的问题,现在我把qkbdusb_qws.cpp我修改过的代码贴出来,请各位帮忙看一下,谢谢:
struct Myinputevent {

    unsigned int dummy1;
    unsigned int dummy2;
    unsigned short type;
    unsigned short code;
    unsigned int value;

};

void QWSUsbKbPrivate::readKeyboardData()
{
    Myinputevent event;
    int n = read(fd, &event, sizeof(Myinputevent) );
    qDebug("n is %x",n);
    if ( n != 16 )
            return;
        qDebug("event.dummy1 is %x",event.dummy1);
        qDebug("event.dummy2 is %x",event.dummy2);
        qDebug("event.type is %x",event.type);
        qDebug("event.code is %x",event.code);
        qDebug("event.value is %x",event.value);
    int key=event.code;
    int keycode=Qt::Key_unknown;
    switch(key & 0x00ff){
        case 0x60:
            keycode=Qt::Key_Enter;
            qDebug("key_enter is %d",keycode);
            break;
        case 0x45:
            keycode=Qt::Key_NumLock;
            qDebug("key_numlock is %d",keycode);
            break;
        case 0x37:
            keycode=Qt::Key_Down;
            qDebug("key_down is %d",keycode);    
            break;
        case 0x4e:
            keycode=Qt::Key_Plus;
            qDebug("key_plus is %d",keycode);    
            break;
        case 0x4a:
            keycode=Qt::Key_Tab;
            qDebug("key_tab is %d",keycode);    
            break;
        case 0x53:
            keycode=Qt::Key_Period;
            qDebug("key_period is %d",keycode);    
            break;
        case 0x62:
            keycode=Qt::Key_Up;
            qDebug("key_up is %d",keycode);    
            break;        
        case 0x52:
            keycode=Qt::Key_0;
            qDebug("key_0 is %d",keycode);    
            break;
        case 0x4f:
            keycode=Qt::Key_1;
            qDebug("key_1 is %d",keycode);    
            break;
        case 0x50:
            keycode=Qt::Key_2;
            qDebug("key_2 is %d",keycode);    
            break;                
        case 0x51:
            keycode=Qt::Key_3;
            qDebug("key_3 is %d",keycode);    
            break;    
        case 0x4b:
            keycode=Qt::Key_4;
            qDebug("key_4 is %d",keycode);    
            break;
        case 0x4c:
            keycode=Qt::Key_5;
            qDebug("key_5 is %d",keycode);    
            break;        
        case 0x4d:
            keycode=Qt::Key_6;
            qDebug("key_6 is %d",keycode);    
            break;    
        case 0x47:
            keycode=Qt::Key_7;
                qDebug("key_7 is %d",keycode);
            break;
        case 0x48:
            keycode=Qt::Key_8;
            qDebug("key_8 is %d",keycode);    
            break;    
        case 0x49:
            keycode=Qt::Key_9;
            qDebug("key_9 is %d",keycode);    
            break;    
        default:
            keycode=key;
            qDebug("key is %d",keycode);
            break;            
    }
    handler->processKeyEvent( 0, keycode, 0, true, false );
}

执行之后各值如下:
[root@hengda bin]# ls
amr
[root@hengda bin]# ./amr -qws
Creating mouse: Auto
call openKeyboard!
keyboards
no define QT_NO_STRINGLIST!
create keyboard drive
drive is usb
fd is 11           //在这里按下按键就出现下面的提示
n is 10
event.dummy1 is 1fb7
event.dummy2 is 7d8c0
event.type is 1
event.code is 45
event.value is 1
key_numlock is 4133
Segmentation fault
[root@hengda bin]#  

我有点不太明白,按键值是怎么读到event里面去的,
其中event.dummy1 is 1fb7
event.dummy2 is 7d8c0
event.type is 1
event.code is 45
event.value is 1
这个结构体里面的event.code是键值,那么其他结构变量各代表什么意思呢?
请那位大哥帮忙看一下是不是有问题?
快速回复
限100 字节
 
上一个 下一个