Difference between revisions of "IsKeyPressed"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>Haama
(Deprecated)
imported>Haama
(→‎Notes: A bit more specific on Win2k ini setting name)
Line 91: Line 91:
   set curKey to <keyCode>
   set curKey to <keyCode>
endif</pre>
endif</pre>
* This function won't work correctly under Windows 2000 unless the .ini setting '''bBackgrounKeyboard''' is set to 1. You can use [[con_SetINISetting]] to do this (make sure to set it whenever the game is loaded).
* This function won't work correctly under Windows 2000 unless the .ini setting '''bBackground Keyboard:Controls''' is set to 1. You can use [[con_SetINISetting]] to do this (make sure to set it whenever the game is loaded).
* Will not detect keys force-pressed with [[TapKey]] or [[TapControl]] but will detect disabled keys.
* Will not detect keys force-pressed with [[TapKey]] or [[TapControl]] but will detect disabled keys.



Revision as of 02:14, 20 December 2007

A command for Oblivion Script Extender

Syntax:

IsKeyPressed key

Returns true if key is currently pressed down. Key values are stored in Windows header files, as opposed to IsKeyPressed2's DirectX scancodes.

Deprecated from OBSE v0013: replaced by IsKeyPressed3 which uses the DX scan codes like the other input functions.

Sample Key IDs

1   Left Mouse Button
2   Right Mouse Button
4   Middle Mouse Button
---
13  Enter
---
20  Caps Lock
---
32  spacebar
---
33  PgUp
34  PgDn
35  End
36  Home
37  Left
38  Up
39  Right
40  Down
44  PrtScr
45  Ins
46  Del
---
48  0
49  1
50  2
...
55  7
56  8
57  9
---
65  A
66  B
67  C
...
88  X
89  Y
90  Z
---
96  NUM0
97  NUM1
98  NUM2
...
103 NUM7
104 NUM8
105 NUM9
106 NUM*
107 NUM+
109 NUM-
111 NUM/
---
112 F1
113 F2
114 F3
...
123 F12
...
127 F16 
---
160 left shift
161 right shift
162 left control
163 right control

A longer list can be found here

These can be converted to DirectX keycodes using DX2VK.

Notes

  • This function doesn't return a value while a MessageBox is being displayed, presumably because input is switched over to the MessageBox.
  • To convert DX scan codes to values usable by this function, use DX2VK.
  • Bear in mind that this function returns 1 for as long as the key is held down, so it's generally a good idea to trap the key and then wait until it is released, i.e.:
if ( curKey && isKeyPressed curkey ) ; key still being held down
  return ; wait until it's released
else
  set curkey to 0
endif

if ( isKeyPressed <keyCode> )
  ; do stuff
  set curKey to <keyCode>
endif
  • This function won't work correctly under Windows 2000 unless the .ini setting bBackground Keyboard:Controls is set to 1. You can use con_SetINISetting to do this (make sure to set it whenever the game is loaded).
  • Will not detect keys force-pressed with TapKey or TapControl but will detect disabled keys.

See Also