PDA

View Full Version : Keypresses



asdfarkangel
16-10-2010, 09:46 AM
Hi I searched this on google but all I found was ascii codes. What I would need is check if for example the up arrow button is pressed. (I don't think that button has an ascii code or does it?)

WILL
16-10-2010, 10:39 AM
Hi there is a way to capture key presses using just the system function units in FPC or Delphi, but you may find it easier and better to use something like SDL or DirectX where you have better control over detecting when different keys are pressed and/or released. JEDI-SDL and maybe DelphiX (only if you are using Delphi though!) could be a good starter library for you...?

Carver413
16-10-2010, 11:55 AM
what would life be like without Google
http://delphi.about.com/od/objectpascalide/l/blvkc.htm

asdfarkangel
16-10-2010, 02:50 PM
Thanks altough I never used those compilers before I will really look at how they work if I get back but now I'm at home my comp is at the student-hostel and I don't want to fill mom's comp with pascal stuff:D I use free pascal so those Delphi functions won't help me out but thanks anyways.

phibermon
16-10-2010, 04:22 PM
I use dogpile (http://www.dogpile.com/)

It's combination of search results from the various big names is quite useful when searching the more commonly spammed topics

Carver413
16-10-2010, 07:42 PM
Thanks although I never used those compilers before I will really look at how they work if I get back but now I'm at home my comp is at the student-hostel and I don't want to fill mom's comp with pascal stuff:D I use free pascal so those Delphi functions won't help me out but thanks anyways.

those are not delphi functions they are const. and you can use that chart to define them in free pascal

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
const
VK_UP = $26;
begin
if key = VK_UP then LoggerUnit.Logger.Msg('Up Key');
end;

this works just fine in lazarus, minus the LoggerUnit which is my own code. those const are probable defined some where in lazarus but I don't have a clue where. in delphi I think that they are part of the win unit. just because you are using free pascal you shouldn't discard everything delphi. most code can be made to work on lazarus and there is a wealth of information out there for delphi. even old delphi books can be of use to you

User137
16-10-2010, 08:36 PM
const
VK_UP = $26;
begin
if key = VK_UP then ...
Tip: You can add Lcltype in uses clause of your Lazarus project, all virtual keycodes such as VK_UP, VK_ESCAPE are there in cross-platform way.

Carver413
16-10-2010, 09:12 PM
Tip: You can add Lcltype in uses clause of your Lazarus project, all virtual keycodes such as VK_UP, VK_ESCAPE are there in cross-platform way.

Thanks for that, I knew it was probable in there somewhere. one can get lost digging through all that code and still not find what your looking for.

asdfarkangel
19-10-2010, 02:22 PM
Oh well thanks all of you. Writing a Biology test at university today but I will experiment with these functions a little when I'm done with that. Interesting when I learn programming, instead of memorizing syntaxes and procedure/function names and following methods, I just start writing something to experiment with it. I look it up in google if I need a func. or proc. see the syntaxes and correct methodical errors and I learn a lot easier this way. I can not imagine for example that I could have learnt the useage of binary files by just reading the book, and then I would have been able to use it correctly instantly. Altough for my programs written this way in the end I often find out there was a lot lot more easier way. Well often means almost always xD

deathshadow
15-11-2010, 11:28 AM
vk_ constants are also in the WINDOWS unit. If you are using SDL, there are the SDLK_ constants which are identical in value to the vk_ ones.

Brainer
18-11-2010, 02:55 PM
You can also use GetAsyncKeyState or GetKeyboardState from the Windows API. Here're the links, respectively: http://msdn.microsoft.com/en-us/library/ms646293%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/ms646299(VS.85).aspx