home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / jed098-4.zip / JED / LIB / MUTEKEYS.SL < prev    next >
Text File  |  1997-02-01  |  3KB  |  143 lines

  1. % Mute (Dead or accent) keys for JED.
  2. %
  3. %   To use this package, put a line like the following in your jed.rc
  4. %
  5. %    mute_set_mute_keys ("`'^");
  6. %
  7. %   Here, the keys `, ', and ^ will be mute keys.  That is, pressing one of
  8. %   these followed by the character to accent will insert an accented
  9. %   character in the buffer.   This affects only the local keymap.
  10. %
  11. %   Valid Mute keys are:
  12. %      ^, ~, ', `, \d168 (ISO Diaeresis), \d180 (ISO Acute), and ".
  13.  
  14. define mute_insert_accent (ok_chars, maps_to)
  15. {
  16.    variable pos, ch;
  17.  
  18.    ch = maps_to[0];
  19.    !if (input_pending (10))
  20.      {
  21.     vmessage ("%c-", ch, 1);
  22.     update (0);
  23.      }
  24.  
  25.    ch = getkey ();
  26.    pos = is_substr (ok_chars, char (ch));
  27.    if (pos)
  28.      {
  29.     ch = maps_to[--pos, pos];
  30.     insert_char (ch);
  31.      }
  32.    else
  33.      {
  34.     insert_char (maps_to[0]);
  35.     ungetkey (ch);
  36.      }
  37. }
  38.  
  39. define mute_set_mute_keys (str)
  40. {
  41.    variable i;
  42.  
  43.    _for (0, strlen(str) - 1, 1)
  44.      {
  45.     i = ();
  46.     switch (str[i])
  47.       { case '"':    local_setkey ("mute_keymap_34", "\""); }
  48.       { case '\'':    local_setkey ("mute_keymap_39", "'"); }
  49.       { case '^':    local_setkey ("mute_keymap_94", "^"); }
  50.       { case '`':    local_setkey ("mute_keymap_96", "`"); }
  51.       { case '~':    local_setkey ("mute_keymap_126", "~"); }
  52.     %% ISOLatin 1 diaeresis would be better, if included in keyboard
  53.       { case '\d168': local_setkey ("mute_keymap_168", "\d168"); }
  54.     %% Asciitilde would be better to acute accent, if included in keyboard
  55.       { case '\d180': local_setkey ("mute_keymap_180", "\d180"); }
  56.       { pop (); }        % bad value
  57.      }
  58. }
  59.  
  60. define mute_keymap_39 () % ' map
  61. {
  62. #ifdef MSDOS OS2
  63.    "'Eeaiou";
  64.    "'\d144\d130\d160\d161\d162\d163";
  65. #else
  66.    "'AEIOUYaeiouy?!/1Cc";
  67.    "'\d193\d201\d205\d211\d218\d221\d225\d233\d237\d243\d250\d253\d191\d161\d191\d161\d199\d231";
  68. #endif
  69.    mute_insert_accent ();
  70. }
  71.  
  72. define mute_keymap_180 () % \d180 map
  73. {
  74. #ifdef MSDOS OS2
  75.    "'Eeaiou";
  76.    "'\d144\d130\d160\d161\d162\d163";
  77. #else
  78.    "\d180AEIOUYaeiouy";
  79.    "\d180\d193\d201\d205\d211\d218\d221\d225\d233\d237\d243\d250\d253";
  80. #endif
  81.    mute_insert_accent ();
  82. }
  83.  
  84. define mute_keymap_94 () % ^ map
  85. {
  86. #ifdef OS2 MSDOS
  87.    "^aeiou";
  88.    "^\d131\d136\d140\d147\d150";
  89. #else
  90.    "^aeiou";
  91.    "^\d226\d234\d238\d244\d251";
  92. #endif
  93.    mute_insert_accent ();
  94. }
  95.  
  96. define mute_keymap_96  % ` map
  97. {
  98. #ifdef OS2 MSDOS
  99.    "`aeiou";
  100.    "`\d133\d138\d141\d149\d151";
  101. #else
  102.    "`AEIOUaeiou";   
  103.    "`\d192\d200\d204\d210\d217\d224\d232\d236\d242\d249";
  104. #endif
  105.    mute_insert_accent ();
  106. }
  107.  
  108. define mute_keymap_126  % ~ map
  109. {
  110. #ifdef MSDOS OS2
  111.    "~Nn";
  112.    "~\d165\d164";
  113. #else
  114.    "~NnAOao";
  115.    "~\d209\d241\d195\d213\d227\d245";
  116. #endif
  117.    mute_insert_accent ();
  118. }
  119.  
  120. define mute_keymap_34  % \" map
  121. {
  122. #ifdef MSDOS OS2
  123.    "\"uaAeioyOU";
  124.    "\"\d129\d132\d142\d137\d139\d148\d152\d153\d154";
  125. #else
  126.    "\"AEIOUaeiouys";   
  127.    "\"\d196\d203\d207\d214\d220\d228\d235\d239\d246\d252\d255\d223";
  128. #endif
  129.    mute_insert_accent ();
  130. }
  131.  
  132. define mute_keymap_168  % \d168 map
  133. {
  134. #ifdef MSDOS OS2
  135.    "\"uaAeioyOU";
  136.    "\"\d129\d132\d142\d137\d139\d148\d152\d153\d154";
  137. #else
  138.    "\d168AEIOUaeiouy";   
  139.    "\d168\d196\d203\d207\d214\d220\d228\d235\d239\d246\d252\d255";
  140. #endif
  141.    mute_insert_accent ();
  142. }
  143.