2008年12月28日 星期日

[qt terminal] 方向鍵的支援

找了好久, 終於找到方向鍵要送出什麼 control sequence code。

http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzaiw/rzaiwtceditingkeypad.htm

http://wiki.yobi.be/wiki/Bash_Tips

從以上兩個聯結的資料可以看到,

*CSRUP VT100 or VT220 7-bit Cursor Key Mode Reset X'1B5B41' Cursor-up key
*CSRDOWN VT100 or VT220 7-bit Cursor Key Mode Reset X'1B5B42' Cursor-down key
ESC[rowsA          Cursor up
ESC[rowsB Cursor down
ESC[colsC Cursor right
ESC[colsD Cursor left
我修改了
void Vt102Emulation::sendKeyEvent( QKeyEvent* event )

加入判斷方向上下鍵並送出對應的 termainl sequence code.

#if 1
switch (event->key())
{
case Qt::Key_Up:
{
char k_text[]={0x1b, 0x5b, 0x41};

sendData(k_text, sizeof(k_text)/sizeof(char) );
break;
}
case Qt::Key_Down:
{
char k_text[]={0x1b, 0x5b, 0x42};

sendData(k_text, sizeof(k_text)/sizeof(char) );
break;
}
default:
{
sendData( textToSend.constData() , textToSend.length() );
break;
}
}

#endif


目前可以使用 bash 的 history 功能了。
我查了 kde 4.1 的 kdebase-4.1.3 konsole code,
還是不知道如何處理這問題。

這算是硬改改成我要的功能, 先會動再說吧!

這是 ACSII TABLE

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。