2
我從GNU getline文檔中讀到它能夠將某些回調函數綁定到某些鍵。我已經知道如何使用rl_bind_key
函數將動作綁定到TAB密鑰。GNU readline和鍵綁定
但我怎麼可以用它來綁定一些動作以下鍵?: CTRL + TAB ,ESC,暫停/BREAK
我從GNU getline文檔中讀到它能夠將某些回調函數綁定到某些鍵。我已經知道如何使用rl_bind_key
函數將動作綁定到TAB密鑰。GNU readline和鍵綁定
但我怎麼可以用它來綁定一些動作以下鍵?: CTRL + TAB ,ESC,暫停/BREAK
#include <stdio.h>
#include <readline/readline.h>
int my_cool_readline_func (int count, int key) {
printf ("key pressed: %d\n", key);
rl_on_new_line();
return 0;
}
int main(void) {
rl_command_func_t my_cool_readline_func;
rl_bind_key ('\t', my_cool_readline_func);
rl_bind_key (27, my_cool_readline_func); /* ascii code for ESC */
rl_bind_keyseq ("\\C-a", my_cool_readline_func);
while (1) {
char *line = readline ("rl> ");
}
}
如果是運行GNU系統(或其一個變體)然後運行:
info readline "command line editing" "introduction" # notation convention
info readline "programming" "readline" "biding" # biding functions
不幸的是,它不像我所期望的那樣工作。不管我是否按TAB或Ctrl + TAB(或其他與TAB的組合),它顯示了鉤子函數「按下鍵:9」的輸出。還有一些關於Esc鍵的奇怪之處:我需要按兩次,因爲第一次按鍵不會使任何東西可見。 暫停/休息不顯示任何內容。和功能鍵F1 .. F12 給相同的鍵代碼Esc鍵(255),但additionaly插入在命令行一些亂碼。這就是我問這個問題的原因。 – SasQ
我沒有同樣的問題,您是否找到解決方案SasQ? – goji