[英]How to make the cursor behave like a text editor/terminal in curses/C?
例如,假設我有字符串“Hinge” - 我希望能夠將光標移動到開頭,點擊del刪除“H”,然后插入“B”,將光標前面的所有內容向前推,創建單詞“Binge”,而不是覆蓋默認行為“i”。 我可以使用標准的addch()函數嗎?
此外,即使我可以在屏幕上正確打印它,這似乎是一個過於復雜的問題,讓它對應一個緩沖區。 這似乎是一項常見的任務,但我想不出一種非黑客的做法。
這是我目前處理基本輸入的一個例子。
if (isprint(key)) {
if (ctx->pos != sizeof(ctx->line)-1) {
mvwaddch(self->window, y, x, key);
ctx->line[ctx->pos++] = key;
ctx->line[ctx->pos] = '\0';
}
}
您可以使用GNU readline庫來完成此操作,而不是直接編寫為curses。 這是一個簡單的程序:
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main () {
char *s = readline("Type something: ");
printf("You typed: %s\n", s);
return 0;
}
在我的系統上,我用gcc prog.c -lreadline -ltermcap
編譯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.