home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / sanfrancisco_1989 / sf-devcon89.1 / commodities / aztec / cxsupp / ixusr.c < prev    next >
C/C++ Source or Header  |  1992-08-27  |  3KB  |  128 lines

  1. /* ixusr.c -- InputXpression routine examples    */
  2.  
  3. /*
  4. Copyright (c) 1987, 1988, 1989 Jim Mackraz and I&I Computing.
  5.  
  6. Executables based on this information may be used in software
  7. for Commodore Amiga computers.  All other rights reserved.
  8. This information is provided "as is"; no warranties are made.
  9. All use is at your own risk, and no liability or responsibility
  10. is assumed.
  11. */
  12.  
  13. #define INTERNALSTUFF    0    /* requires pieces of system to link    */
  14.  
  15. #include "cx/cxusr.h"
  16.  
  17. #if INTERNALSTUFF
  18. IX *
  19. CreateIX()
  20. {
  21.     IX *ix;
  22.     ix =  (IX *) AllocMem( (ULONG) sizeof (IX), (ULONG) MEMF_CLEAR);
  23.     if (ix) InitIX(ix);
  24.     return (ix);
  25. }
  26.  
  27. DeleteIX(ix)
  28. IX *ix;
  29. {
  30.     FreeMem( ix, (ULONG) sizeof (IX) ); 
  31. }
  32. #endif
  33.  
  34.  
  35. /* sets up an input expression to
  36.  * trigger on (shift or caps) downstrokes
  37.  */
  38. DownstrokeIX(code, only_caps, ix)
  39. ULONG    code;
  40. ULONG    only_caps;
  41. IX        *ix;
  42. {
  43.     ix->ix_Class = IECLASS_RAWKEY;
  44.     ix->ix_Code = code;            /* note that IECODE_UPPREFIX not set    */
  45.     ix->ix_CodeMask = 0xFFFF;    /* .. and I care about it            */
  46.  
  47.     /* trigger on just one of synonyms */
  48.     ix->ix_QualMask = IEQUALIFIER_LSHIFT | IEQUALIFIER_REPEAT;
  49.  
  50.     ix->ix_QualSame =    IXSYM_SHIFT;
  51.  
  52.     ix->ix_Qualifier =  only_caps? IEQUALIFIER_LSHIFT: 0;
  53. }
  54.  
  55.  
  56. #if INTERNALSTUFF
  57. LONG
  58. SubsetIX(ix, template)
  59. register IX    *ix;
  60. register IX    *template;
  61. {
  62.     /* TRUE return if every ievent which would match ix 
  63.      * also would match template
  64.      */
  65.  
  66.     LONG    success = 0;
  67.     UWORD    tmpqual;
  68.  
  69.     if (NULL_IX(template)) goto SUCCESS;
  70.     if (ix->ix_Class != template->ix_Class) goto FAIL;
  71.  
  72.     /* code    */
  73.     if (~ix->ix_CodeMask & template->ix_CodeMask) goto FAIL;
  74.     if (IX_NOMATCH( ix->ix_Code, template->ix_Code,
  75.             template->ix_CodeMask )) goto FAIL;
  76.  
  77.     /* qualifier    */
  78.     if (~ix->ix_QualMask & template->ix_QualMask) goto FAIL;
  79.  
  80.     tmpqual = ix_synonym(ix->ix_Qualifier, ix->ix_QualSame);
  81.     if (IX_NOMATCH(tmpqual, template->ix_Qualifier, template->ix_QualMask))
  82.     {
  83.         goto FAIL;
  84.     }
  85.  
  86. SUCCESS:
  87.     success = 1;
  88. FAIL:
  89.     return (success);
  90. }
  91. #endif
  92.  
  93. CarveIX(ix, ie)
  94. register IX                    *ix;
  95. register struct InputEvent    *ie;
  96. {
  97.     /* set up ix to match only ie    */
  98.  
  99.     ix->ix_Class        = ie->ie_Class;
  100.     ix->ix_Code            = ie->ie_Code;
  101.     ix->ix_CodeMask        = ~0;
  102.     ix->ix_Qualifier    = ie->ie_Qualifier;
  103.     ix->ix_QualMask        = ~0;
  104.     ix->ix_QualSame        = 0;
  105. }
  106.  
  107. dumpIX(ix)
  108. IX    *ix;
  109. {
  110.     printf("dump IX: %lx\n", ix);
  111.     if (ix->ix_Version != IX_VERSION)
  112.         printf("\tBad Version: %x should be %x.\n", ix->ix_Version, IX_VERSION);
  113.     printf("\tClass %x\n",ix->ix_Class);
  114.     printf("\tCode %x, (mask %x)\n",ix->ix_Code, ix->ix_CodeMask);
  115.     printf("\tQualifier %x (mask %x)\n",ix->ix_Qualifier, ix->ix_QualMask);
  116.     printf("\tQualSame %x\n", ix->ix_QualSame);
  117. }
  118.  
  119. dumpIE(ie)
  120. struct InputEvent *ie;
  121. {
  122.     printf("dump IE: %lx\n", ie);
  123.     printf("\tClass %x\n",ie->ie_Class);
  124.     printf("\tCode %x\n",ie->ie_Code);
  125.     printf("\tQualifier %x\n",ie->ie_Qualifier);
  126.     printf("\tEventAddress %lx\n", ie->ie_EventAddress);
  127. }
  128.