home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / misc / selkey.lzh / SELKEY.C next >
Text File  |  1984-08-31  |  3KB  |  141 lines

  1. /*******************************************/
  2. /*Rainbow Keyboard Selection Utility       */
  3. /*Author: Robert Shaw  10.07.84            */
  4. /*MSDOS Version 21.01.86                   */
  5. /*******************************************/
  6.  
  7.  
  8. #include <stdio.h>
  9. #include <rainbow.h>
  10.  
  11. /*define Rainbow function key mnemonics*/
  12.  
  13. /* define keyboard patch value mnemonics */
  14. # define USA     240
  15. # define CAN     241
  16. # define GER    248
  17. # define FRA     253
  18. # define SCH     250
  19. # define SUI     249
  20. # define UK     242
  21. # define BEL     252
  22. # define DEN     246
  23. # define FIN     243
  24. # define HOL     251
  25. # define ITA     254
  26. # define NOR     245
  27. # define SPA     247
  28. # define SWE     244
  29.  
  30. main()
  31. {
  32. int key, c, line = 12;
  33. heading();
  34. shade(line);
  35. do
  36. {
  37. c = inkey();
  38. if (c == UP && line > 5)
  39.  {
  40.    ffvattr(line,4,24,NORMAL);
  41.    --line;
  42.    if (line == 12)
  43.    --line;
  44.    shade(line);
  45.  }
  46. if (c == DOWN && line < 20)
  47.  {
  48.    ffvattr(line,4,24,NORMAL);
  49.    ++line;
  50.    if (line == 12)
  51.    ++line;
  52.    shade(line);
  53.  }
  54. if (c == ESC || c == EXIT)
  55. {
  56. ewfend(RESTORE);
  57. printf("\n\33[1mProgram exited by user\33[m\n");
  58. exit(0);
  59. }
  60. } while (c != RETURN || line == 12);
  61. switch(line)
  62. {
  63. case 5:    key=USA;
  64.     break;
  65. case 6:    key=CAN;
  66.     break;
  67. case 7:    key=GER;
  68.     break;
  69. case 8:    key=FRA;
  70.     break;
  71. case 9:    key=SCH;
  72.     break;
  73. case 10: key=SUI;
  74.          break;
  75. case 11: key=UK;
  76.          break;
  77. case 13: key = BEL;
  78.          break;
  79. case 14: key = DEN;
  80.          break;
  81. case 15: key = FIN;
  82.      break;
  83. case 16: key = HOL;
  84.      break;
  85. case 17: key = ITA;
  86.      break;
  87. case 18: key = NOR;
  88.          break;
  89. case 19: key = SPA;
  90.       break;
  91. case 20: key = SWE;
  92.       break;
  93. default: key = USA;
  94.       break;
  95. }
  96. /* address of current keyboard is at 8088 shadow ram ed00:00ac */
  97.  
  98. movedata(dsreg(),&key,0xED00,0x00AC,1);
  99.  
  100. ewfend(RESTORE);
  101. exit(0);
  102. }
  103. /******************************/
  104. heading()
  105. {
  106. ewfstart(SAVE+CLEAR+W80);
  107. csw(80);
  108. disabl_cur();
  109. box(1,1,24,80,NORMAL);
  110. hjline(3,1,80,NORMAL);
  111. hjline(22,1,80,NORMAL);
  112. ffvline(2,2,"i t u",BOLD);
  113. vjline(1,3,3,NORMAL);
  114. vjline(1,5,3,NORMAL);
  115. vjline(1,7,3,NORMAL);
  116. ffvline(2,9,"Rainbow Keyboard Selection Utility",BOLD);
  117. ffvline(2,63,"Version 21.01.86",NORMAL);
  118. ffvline(23,3,"Use up/down arrow keys to choose keyboard then press RETURN.",NORMAL);
  119. ffvline(5,5,"United States/Canada",NORMAL);
  120. ffvline(6,5,"Canada/Fran\347ais",NORMAL);
  121. ffvline(7,5,"Deutschland/\326sterreich",NORMAL);
  122. ffvline(8,5,"France/Belgique",NORMAL);
  123. ffvline(9,5,"Schweiz",NORMAL);
  124. ffvline(10,5,"Suisse",NORMAL);
  125. ffvline(11,5,"United Kingdom",NORMAL);
  126. ffvline(13,5,"Belgium/Flemish",NORMAL);
  127. ffvline(14,5,"Denmark",NORMAL);
  128. ffvline(15,5,"Finland",NORMAL);
  129. ffvline(16,5,"Holland",NORMAL);
  130. ffvline(17,5,"Italy",NORMAL);
  131. ffvline(18,5,"Norway",NORMAL);
  132. ffvline(19,5,"Spain",NORMAL);
  133. ffvline(20,5,"Sweden",NORMAL);
  134. }
  135. /******************************/
  136. shade(l)
  137. short l;
  138. {
  139. ffvattr(l,4,24,REVERSE);
  140. }
  141.