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