KEYPRESS.C 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  12. */
  13. /*
  14. * $Source: f:/miner/source/ui/rcs/keypress.c $
  15. * $Revision: 1.2 $
  16. * $Author: john $
  17. * $Date: 1994/06/09 12:18:27 $
  18. *
  19. *
  20. *
  21. * $Log: keypress.c $
  22. * Revision 1.2 1994/06/09 12:18:27 john
  23. * Took out keyboard flushes.
  24. *
  25. * Revision 1.1 1993/12/07 12:30:14 john
  26. * Initial revision
  27. *
  28. *
  29. */
  30. #pragma off (unreferenced)
  31. static char rcsid[] = "$Id: keypress.c 1.2 1994/06/09 12:18:27 john Exp $";
  32. #pragma on (unreferenced)
  33. #include <stdio.h>
  34. #include <stdarg.h>
  35. #include <string.h>
  36. #include "fix.h"
  37. #include "types.h"
  38. #include "gr.h"
  39. #include "ui.h"
  40. #include "key.h"
  41. char * KeyDesc[256] = { \
  42. "","{Esc}","{1}","{2}","{3}","{4}","{5}","{6}","{7}","{8}","{9}","{0}","{-}", \
  43. "{=}","{Backspace}","{Tab}","{Q}","{W}","{E}","{R}","{T}","{Y}","{U}","{I}","{O}", \
  44. "{P}","{[}","{]}","{Enter}","{LeftCtrl}","{A}","{S}","{D}","{F}", \
  45. "{G}","{H}","{J}","{K}","{L}","{;}","{'}","{`}", \
  46. "{RightShift}","{\\}","{Z}","{X}","{C}","{V}","{B}","{N}","{M}","{,}", \
  47. "{.}","{/}","{LeftShift}","{Pad*}","{LeftAlt}","{Spacebar}", \
  48. "{CapsLock}","{F1}","{F2}","{F3}","{F4}","{F5}","{F6}","{F7}","{F8}","{F9}", \
  49. "{F10}","{NumLock}","{ScrollLock}","{Pad7}","{Pad8}","{Pad9}","{Pad-}", \
  50. "{Pad4}","{Pad5}","{Pad6}","{Pad+}","{Pad1}","{Pad2}","{Pad3}","{Pad0}", \
  51. "{Pad.}","","","","{F11}","{F12}","","","","","","","","","", \
  52. "","","","","","","","","","","","","","","","","","","","", \
  53. "","","","","","","","","","","","","","","","","","","","", \
  54. "","","","","","","","","","","","","","","","","","", \
  55. "{PadEnter}","{RightCtrl}","","","","","","","","","","","","","", \
  56. "","","","","","","","","","","{Pad/}","","","{RightAlt}","", \
  57. "","","","","","","","","","","","","","{Home}","{Up}","{PageUp}", \
  58. "","{Left}","","{Right}","","{End}","{Down}","{PageDown}","{Insert}", \
  59. "{Delete}","","","","","","","","","","","","","","","","","", \
  60. "","","","","","","","","","","","","","","","","","","","", \
  61. "","","","","","","" };
  62. void GetKeyDescription( char * text, int keypress )
  63. {
  64. char Ctrl[10];
  65. char Alt[10];
  66. char Shift[10];
  67. if (keypress & KEY_CTRLED)
  68. strcpy( Ctrl, "{Ctrl}");
  69. else
  70. strcpy( Ctrl, "");
  71. if (keypress & KEY_ALTED)
  72. strcpy( Alt, "{Alt}");
  73. else
  74. strcpy( Alt, "");
  75. if (keypress & KEY_SHIFTED)
  76. strcpy( Shift, "{Shift}");
  77. else
  78. strcpy( Shift, "");
  79. sprintf( text, "%s%s%s%s", Ctrl, Alt, Shift, KeyDesc[keypress & 255 ] );
  80. }
  81. int DecodeKeyText( char * text )
  82. {
  83. int i, code = 0;
  84. if (strstr(text, "{Ctrl}") )
  85. code |= KEY_CTRLED;
  86. if (strstr(text, "{Alt}") )
  87. code |= KEY_ALTED;
  88. if (strstr(text, "{Shift}") )
  89. code |= KEY_SHIFTED;
  90. for (i=0; i<256; i++ )
  91. {
  92. if ( strlen(KeyDesc[i])>0 && strstr(text, KeyDesc[i]) )
  93. {
  94. code |= i;
  95. return code;
  96. }
  97. }
  98. return -1;
  99. }
  100. int GetKeyCode(char * text)
  101. {
  102. UI_WINDOW * wnd;
  103. UI_GADGET_BUTTON * DoneButton;
  104. char temp_text[100];
  105. text = text;
  106. wnd = ui_open_window( 200, 200, 400, 200, WIN_DIALOG );
  107. DoneButton = ui_add_gadget_button( wnd, 170, 165, 60, 25, "Ok", NULL );
  108. ui_gadget_calc_keys(wnd);
  109. //key_flush();
  110. wnd->keyboard_focus_gadget = (UI_GADGET *)DoneButton;
  111. while(1)
  112. {
  113. ui_mega_process();
  114. ui_window_do_gadgets(wnd);
  115. if (last_keypress > 0)
  116. {
  117. GetKeyDescription( temp_text, last_keypress );
  118. ui_wprintf_at( wnd, 10, 100, "%s ", temp_text );
  119. }
  120. if (DoneButton->pressed)
  121. break;
  122. }
  123. ui_close_window(wnd);
  124. return 0;
  125. }
  126.