From a32ca38aa43c184774bcd655b2a76fd20d054d3d Mon Sep 17 00:00:00 2001 From: Rene Richarz Date: Wed, 6 May 2026 12:14:34 +0200 Subject: [PATCH] Changed keyboard keys to new definition --- docs/manual.docx | Bin 1269021 -> 1269209 bytes docs/quickstart.md | 39 ++++++++++++++++- src/main.c | 102 +++++++++++++++++++-------------------------- src/main.h | 1 + src/tube.c | 10 ++++- 5 files changed, 90 insertions(+), 62 deletions(-) diff --git a/docs/manual.docx b/docs/manual.docx index 16ac025eb5461ce31286280aabad255cf76a22c4..140736a318c6e62de3ee185f8ef3d6b7983f2c8c 100644 GIT binary patch delta 31527 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�xPhlo`FZY#?@L7OjVxIsa0IVmwN)!k~qW0 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

@ndjX0+H?Yi@_D%H24am8;NHbuBv49zP4 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 K*Zgh@(EkHjruR$$ diff --git a/docs/quickstart.md b/docs/quickstart.md index 9191322..fb18e8e 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,6 +1,6 @@ # Tek4010 Quick Start -This is a Tektronix 4010 graphics terminal emulator. +This is a Tektronix 4010/4014 graphics terminal emulator. It is not a full VT100/xterm terminal. Basic usage: @@ -38,6 +38,43 @@ detects slow graphics response. This may take a while. --- +## Keyboard + +The following keys are handled locally by tek4010 and are not passed +to the child process or remote system. + +Clear screen + + Mac: Fn-Left Arrow + Linux: Home + Windows: Home + +Break + + Mac: Left Option-B + Linux: Alt-B + Windows: Alt-B + +Quit + + Window close button + Fullscreen mode: Left Option-Q / Alt-Q + +APL mode (only if APL support enabled) + + Left Option-N switch to APL character set + Left Option-O switch back to normal character set + +History convenience + + Up Arrow previous command + Down Arrow next command + +All normal ASCII keys and control characters (Ctrl-C, Ctrl-D, etc.) +are passed through unchanged. + +--- + ## Options By default, the screen clears automatically when the bottom is reached. diff --git a/src/main.c b/src/main.c index 9daf855..fdd97b9 100755 --- a/src/main.c +++ b/src/main.c @@ -99,6 +99,12 @@ long now_msec(void) return tv.tv_sec * 1000L + tv.tv_usec / 1000L; } +void main_finished() +{ + printf("tek4010 - finished"); + gtk_window_set_title(GTK_WINDOW(window), "tek4010 - finished"); +} + void check_graphics_response(long lag) { static int slowCount = 0; @@ -249,13 +255,11 @@ static void do_drawing(cairo_t *cr, GtkWidget *widget) static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { - int ch; + int ch; + // printf("key pressed, state =%04X, keyval=%04X, isGinMode = %d\r\n", event->state, event->keyval, isGinMode); - if ((event->keyval == 0xFF50) || // "home" key - (event->keyval == 0xFF55) || // "page up" key - (event->keyval == 0xFF56)) // "page down" key - { + if (event->keyval == 0xFF50) { // "home" key, use fn on Mac tube_doClearPersistent = 1; gtk_widget_queue_draw(widget); return; @@ -263,55 +267,46 @@ static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_da if (event->keyval == 0x8BF) { // "option b" sends break code to target if (putKeys) { - // printf("sending break code\n"); - if (argPty) - tcsendbreak(fileno(putKeys), 0); - else { - putc(0xFF, putKeys); - putc(0xF3, putKeys); - } - fflush(putKeys); + // printf("sending break code\n"); + tcsendbreak(fileno(putKeys), 0); } } + + // alt/option keys: local tek4010 functions + else if (event->state & GDK_MOD1_MASK) { + + if ((event->keyval == 0x0071) || // Alt-Q + (event->keyval == 0x13BD)) { // Mac left Option-Q + on_quit_event(); + return; + } + else if (argAPL && + ((event->keyval == 0x006E) || // Alt-N + (event->keyval == 0x02DC))) { // Mac left Option-N + aplMode = 1; + return; + } + else if (argAPL && + ((event->keyval == 0x006F) || // Alt-O + (event->keyval == 0x00F8))) { // Mac left Option-O + aplMode = 0; + return; + } + else if ((event->keyval == 0x0062) || // Alt-B + (event->keyval == 0x222B)) { // Mac left Option-B + tcsendbreak(fileno(putKeys), 0); + return; + } +} // control keys else if ((event->keyval >= 0xFF00) && (event->keyval <= 0xFF1F)) ch = event->keyval & 0x1F; - else if (event->state & GDK_CONTROL_MASK) { - if ((event->keyval == 0xFF51) || // "left arrow" key - (event->keyval == 0xFF52)) { // "up arrow" key - tube_doClearPersistent = 1; - gtk_widget_queue_draw(widget); - return; - } - else if (event->keyval == 0x0077) { // "w" makes screendump - system("scrot --focussed"); - return; - } - else if (event->keyval == 0x0071) { // "q" quits tek4010 - on_quit_event(); - return; - } - else if (argAPL && (event->keyval == 0x006E)) { // "n" switch to alternative character set - aplMode = 1; - // printf("Setting APL mode to 1 from keyboard\n"); - return; - } - else if (argAPL && (event->keyval == 0x006F)) { // "o" switch to normalcharacter set - aplMode = 0; - // printf("Setting APL mode to 0 from keyboard\n"); - return; - } - else - ch = event->keyval & 0x1F; - } - else if (event->keyval == 0xFF52) ch = 16; // arrow up for history up - else if (event->keyval == 0xFF54) ch = 14; // arrow down for history down - - else if ((event->state & GDK_MOD1_MASK) && (aplMode)) { // alt key - // printf("alt key, ch = %4X\n", event->keyval & 0x7F); - ch = (event->keyval & 0x7F) + 128; - } + + + // Up/Down arrows generate Ctrl-P/Ctrl-N for simple shell history navigation. + else if (event->keyval == 0xFF52) ch = 16; // Up -> Ctrl-P + else if (event->keyval == 0xFF54) ch = 14; // Down -> Ctrl-N // normal keys else if ((event->keyval >= 0x0020) && (event->keyval <= 0x007F)) @@ -338,17 +333,6 @@ static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_da } else { -/* if (ch == '\r') - printf("KEY \n"); - else if (ch == '\n') - printf("KEY \n"); - else if ((ch >= 32) && (ch < 127)) - printf("KEY %c\n", ch); - else - printf("KEY <%02X>\n", ch & 0xFF); - fflush(stdout); -*/ - putc(ch, putKeys); fflush(putKeys); } diff --git a/src/main.h b/src/main.h index 8f9fefb..0aa54ad 100644 --- a/src/main.h +++ b/src/main.h @@ -14,6 +14,7 @@ void tek4010_clicked(int x, int y); int tube_on_timer_event(); int tube_clicked(int button, int x, int y); void tube_quit(); +void main_finished(); void ards_draw(cairo_t *cr, cairo_t *cr2, int first); diff --git a/src/tube.c b/src/tube.c index f760554..b47cbf1 100755 --- a/src/tube.c +++ b/src/tube.c @@ -468,10 +468,10 @@ void tube_init(int argc, char* argv[]) exit(1); } else if (pid == 0) { - setenv("TERM", "vt100", 1); + setenv("TERM", "tek4014", 1); if (argPty) { - setenv("PS1", "tek4010$ ", 1); + // setenv("PS1", "tek4010$ ", 1); execl("/bin/sh", "sh", "-i", (char *) NULL); } else { @@ -545,6 +545,7 @@ int tube_on_timer_event() // is child process still running? + static int childFinishedShown = 0; int status; int childExited = 0; @@ -560,6 +561,11 @@ int tube_on_timer_event() printf("Process has been terminated\n"); exit(0); } + + if (!childFinishedShown) { + main_finished(); + childFinishedShown = 1; + } if (argWait) { if (firstWait == 0)