File: mutekeys.sl

package info (click to toggle)
jed 0.99.16-5
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 4,312 kB
  • ctags: 4,736
  • sloc: ansic: 36,879; sh: 8,660; makefile: 379
file content (141 lines) | stat: -rw-r--r-- 3,154 bytes parent folder | download | duplicates (4)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
% Mute (Dead or accent) keys for JED.
%
%   To use this package, put a line like the following in your jed.rc
%
%    mute_set_mute_keys ("`'^");
%
%   Here, the keys `, ', and ^ will be mute keys.  That is, pressing one of
%   these followed by the character to accent will insert an accented
%   character in the buffer.   This affects only the local keymap.
%
%   Valid Mute keys are:
%      ^, ~, ', `, \d168 (ISO Diaeresis), \d180 (ISO Acute), and ".

define mute_insert_accent (ok_chars, maps_to)
{
   variable pos, ch;

   ch = maps_to[0];
   !if (input_pending (10))
     {
	vmessage ("%c-", ch);
	update_sans_update_hook (0);
     }

   ch = getkey ();
   pos = is_substr (ok_chars, char (ch));
   if (pos)
     {
	ch = maps_to[--pos, pos];
	insert_char (ch);
     }
   else
     {
	insert_char (maps_to[0]);
	ungetkey (ch);
     }
}

define mute_set_mute_keys (str)
{
   variable i;

   _for (0, strlen(str) - 1, 1)
     {
	i = ();
	switch (str[i])
	  { case '"':	local_setkey ("mute_keymap_34", "\""); }
	  { case '\'':	local_setkey ("mute_keymap_39", "'"); }
	  { case '^':	local_setkey ("mute_keymap_94", "^"); }
	  { case '`':	local_setkey ("mute_keymap_96", "`"); }
	  { case '~':	local_setkey ("mute_keymap_126", "~"); }
	%% ISOLatin 1 diaeresis would be better, if included in keyboard
	  { case '\d168': local_setkey ("mute_keymap_168", "\d168"); }
	%% Asciitilde would be better to acute accent, if included in keyboard
	  { case '\d180': local_setkey ("mute_keymap_180", "\d180"); }
     }
}

define mute_keymap_39 () % ' map
{
#ifdef IBMPC_SYSTEM
   "'Eeaiou";
   "'\d144\d130\d160\d161\d162\d163";
#else
   "'AEIOUYaeiouy?!/1Cc";
   "'\d193\d201\d205\d211\d218\d221\d225\d233\d237\d243\d250\d253\d191\d161\d191\d161\d199\d231";
#endif
   mute_insert_accent ();
}

define mute_keymap_180 () % \d180 map
{
#ifdef IBMPC_SYSTEM
   "'Eeaiou";
   "'\d144\d130\d160\d161\d162\d163";
#else
   "\d180AEIOUYaeiouy";
   "\d180\d193\d201\d205\d211\d218\d221\d225\d233\d237\d243\d250\d253";
#endif
   mute_insert_accent ();
}

define mute_keymap_94 () % ^ map
{
#ifdef IBMPC_SYSTEM
   "^aeiou";
   "^\d131\d136\d140\d147\d150";
#else
   "^aeiou";
   "^\d226\d234\d238\d244\d251";
#endif
   mute_insert_accent ();
}

define mute_keymap_96 () % ` map
{
#ifdef IBMPC_SYSTEM
   "`aeiou";
   "`\d133\d138\d141\d149\d151";
#else
   "`AEIOUaeiou";   
   "`\d192\d200\d204\d210\d217\d224\d232\d236\d242\d249";
#endif
   mute_insert_accent ();
}

define mute_keymap_126 ()  % ~ map
{
#ifdef IBMPC_SYSTEM
   "~Nn";
   "~\d165\d164";
#else
   "~NnAOao";
   "~\d209\d241\d195\d213\d227\d245";
#endif
   mute_insert_accent ();
}

define mute_keymap_34 () % \" map
{
#ifdef IBMPC_SYSTEM
   "\"uaAeioyOU";
   "\"\d129\d132\d142\d137\d139\d148\d152\d153\d154";
#else
   "\"AEIOUaeiouys";   
   "\"\d196\d203\d207\d214\d220\d228\d235\d239\d246\d252\d255\d223";
#endif
   mute_insert_accent ();
}

define mute_keymap_168 () % \d168 map
{
#ifdef IBMPC_SYSTEM
   "\"uaAeioyOU";
   "\"\d129\d132\d142\d137\d139\d148\d152\d153\d154";
#else
   "\d168AEIOUaeiouy";   
   "\d168\d196\d203\d207\d214\d220\d228\d235\d239\d246\d252\d255";
#endif
   mute_insert_accent ();
}