| 
    
    
    Command | 
    
    
    KEY | 
   
  
    | 
    
      | 
    
  | 
   
  
    | 
    Description | 
    
        Create a Touch Area  of size X,Y or define a Key on the external 
        keyboard.
         
          
        The touch area can have a One Touch function by using the built in style 
        TOUCH or TOUCHR (repeat) 
        More sophisticated function is available on touch change with TOUCHC 
        Both these built in styles process when the key is depressed.  
        For processing at press and release, create 2 keys at the same location 
        with different styles, one with action=DOWN; and the other with 
        action=UP;. 
         
         
        When specifying an external key action, the values for X and Y indicate 
        the contact
        points on the key board matrix where K0 is \\00 
        through to K23 which is \\17 .  
        This method allows dual key press capability as in SHIFT 
        key operation.  
        Key scan uses ports K0-K23 which can be configured as shown in the I/O 
        section. 
        Switches connected to 0V should use the I/O interrupt command INT(...);   
         
        The last touch co-ordinates are stored in predefined variables TOUCHX 
        and TOUCHY 
         
        The touch screen can be calibrated using the command SETUP( system ) { 
        calibrate=y; } 
        The position of touch keys can be temporarily viewed as a grey area 
        using  
        SETUP( system ) { test=showTouchAreas; } and hidden again using test=hideTouchAreas. 
        
        
  See  the SYSTEM command for global touch screen debounce, 
        sampling and accuracy parameters. 
         
        
        
  
  KEY(name,func,width,height,style); 
  now accepts ints and vars for width and height v47.00.
  
        Restriction: If processing a function called from a KEY() command then further key presses will be ignored. Each touch key press function must be processed to completion before another can be processed.  Please refer to the project example 'keyboard' for the technique to process keys. | 
       
    
    | 
    
      | 
    
  | 
   
  
    | 
    
    Syntax/Parameters | 
    
    KEY(Name,Function,X,Y,Style) 
    KEY(Name,Function,X,Y,Style,PosX,PosY); 
    KEY(name,downFunc,upFunc,X,Y,style,Posx,Posy); 
    KEY(name,downFunc,upFunc,repFunc,X,Y,style,Posx,Posy); | 
   
  
    | 
    
      | 
    
  | 
     
  
    | 
    Style | 
    
     STYLE(myTouch,key) 
     { 
      type=touch;       //specify 'touch' screen  or 
        external 'keyio' 
              debounce=250;  //Specify 
        the time delay to allow external key press to stabilise in milliseconds.  
              delay=1000;       
        //Specify the time delay before key auto repeat occurs in milliseconds. 
        0=off. 
          repeat=500;       
        //Specify the repeat period if the 
        key is held down in milliseconds 
              action = D;         
        //Specify D or 
        Down and U or Up and C for change. See note below  
        
              curRel=CC;       
        //specify touch key placement relative to cursor. CC Centre Centre , TC 
        Top Centre, 
          }                     
        //BC Bottom Centre,  LC Left Centre,
    RC Right Centre,  TL Top Left, 
                            
        //  BL Bottom Left, TR Top Right,  BR 
    Bottom Right 
     
        Specify the source of key 
    data. Touch debounce and sampling is setup globally in SYSTEM or in 
    SETUP(TOUCH) for resistive touch, projective capacitive touch and Immediate 
    capacitive touch. 
        
    
        If you require a dual action, specify 2 keys at the same location, one 
        with action D and one with U. | 
   
  
    | 
    
      | 
    
  | 
   
  
    | 
    Options | 
    
        
        Extended touch key repeat function - 49.16 
        Extended touch key repeat function. Supported repeatnum, repeatdec and repeatend parameters to KEY style.
         
         
        If none of these parameters are specified or any of them are 0 the repeat function is as before. If they are specified, after the initial delay the value in 'repeat' is used 'repeatnum' times. Then the repeat value is reduced by the value specified in repeatdec. The key repeats 'repeatnum times again and then the time is again reduced. This cycle repeats until the repeat value reaches the value in repeatend. The key then repeats with this interval until it is released. 
         
        Example, initial delay of 1s, 3x330, 3x280, 3x230, 3x180, 3x130, 100 ...
         
        delay = 1000
 
        repeat = 330
         
        repeatnum = 3
         
        repeatdec = 50
         
        repeatend = 100
         
         KEY Style event handler - evfunc - 49.27 
        An Additional parameter in the key style. evfunc allows a function to be called when any key using that style is pressed.
         
        This function is run before the function specified in the KEY entity.  
        A typical use for this would be to provide a method to add a key beep.
         
        STYLE(myTouch,key)
         
   {
         
   . . 
   evfunc = fncBeep;
         
   .
.
         
   }
         
        FUNC(fncBeep)
 
   {
         
   LOAD(BUZZ, 100);
         
   }
         
         
        Last Key Pressed - LAST_KEYIO_NAME and LAST_TOUCH_NAME - v49.51 
        * Added two built-in text vars that give the entity names of the last 
        external and touch keys pressed 
        LAST_KEYIO_NAME 
        LAST_TOUCH_NAME 
        eg press touch key named "key1". LOAD(RS2,LAST_TOUCH_NAME); // Outputs 
        "key1" 
         
        Action Types 
        Styles for touch keys action=u|d|c; (up|down|change) - where change 
detects key down and key up 
        Built in touch styles 
- TOUCH with type=touch; debounce=50; repeat1=0; repeat2=0; action=D; 
- TOUCHR with type=touch; debounce=50; repeat1=1000; repeat2=200; action=D; 
- TOUCHC with type=touch; debounce=50; repeat1=1000; repeat2=200; action=C; 
         
a) KEY(name,func,width,height,style); 
- supports existing implementation plus must be used for external keys 
- 'func' is called for key down, up and repeat, depending on key style action 
b) KEY(name,downFunc,upFunc,width,height,style); 
- 'downFunc' called when key down detected and for key repeat, depending on key 
style action 
- 'upFunc' called when key up detected, depending on key style action 
- either 'downFunc' and/or 'upFunc' can be omitted if no function call required 
c) KEY(name,[downFunc],[upFunc],[repFunc],width,height,style); 
- 'downFunc' called when key down detected, depending on key style action 
- 'repFunc' called when key up detected, depending on key style action 
- 'upFunc' called when key up detected, depending on key style action 
- either 'downFunc' and/or 'upFunc' and/or 'repFunc' can be omitted if no 
function call required 
         
        Note external keys still only support actions of up and down and command 
KEY(name,func,x,y,style); | 
   
  
    | 
    
      | 
    
  | 
   
    
  
    | 
    Example | 
    
        KEY(TopKey,TopFnc,90,50,MyTouch);  a touch area 90x50 pixels. 
        Create your own style MyTouch 
        KEY(ExtKey,ExFunc,\\07,\\10,MyIOK); This external key operates 
        when K7 and K16 connect.
        Create your own style MyIOK {type=keyio} 
        KEY(ExtKey,ExFunc,K07,K16,MyIOK);  This external key operates 
        when K7 and K16 connect.
        Create your own style MyIOK {type=keyio} 
        KEY(TKey,[HIDE(SPage);SHOW(TPage);],50,50,TOUCH); Inline commands 
        instead of function 
         
        Plan: KEY(ExtKey,ExFunc,K07,K16,PushKey);    This external key operates 
        when K7 and K16 connect.  
     
        Examples 
KEY(key1,[LOAD(rs2,"a");],90,84,TOUCH);  
- 'a' is output on key down only 
KEY(key2,[LOAD(rs2,"b");],90,84,TOUCHR); 
- 'b' are output on key down and key repeat 
KEY(key3,[LOAD(rs2,"c");],90,84,TOUCHC); 
- 'c' are output on key down, key repeat and key up 
         
KEY(key4,[LOAD(rs2,"d");],[LOAD(rs2,"e");],90,84,TOUCHC);- 'd' are output on key down and key repeat, 'e' is output on key up 
KEY(key5,[LOAD(rs2,"f");],[LOAD(rs2,"g");],[LOAD(rs2,"h");],90,84,TOUCHC);- 'f' is output on key down, 'h' on key repeat, 'g' on key up 
KEY(key6,,[LOAD(rs2,"i");],[LOAD(rs2,"j");],90,84,TOUCHC);- 'j' are output on key repeat, 'i' on key up 
         
KEY(key7,,,[LOAD(rs2,"k");],90,84,TOUCHC);- 'k' are output on key repeat only 
KEY(key8,,[LOAD(rs2,"l");],,90,84,TOUCHC);- 'l' is output on key up only | 
   
  
    | 
    
      | 
    
  | 
   
  
 
 |