[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Send Arrow Keys to terminal via a c program

Posted on 2006-05-29
2
Medium Priority
?
312 Views
Last Modified: 2010-04-17
I'm writing an application that automatically access a webpage and fills some blanks using lynx. I send char "g" then the url and up to that point it works fine. My problem is that i can't send the ascii code (i tried ascii 80,66,25) for arrow dwn in order for lynx to move to the next i/p field or hyperlink.

Here is the code

                                                                                                                                             
#include <stdio.h>                                                                                                                            
#include <sys/wait.h>                                                                                                                          
#include <fcntl.h>                                                                                                                            
#include <unistd.h>                                                                                                                            
#include <pthread.h>                                                                                                                          
#include <time.h>                                                                                                                              
#include <string.h>                                                                                                                            
                                                                                                                                               
void writer ( FILE* stream,int sleeptime)                                                                      
{
    sleep(2);                                                                                                                      
    fprintf(stream,"g");                                                                                                        
    sleep(1);
    fprintf(stream,"www.msn.com\n");  
    sleep(1);                
    //here it was supposed to move through the screen
    fprintf(stream,"%c",25);                                                                                                          
   fflush (stream);                                
    sleep (sleeptime);                                                                                                            
}    

int main(int argc,char * argv[])
{
 char lynx[400];
 int fds[2];
 pid_t pidntw;
 FILE *stream;
 strcat(lynx,"lynx");
  pipe (fds);
 pidntw = fork();
 if(pidntw == (pid_t) 0)
        {
                close (fds[1]);                                                                                                                
                close(0);                                                                                                                      
                dup2 (fds[0],STDIN_FILENO);                                                                                                    
                execlp(lynx,"lynx","-accept_all_cookies",0);      
                return(1);
        }
        else
        {
                close (fds[0]);
                stream = fdopen (fds[1], "w");
                if (ferror (stream) || stream==NULL)
                        printf("ERROR!! 3\n");
                writer(stream,10);
                fclose(stream);
                close (fds[1]);
                waitpid(pidntw,NULL,0);
        }
 return 0;
}                        
0
Comment
Question by:CYTA
2 Comments
 
LVL 5

Accepted Solution

by:
t_itanium earned 1000 total points
ID: 16787761
hi..
try to use the tab key instead of arrows....
use the  ascii of the tab key

cheers
0
 

Author Comment

by:CYTA
ID: 16787795
I need to use the arrow keys since this program will be part of a bigger routine that will use some other programs too and i'm not sure they will accept <tab>

I tried this now and it worked
 fprintf(stream,"%c",27);
 fprintf(stream,"[");
 fprintf(stream,"B");
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This is about my first experience with programming Arduino.
Introduction to Processes
Starting up a Project

873 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question