Linux

在 Konsole keytab 中模擬 VT220 轉義序列

  • February 12, 2017

經過一點徒勞的黑客攻擊後,我意識到. . . 我需要正確映射 HHK 鍵盤,以便可以使用各種元鍵。就這樣開始了我下地獄的旅程。

> > Doug Palmer,一個不可靠的 XKB 配置指南 > > >

我正在嘗試將 Konsole 配置為在啟用應用程序鍵盤模式時(例如 by echoti smkx)從數字鍵盤發出 VT220 樣式的轉義序列。特別是,以下控制序列應該是所述條件下的輸出:

http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-VT220-Style-Function-Keys

必須知道,修改TERM環境變數與向 shell 謊報終端功能相同,通常應避免。簡單的設置TERM=xterm-vt220是不夠的,並且會導致意外的行為。

我有一個簡單但部分的解決方案。.keytabKonsole 允許以文件的形式配置其終端鍵綁定。以下添加是有效的,保存到.local/share/konsole/VT220.keytab

keyboard "VT220"
key 0+KeyPad+AppCursorKeys : "\EOp"
key 1+KeyPad+AppCursorKeys : "\EOq"
key 2+KeyPad+AppCursorKeys : "\EOr"
key 3+KeyPad+AppCursorKeys : "\EOs"
key 4+KeyPad+AppCursorKeys : "\EOt"
key 5+KeyPad+AppCursorKeys : "\EOu"
key 6+KeyPad+AppCursorKeys : "\EOv"
key 7+KeyPad+AppCursorKeys : "\EOw"
key 8+KeyPad+AppCursorKeys : "\EOx"
key 9+KeyPad+AppCursorKeys : "\EOy"
key ++KeyPad+AppCursorKeys : "\EOk"
key *+KeyPad+AppCursorKeys : "\EOj"
key .+KeyPad+AppCursorKeys : "\EOn"
key -+KeyPad+AppCursorKeys : "\EOm"
key Enter+KeyPad : "\EOM"

應用這些鍵綁定(以及可能存在的任何其他鍵綁定)後,將發出與啟用應用程序鍵盤模式和 NumLock 時konsole相同的控制序列。xterm這些序列對於期望 VT220 仿真的應用程序很有用,因為它們可以唯一地辨識來自數字鍵盤的擊鍵,從而可以將任意功能綁定到它們。

我的配置中缺少一個常用的鍵盤鍵:/(Qt::Key_Slash)。Konsole 圖形鍵綁定編輯器似乎無法辨識對該鍵的任何引用,無論是按名稱還是以文字表示。如果手動將其寫入.keytab文件,Konsole 將忽略它並且該行將不會出現在 GUI 編輯器中。這在我的鍵盤上留下了一個非常煩人的漏洞,其中一個鍵是頑固地無法程式的。

我寧願不xkb和朋友一起陷入困境;但當然,vanillaxterm開箱即用地完成了所有這些工作,這表明在這種情況下,沒有必要在如此低的級別上擺弄鍵綁定。相反,Konsole(或 QT)似乎在 X 之上做了一些獨特的和雪花的事情。

**問題:**是否可以在 Konsole 中將數字小鍵盤的鍵重新綁定/到不同的控制序列?或者,這是否是在不同級別(如 、 或 from )執行的東西terminfoxkbxterm-keys有效tmux的點?或許我瘋了?

其他勇敢的控制台指揮官的任何見解將不勝感激。

Konsole 忽略了這一點,因為它依賴於無法映射的硬編碼鍵列表

// 覆蓋以下任何快捷方式,因為
// 終端需要它們
int keyCode = keyEvent->key() | 修飾符;
開關(鍵碼){
// 列表取自 QLineEdit::event() 程式碼
案例 Qt::Key_Tab:
案例 Qt::Key_Delete:
案例 Qt::Key_Home:
案例 Qt::Key_End:
案例 Qt::Key_Backspace:
案例 Qt::Key_Left:
案例 Qt::Key_Right:
案例 Qt::Key_Slash:
案例 Qt::Key_Period:
案例 Qt::Key_Space:
鍵事件->接受();
返回真;
}
返回假;

引用自:https://unix.stackexchange.com/questions/344343