1
2 static char rcsid[] = "@(#)$Id: softkeys.c,v 1.3 1996/03/14 17:29:57 wfp5p Exp $";
3
4 /*******************************************************************************
5 * The Elm Mail System - $Revision: 1.3 $ $State: Exp $
6 *
7 * Copyright (c) 1988-1995 USENET Community Trust
8 * Copyright (c) 1986,1987 Dave Taylor
9 *******************************************************************************
10 * Bug reports, patches, comments, suggestions should be sent to:
11 *
12 * Bill Pemberton, Elm Coordinator
13 * flash@virginia.edu
14 *
15 *******************************************************************************
16 * $Log: softkeys.c,v $
17 * Revision 1.3 1996/03/14 17:29:57 wfp5p
18 * Alpha 9
19 *
20 * Revision 1.2 1995/09/29 17:42:33 wfp5p
21 * Alpha 8 (Chip's big changes)
22 *
23 * Revision 1.1.1.1 1995/04/19 20:38:39 wfp5p
24 * Initial import of elm 2.4 PL0 as base for elm 2.5.
25 *
26 *******************************************************************************
27 */
28
29 #include "elm_defs.h"
30 #include "elm_globals.h"
31 #include "s_elm.h"
32
33 #define f_key1 1
34 #define f_key2 2
35 #define f_key3 3
36 #define f_key4 4
37 #define f_key5 5
38 #define f_key6 6
39 #define f_key7 7
40 #define f_key8 8
41
42
define_key(key,display,send)43 static void define_key(key, display, send)
44 int key;
45 char *display, *send;
46 {
47 fprintf(stderr, "%c&f%dk%dd%dL%s%s", ESCAPE, key,
48 strlen(display), strlen(send), display, send);
49 }
50
clear_key(key)51 static void clear_key(key)
52 {
53 define_key(key, " ", "");
54 }
55
56
define_softkeys(sel)57 PUBLIC int define_softkeys(sel)
58 int sel;
59 {
60 static int prev_selection = -1;
61 int ret_selection;
62
63 if (!hp_softkeys)
64 return prev_selection;
65
66 switch (sel) {
67
68 case SOFTKEYS_MAIN:
69 define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyF1,
70 " Display Msg"), "\r");
71 define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyF2,
72 " Mail Msg"), "m");
73 define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyF3,
74 " Reply to Msg"), "r");
75 if (user_level == 0) {
76 define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKey0F4,
77 " Save Msg"), "s");
78 define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKey0F5
79 ," Delete Msg"), "d");
80 define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKey0F6,
81 "Undelete Msg"), "u");
82 } else {
83 define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKey1F4,
84 " Change Folder"), "c");
85 define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKey1F5,
86 " Save Msg"), "s");
87 define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKey1F6,
88 " Delete/Undelete"), "^");
89 }
90 define_key(f_key7, catgets(elm_msg_cat, ElmSet, ElmKeyF7,
91 " Print Msg"), "p");
92 define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyF8,
93 " Quit ELM"), "q");
94
95 break;
96
97 case SOFTKEYS_ALIAS:
98 define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyAF1,
99 " Alias Current"), "a");
100 define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyAF2,
101 " Check Person"), "p");
102 define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyAF3,
103 " Check System"), "s");
104 define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyAF4,
105 " Make Alias"), "m");
106 clear_key(f_key5);
107 clear_key(f_key6);
108 clear_key(f_key7);
109 define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyAF8,
110 " Return to ELM"), "r");
111
112 case SOFTKEYS_YESNO:
113 define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyYF1,
114 " Yes"), "y");
115 clear_key(f_key2);
116 clear_key(f_key3);
117 clear_key(f_key4);
118 clear_key(f_key5);
119 clear_key(f_key6);
120 clear_key(f_key7);
121 define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyYF8,
122 " No"), "n");
123
124 case SOFTKEYS_READ:
125 define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyRF1,
126 " Next Page "), " ");
127 clear_key(f_key2);
128 define_key(f_key3, catgets(elm_msg_cat, ElmSet, ElmKeyRF3,
129 " Next Msg "), "j");
130 define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyRF4,
131 " Prev Msg "), "k");
132 define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKeyRF5,
133 " Reply to Msg "), "r");
134 define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKeyRF6,
135 " Delete Msg "), "d");
136 define_key(f_key7, catgets(elm_msg_cat, ElmSet, ElmKeyRF7,
137 " Send Msg "), "m");
138 define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyRF8,
139 " Return to ELM "), "q");
140
141 case SOFTKEYS_CHANGE:
142 define_key(f_key1, catgets(elm_msg_cat, ElmSet, ElmKeyCF1,
143 " Mail Directry"), "=/");
144 define_key(f_key2, catgets(elm_msg_cat, ElmSet, ElmKeyCF2,
145 " Home Directry"), "~/");
146 clear_key(f_key3);
147 define_key(f_key4, catgets(elm_msg_cat, ElmSet, ElmKeyCF4,
148 "Incoming Mailbox"), "!\r");
149 define_key(f_key5, catgets(elm_msg_cat, ElmSet, ElmKeyCF5,
150 "\"Received\" Folder"), ">\r");
151 define_key(f_key6, catgets(elm_msg_cat, ElmSet, ElmKeyCF6,
152 "\"Sent\" Folder "), "<\r");
153 clear_key(f_key7);
154 define_key(f_key8, catgets(elm_msg_cat, ElmSet, ElmKeyCF8,
155 " Cancel"), "\n");
156
157 }
158
159 softkeys_on();
160 ret_selection = prev_selection;
161 prev_selection = sel;
162 return ret_selection;
163 }
164
softkeys_on()165 PUBLIC void softkeys_on()
166 {
167 /* enable (esc&s1A) turn on softkeys (esc&jB) and turn on MENU
168 and USER/SYSTEM options. */
169
170 if (hp_softkeys) {
171 fprintf(stderr, "%c&s1A%c&jB%c&jR", ESCAPE, ESCAPE, ESCAPE);
172 fflush(stderr);
173 }
174 }
175
softkeys_off()176 PUBLIC void softkeys_off()
177 {
178 /* turn off softkeys (esc&j@) */
179
180 if (hp_softkeys) {
181 fprintf(stderr, "%c&s0A%c&j@", ESCAPE, ESCAPE);
182 fflush(stderr);
183 }
184 }
185
186