in reply to Win32::GuiTest IsKeyPressed function

Which specific keys are you having trouble with? The API function GetAsyncKeyState actually accepts virtual key codes so either the wrapper around it is doing some translation, or you need to know what the codes are. In particular, if you want to detect the state of a letter key, you must provide it upper case - 'A' rather than 'a'.

VK_LBUTTON (01) Left mouse button VK_RBUTTON (02) Right mouse button VK_CANCEL (03) Control-break processing VK_MBUTTON (04) Middle mouse button (three-button mouse) VK_XBUTTON1 (05) Windows 2000/XP: X1 mouse button VK_XBUTTON2 (06) Windows 2000/XP: X2 mouse button - (07) Undefined VK_BACK (08) BACKSPACE key VK_TAB (09) TAB key - (0A-0B) Reserved VK_CLEAR (0C) CLEAR key VK_RETURN (0D) ENTER key - (0E-0F) Undefined VK_SHIFT (10) SHIFT key VK_CONTROL (11) CTRL key VK_MENU (12) ALT key VK_PAUSE (13) PAUSE key VK_CAPITAL (14) CAPS LOCK key VK_KANA (15) Input Method Editor (IME) Kana mode VK_HANGUEL (15) IME Hanguel mode (maintained for compatibility; use VK_HANGUL) VK_HANGUL (15) IME Hangul mode - (16) Undefined VK_JUNJA (17) IME Junja mode VK_FINAL (18) IME final mode VK_HANJA (19) IME Hanja mode VK_KANJI (19) IME Kanji mode - (1A) Undefined VK_ESCAPE (1B) ESC key VK_CONVERT (1C) IME convert VK_NONCONVERT (1D) IME nonconvert VK_ACCEPT (1E) IME accept VK_MODECHANGE (1F) IME mode change request VK_SPACE (20) SPACEBAR VK_PRIOR (21) PAGE UP key VK_NEXT (22) PAGE DOWN key VK_END (23) END key VK_HOME (24) HOME key VK_LEFT (25) LEFT ARROW key VK_UP (26) UP ARROW key VK_RIGHT (27) RIGHT ARROW key VK_DOWN (28) DOWN ARROW key VK_SELECT (29) SELECT key VK_PRINT (2A) PRINT key VK_EXECUTE (2B) EXECUTE key VK_SNAPSHOT (2C) PRINT SCREEN key VK_INSERT (2D) INS key VK_DELETE (2E) DEL key VK_HELP (2F) HELP key (30) 0 key (31) 1 key (32) 2 key (33) 3 key (34) 4 key (35) 5 key (36) 6 key (37) 7 key (38) 8 key (39) 9 key - (3A-40) Undefined (41) A key (42) B key (43) C key (44) D key (45) E key (46) F key (47) G key (48) H key (49) I key (4A) J key (4B) K key (4C) L key (4D) M key (4E) N key (4F) O key (50) P key (51) Q key (52) R key (53) S key (54) T key (55) U key (56) V key (57) W key (58) X key (59) Y key (5A) Z key VK_LWIN (5B) Left Windows key (Microsoft Natural keyboard) VK_RWIN (5C) Right Windows key (Natural keyboard) VK_APPS (5D) Applications key (Natural keyboard) - (5E) Reserved VK_SLEEP (5F) Computer Sleep key VK_NUMPAD0 (60) Numeric keypad 0 key VK_NUMPAD1 (61) Numeric keypad 1 key VK_NUMPAD2 (62) Numeric keypad 2 key VK_NUMPAD3 (63) Numeric keypad 3 key VK_NUMPAD4 (64) Numeric keypad 4 key VK_NUMPAD5 (65) Numeric keypad 5 key VK_NUMPAD6 (66) Numeric keypad 6 key VK_NUMPAD7 (67) Numeric keypad 7 key VK_NUMPAD8 (68) Numeric keypad 8 key VK_NUMPAD9 (69) Numeric keypad 9 key VK_MULTIPLY (6A) Multiply key VK_ADD (6B) Add key VK_SEPARATOR (6C) Separator key VK_SUBTRACT (6D) Subtract key VK_DECIMAL (6E) Decimal key VK_DIVIDE (6F) Divide key VK_F1 (70) F1 key VK_F2 (71) F2 key VK_F3 (72) F3 key VK_F4 (73) F4 key VK_F5 (74) F5 key VK_F6 (75) F6 key VK_F7 (76) F7 key VK_F8 (77) F8 key VK_F9 (78) F9 key VK_F10 (79) F10 key VK_F11 (7A) F11 key VK_F12 (7B) F12 key VK_F13 (7C) F13 key VK_F14 (7D) F14 key VK_F15 (7E) F15 key VK_F16 (7F) F16 key VK_F17 (80H) F17 key VK_F18 (81H) F18 key VK_F19 (82H) F19 key VK_F20 (83H) F20 key VK_F21 (84H) F21 key VK_F22 (85H) F22 key VK_F23 (86H) F23 key VK_F24 (87H) F24 key - (88-8F) Unassigned VK_NUMLOCK (90) NUM LOCK key VK_SCROLL (91) SCROLL LOCK key (92-96) OEM specific - (97-9F) Unassigned VK_LSHIFT (A0) Left SHIFT key VK_RSHIFT (A1) Right SHIFT key VK_LCONTROL (A2) Left CONTROL key VK_RCONTROL (A3) Right CONTROL key VK_LMENU (A4) Left MENU key VK_RMENU (A5) Right MENU key VK_BROWSER_BACK (A6) Windows 2000/XP: Browser Back key VK_BROWSER_FORWARD (A7) Windows 2000/XP: Browser Forward key VK_BROWSER_REFRESH (A8) Windows 2000/XP: Browser Refresh key VK_BROWSER_STOP (A9) Windows 2000/XP: Browser Stop key VK_BROWSER_SEARCH (AA) Windows 2000/XP: Browser Search key VK_BROWSER_FAVORITES (AB) Windows 2000/XP: Browser Favorites key VK_BROWSER_HOME (AC) Windows 2000/XP: Browser Start and Home key VK_VOLUME_MUTE (AD) Windows 2000/XP: Volume Mute key VK_VOLUME_DOWN (AE) Windows 2000/XP: Volume Down key VK_VOLUME_UP (AF) Windows 2000/XP: Volume Up key VK_MEDIA_NEXT_TRACK (B0) Windows 2000/XP: Next Track key VK_MEDIA_PREV_TRACK (B1) Windows 2000/XP: Previous Track key VK_MEDIA_STOP (B2) Windows 2000/XP: Stop Media key VK_MEDIA_PLAY_PAUSE (B3) Windows 2000/XP: Play/Pause Media key VK_LAUNCH_MAIL (B4) Windows 2000/XP: Start Mail key VK_LAUNCH_MEDIA_SELECT (B5) Windows 2000/XP: Select Media key VK_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key VK_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key - (B8-B9) Reserved VK_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key VK_OEM_PLUS (BB) Windows 2000/XP: For any country/region, the '+' key VK_OEM_COMMA (BC) Windows 2000/XP: For any country/region, the ',' key VK_OEM_MINUS (BD) Windows 2000/XP: For any country/region, the '-' key VK_OEM_PERIOD (BE) Windows 2000/XP: For any country/region, the '.' key VK_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key VK_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key - (C1-D7) Reserved - (D8-DA) Unassigned VK_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key VK_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '\|' key VK_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ']}' key VK_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/doubl +e-quote' key VK_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard. - (E0) Reserved (E1) OEM specific VK_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the backslash key on +the RT 102-key keyboard (E3-E4) OEM specific VK_PROCESSKEY (E5) Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key (E6) OEM specific VK_PACKET (E7) Windows 2000/XP: Used to pass Unicode characters as if they were keyst +rokes. The VK_PACKET key is the low word of a 32-bit Virtual Key valu +e used for non-keyboard input methods. For more information, see Rema +rk in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP - (E8) Unassigned (E9-F5) OEM specific VK_ATTN (F6) Attn key VK_CRSEL (F7) CrSel key VK_EXSEL (F8) ExSel key VK_EREOF (F9) Erase EOF key VK_PLAY (FA) Play key VK_ZOOM (FB) Zoom key VK_NONAME (FC) Reserved VK_PA1 (FD) PA1 key VK_OEM_CLEAR (FE) Clear key

DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: Win32::GuiTest IsKeyPressed function
by Util (Priest) on Apr 28, 2006 at 22:11 UTC
    The wrapper around it *is* doing translation! Here is the table from guitest.xs: Update: Hmmm. This should have shown up as a reply to Grandfather's post. Curious...

      Is there a reason that these codes are not documented in the module documentation?

      Is there a reason that the MicroSoft codes are not used?

      Is there a reason that the symbolic names are not the same as the MicroSoft symbolic names?

      Why do keys such as 'A' not work?

      Would it not have been simpler to use and document (and possibly also to write the code) to pass an integer value straight through, convert letters to the uppercase equivelent ordinal code and possibly do some symbolic conversion as icing?

      Why is the sample code mentioned in the documentation not provided?


      DWIM is Perl's answer to Gödel
Re^2: Win32::GuiTest IsKeyPressed function
by Util (Priest) on Apr 28, 2006 at 22:05 UTC

    Try 'F1'. The special keys work in older versions of Win32::GuiTest.
    The code to allow IsKeyPressed to understand a parameter of 'A' was added in version 1.50.2-ad. You probably are running 1.3. Try this to see:

    perl -MWin32::GuiTest -wle print($Win32::GuiTest::VERSION)
    See my reply to Grandfather, above, for the correct table of special keys that work with 1.3.

Re^2: Win32::GuiTest IsKeyPressed function
by coldmiser (Hermit) on Apr 28, 2006 at 19:25 UTC
    I have tried the virtual key codes, I have tried single quotes, I have tried double quotes (I even tried no quotes).
    IsKeyPressed("A"); IsKeyPressed('A'); IsKeyPressed("a"); IsKeyPressed('A'); IsKeyPressed("A"); IsKeyPressed("41"); IsKeyPressed(41); IsKeyPressed("VK_BACK"); #backspace key
    I litterly cannot get any key on the keyboard to work except the ESC key. Is anyone else having this problem with my code? or is it just a configuration issue on my PC?