aboutsummaryrefslogtreecommitdiff
path: root/vietnamese/vnterm/files/patch-menu.c
blob: f4cb2a2da45712374103bf1e2ebff241ec937e28 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
--- menu.c.orig	Mon Aug 21 08:47:47 2000
+++ menu.c	Sat Feb 10 05:32:41 2001
@@ -33,6 +33,10 @@
 #include <stdio.h>
 #include <signal.h>
 
+#ifndef NO_VIETNAMESE
+#include "vnvars.h"
+#endif /* NO_VIETNAMESE */
+
 extern void FindFontSelection();
 
 Arg menuArgs[2] = {{ XtNleftBitmap, (XtArgVal) 0 },
@@ -57,12 +61,20 @@
     do_tektextlarge(), do_tektext2(), do_tektext3(), do_tektextsmall(), 
     do_tekpage(), do_tekreset(), do_tekcopy(), do_vtshow(), do_vtmode(), 
     do_tekhide(), do_vtfont();
+#ifndef NO_VIETNAMESE
+static void do_vnfilterkeyboard(), do_vnfilterscreen();
+#endif /* NO_VIETNAMESE */
 
 
 /*
  * The order entries MUST match the values given in menu.h
  */
 MenuEntry mainMenuEntries[] = {
+#ifndef NO_VIETNAMESE
+    { "Enable Vietnamese keys",do_vnfilterkeyboard, NULL },   /*  0 */
+    { "Use Vietnamese screen",        do_vnfilterscreen, NULL },      /*  1 */
+    { "line3",                NULL, NULL },                   /*  2 */
+#endif /* NO_VIETNAMESE */
     { "securekbd",	do_securekbd, NULL },		/*  0 */
     { "allowsends",	do_allowsends, NULL },		/*  1 */
 #ifdef ALLOWLOGGING
@@ -80,6 +92,11 @@
     { "quit",		do_quit, NULL }};		/* 12 */
 
 MenuEntry vtMenuEntries[] = {
+#ifndef NO_VIETNAMESE
+    { "Enable Vietnamese keys",do_vnfilterkeyboard, NULL },     /*  0 */
+    { "Use Vietnamese screen",  do_vnfilterscreen, NULL },      /*  1 */
+    { "line3",          NULL, NULL },                   /*  2 */
+#endif /* NO_VIETNAMESE */
     { "scrollbar",	do_scrollbar, NULL },		/*  0 */
     { "jumpscroll",	do_jumpscroll, NULL },		/*  1 */
     { "reversevideo",	do_reversevideo, NULL },	/*  2 */
@@ -160,6 +177,10 @@
     Cardinal *param_count;      /* 0 or 1 */
 {
     TScreen *screen = &term->screen;
+#ifndef NO_VIETNAMESE
+	extern Boolean    vn_filter_keyboard;
+	extern Boolean    vn_filter_screen;
+#endif
 
     if (*param_count != 1) {
 	Bell(XkbBI_MinorError,0);
@@ -209,6 +230,10 @@
 	    update_cursesemul();
 	    update_visualbell();
 	    update_marginbell();
+#ifndef NO_VIETNAMESE
+	update_vnfilterkeyboard();
+	update_vnfilterscreen();
+#endif
 #ifndef NO_ACTIVE_ICON
 	    if (!screen->fnt_icon || !screen->iconVwin.window) {
 		set_sensitivity (screen->vtmenu,
@@ -1277,3 +1302,42 @@
 }
 
 
+#ifndef NO_VIETNAMESE
+
+static void do_vnfilterkeyboard (gw, closure, data)
+    Widget gw;
+    caddr_t closure, data;
+{
+    unsigned char     buf[5];
+    int                       count;
+
+    vn_filter_keyboard = !vn_filter_keyboard;
+    if (vn_filter_keyboard) {
+        vn_keyboard_id = vk_init(VK_ST_VIETNAMESE, VK_DEFAULT_ESC, vn_erase_char);
+    } else {
+      vk_end(vn_keyboard_id, buf, &count);
+    }
+    _Set_Vn_Title(VK_ST_VIETNAMESE);
+    update_vnfilterkeyboard();
+}
+
+
+static void do_vnfilterscreen (gw, closure, data)
+    Widget gw;
+    caddr_t closure, data;
+{
+    unsigned char     buf[5];
+    int                       count;
+
+    vn_filter_screen = !vn_filter_screen;
+    if (vn_filter_screen) {
+        vn_screen_id = vk_init(VK_ST_VIETNAMESE, VK_DEFAULT_ESC, vn_erase_char);
+      /* set it in batch mode so we don't get backspaces in immediate mode */
+      vk_set(vn_screen_id, 1, VK_SET_BATCH);
+    } else {
+      vk_end(vn_screen_id, buf, &count);
+    }
+    update_vnfilterscreen();
+}
+
+#endif /* NO_VIETNAMESE */