IsKeyPressed

From the Oblivion ConstructionSet Wiki
Revision as of 15:29, 26 November 2007 by imported>Haama (→‎See Also: New links)
Jump to navigation Jump to search

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.

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 bBackgrounKeyboard 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.

See Also