[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference noted::hackers_v1

Title:-={ H A C K E R S }=-
Notice:Write locked - see NOTED::HACKERS
Moderator:DIEHRD::MORRIS
Created:Thu Feb 20 1986
Last Modified:Mon Aug 03 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:680
Total number of notes:5456

620.0. "switch from session to session" by KBOV06::KRATZ (Ulrich Kratz - Technical IS , KBO) Fri Dec 04 1987 06:03

  I'm connected to a LAT or DECserver and have running 
  2 data entry sessions simultanously on my terminal.
  Now I want to go from one session into the other and back and forth.
  I do that in issueing the Break key and the <Ctrl> W . 
  Is there a better way, I would like to have that sequence just
  assigned to one key without changing any code of the 2 applications.

  Thanks 
         Ulrich    
T.RTitleUserPersonal
Name
DateLines
620.1Use <Ctrl>~SHIRE::MORIAUDJean-Charles, Geneva Mgt. ScienceFri Dec 04 1987 09:049
    At the Local> prompt just enter:
    
    Local> Set Forward <Ctrl>~
    
    Thus pressing <Ctrl>~ at any time will forward you to your next session.
    
    Jean-Charles.
    
620.2againKBOV06::KRATZUlrich Kratz - Technical IS , KBOFri Dec 04 1987 10:545
    Yes, that's what I'm doing but in addition I have to refresh my
    data entry Screens. Now is there a way to define just one key for
    the <Ctrl>~ and <Ctrl> w, without having to change my TDMS code.
    
    Ulrich
620.3Unless you are using a VT52 maybe?NIGEL::ROBERTSSame procedure as every yearFri Dec 04 1987 11:207
    How about using UDKs? If you have a modern terminal (i.e. one with
    an LK-201 keyboard) you can have User Defined Keys. Take a look
    at the VT200 Programmer's manual. (Can't find mine right now, otherwise
    I'd post the escape sequences here).
    
    Good luck,
    	Nigel.
620.4SNDCSL::SMITHWilliam P.N. (WOOKIE::) SmithFri Dec 04 1987 13:514
    Or get a really modern terminal like a VT330 that will run multiple
    sessions.  Or hack a VT-240 into an -MX to make it support sessions.
    
    Willie
620.5Here's some code to DO itTHE780::MESSENGERThings fall apart-it's scientificFri Dec 04 1987 21:31152
    
    I have a program that will load the UDKs on a VT-2xx terminal:
    (following the form-feed)
    
/*
*	controls.c -- program vt220 special function keys
*/

#include stdio
#include ctype

#define TRUE -1
#define FALSE 0

main()
{
	char line[80], prefix;
	int good, key;

	
        good	= FALSE;
	while(!good)
	{
		printf("Enter key to program (Fxx): ");
		gets(line);
		if(strlen(line) == 0 || strcmp(line, "exit") == 0 ||
			strcmp(line,"EXIT") == 0)
		{
			good	= TRUE;
			continue;
		}
		if(strcmp(line,"clear") == 0 || strcmp(line,"CLEAR") == 0)
		{
			clearkeys();
			continue;
		}
		if(strcmp(line,"lock") == 0 || strcmp(line,"LOCK") == 0)
		{
			lockkeys();
			continue;
		}         
		key	= keyeval(line);
		printf("Enter value to program into that key: ");
		gets(line);
		cook(line); 
		tohex(line);
		program_key(key, line);
	}                               
}
                            
clearkeys()
{
	printf("\033P0;1|\033\\");
}                                       
                   
program_key(key, string)
	int key;
	char *string;
{
	printf("\033P1;1|%d/%s\033\\", key, string);
}

lockkeys()
{
	printf("\033P1;0|\033\\");
}                                       

int keyeval(string)
	char *string;
{
        int num, retval;

	num	= atoi(string);
	retval	= num + 11 + ((num>10) ? 1 : 0) + ((num>14) ? 1 : 0);
 	return(retval);
}	

tohex(string)
	char *string;
{
	char retn[80];
	int i;

	strcpy(retn, string);
	for(i=0; i<strlen(retn); i++)
		sprintf(string+i*2, "%02x", (unsigned char)retn[i]);
	string[i*2+1]	= 0;
}                                               

cook(string)
	char *string;
{
	char save[80], obuf[4];
	int i, j, k;

	strcpy(save, string);
	j	= 0;
	for(i=0; i<strlen(save); i++)
	{
		if(save[i] != '\\')
		{
			string[j++]	= save[i];
			continue;
		}
		++i;
		switch(save[i])                         
		{
			case 'r':
			case 'R':			
		 		string[j++]	= '\r';
				break;
    			case 'e':
			case 'E':
				string[j++]	= '\033';
				break;
			case 'n':
			case 'N':
				string[j++]	= '\n';
				break;
			case 't':
			case 'T':
				string[j++]	= '\t';
				break;
			case 'v':
			case 'V':
				string[j++]	= '\v';
				break;
			case 'f':
			case 'F':
				string[j++]	= '\f';
				break;
			case '\\':
				string[j++]	= '\\';
				break;
			case '\'':
				string[j++]	= '\'';
				break;
			default:
				if(!isdigit(save[i]))
				      	break;
				k	= 0;
				while(k != 3 && isdigit(save[i]))
					obuf[k++] = save[i++];
				--i;                           
				obuf[k]	= 0;
   				string[j++]	= (unsigned char)atoi(obuf);
		}
	}
	string[j]	= 0;
}
				
    
620.6CTRL/BREAK works for me.COL01::LELIEPLUGH! -- nothing happens.Mon Dec 07 1987 09:2814
re < Note 620.2 by KBOV06::KRATZ "Ulrich Kratz - Technical IS , KBO" >
                                   -< again >-

>    ...Now is there a way to define just one key for
>    the <Ctrl>~ and <Ctrl> w, without having to change my TDMS code.

Go into terminal SETUP/KEYBOARD/ANSWERBACK (assuming that you use a
VT200 series terminal) and set the answerback message to <CTRL>~ <CTRL>W
(and save that). Now when you want to change the session, just type
<CTRL><F5>. That sends the answerback message to the host and does what
you want. 

Regards,
	-Peter