Tôi đang học lập trình trong C và muốn có thể nhập các ký tự vào thiết bị đầu cuối trong khi mã của tôi đang chạy mà không cần nhấn trả lại. Chương trình của tôi hoạt động, tuy nhiên khi tôi gọi initscr()
, màn hình sẽ bị xóa - ngay cả sau khi gọi filter()
. Tài liệu cho số filter
đề nghị bạn nên tắt thanh toán bù trừ - tuy nhiên đây không phải là trường hợp của tôi.Làm thế nào để sử dụng getch từ những lời nguyền mà không cần xóa màn hình?
#include <stdio.h>
#include <curses.h>
#include <term.h>
int main(void) {
int ch;
filter();
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
while((ch = getch()) != EOF);
endwin();
return 0;
}
Tại sao mã trên vẫn xóa màn hình và có thể làm gì để khắc phục?
Tôi đang sử dụng Debian Lenny (ổn định) và gnome-terminal nếu có ích.
Đối PDCurses bạn có thể thiết lập các biến môi trường PDC_PRESERVE_SCREEN hoặc PDC_RESTORE_SCREEN với bất kỳ giá trị: từ file LỊCH SỬ: – Brandin
PDC_PRESERVE_SCREEN Nếu biến môi trường này được đặt, PDCurses sẽ không xóa màn hình thành màu trắng mặc định trên nền đen khi khởi động. Điều này cho phép bạn che phủ một cửa sổ phía trên cùng của nền màn hình hiện tại. PDC_RESTORE_SCREEN Nếu biến môi trường này được đặt, PDCurses sẽ chụp một bản sao của nội dung của màn hình tại thời điểm PDCurses được bắt đầu; initscr(), và khi endwin() được gọi, màn hình sẽ được khôi phục. – Brandin