The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
Google UNIX.COM


High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
combination of two commands nehaquick UNIX for Dummies Questions & Answers 3 02-01-2008 01:09 AM
awk and file combination sickboy UNIX for Dummies Questions & Answers 1 06-13-2005 06:02 PM
Combination Of commands rahulrathod UNIX for Dummies Questions & Answers 2 12-14-2004 04:32 AM
Combination of gunzip and tar on Solaris dwidmer SUN Solaris 5 11-20-2003 09:17 PM
Partition combination gardarm Filesystems, Disks and Memory 3 03-14-2002 04:35 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1  
Old 11-30-2006
Registered User
 

Join Date: Nov 2006
Posts: 24
Detecting a key combination

Could anybody tell me how I can detect a particular key combination and perform a particular task on that event. e.g. if I press Ctrl + L on the shell then it clears the screen. Please tell me how it can be performed on my shell.
And how the Arrow Keys can be detected. I tried but pressing a key once is returning 3 values namely 26,27,(A,B,C,D) The last one differs only.

Please tell me how to call a function or to execute a line of code when a particular event occurs.




Thanks
Reply With Quote
Forum Sponsor
  #2  
Old 11-30-2006
Registered User
 

Join Date: Aug 2005
Location: Saskatchewan
Posts: 979
Have a look at the curses library and it's getkey() function.
Reply With Quote
  #3  
Old 11-30-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 4,274
There are only so many of these that you can define, those things are defined for you in the man page for stty.

AS an example, suppose you want the backspace key to delete the previous character, then put a line like this in your .profile or .bashrc file in your home directory. The next time you login, it takes effect - or you can source the file to make it work right away

Code:
stty erase "^H"
The erase command tells stty to have your terminal erase a character - "^H" written just the way I have it. You need to define the keys the way you want them.

stty functions are part of the termios set of functions - try termios if you want to do this in C.
Reply With Quote
  #4  
Old 11-30-2006
Registered User
 

Join Date: Nov 2006
Posts: 24
Some more help

Could you please clarify my problem
I am making a program in C
Now I am getting the string from the user then How I can put it in that state that what user has hitted.
Any sample will me a great help




Thanks
Reply With Quote
  #5  
Old 12-17-2006
Registered User
 

Join Date: Nov 2006
Posts: 24
Please Help

How I can detect a particular Key Combination through programming in Unix.

to trap the signals there are methods but control+L is not detected as a signal so how can I detect that combination of Key Hit and how to detect the Arrow Key Hits as each key hit is itself returning three values
The first two values of all four keys is same only the last key value is different.

I tried to use the getkey function of curses and select and poll funtions but my problem is not solved please help...



Thanks
Reply With Quote
  #6  
Old 12-17-2006
...@...
 

Join Date: Feb 2004
Location: NM
Posts: 4,274
Let's try this again
1. all keystrokes go thru the tty driver. Period. If your driver interprets them they are interpreted BEFORE you program ever sees them. termios() can remove/add settings.

2. For 2 key ctrl sequences [A-Z] the terminal returns ASCII 1-26 (minus those interpreted by the driver as something else) ctrl-L is 12, ASCII form feed. There are other two-key sequences as well.

3. If you want to be able to create special responses to other key sequences like the function keys or alt key combinations you use the curses or ncurses library.

In general, if you want to play with single key combinations like a GUI does, you have to set the terminal to non-canonical mode. I've posted the code to do that on the forums several times - you can search for it.
Reply With Quote
  #7  
Old 12-17-2006
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Location: Washington DC Area
Posts: 8,616
Quote:
Originally Posted by jim mcnamara
In general, if you want to play with single key combinations like a GUI does, you have to set the terminal to non-canonical mode. I've posted the code to do that on the forums several times - you can search for it.
Also, I have posted the code to do that, but only one time. But I also wrote a FAQ article, scripts/programs/code posted to www.unix.com, which has a link to it. So if mobile01 had either looked at the faqs or used the search function, he would already have the answer.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 07:34 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0