From WikiChip
Editing mirc/on events/on keydown

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 2: Line 2:
 
The '''ON KEYDOWN''' event is triggered when a key is pressed down inside of a custom [[custom windows - mIRC|@window]].
 
The '''ON KEYDOWN''' event is triggered when a key is pressed down inside of a custom [[custom windows - mIRC|@window]].
  
'''Note''': Before version 7.62, on keydown was broken, it was incorrectly trying to do two things at once, reporting keypress and the resulting character of keypresses.
+
This event fills the following identifiers:
The idea was to report the key being pressed in $keyval, and the resulting character in $keychar. From the very beginning, $keyval was incorrect because it returned the ASCII value of the character being pressed instead of the corresponding keycode which comes with the internal WM_KEYDOWN windows message, which has a different value for letters than ASCII. And then, if you needed to press two keys to get a character, something related to 'dead key' as well, you couldn't get the resulting character properly. For example if you press control + o, you need to get the control key being pressed, the 'o' key being pressed, and the resulting character, which is a $chr(15). It was not even possible to change on keydown to report things correctly because keypresses and resulting character comes from two differents message, and the resulting character is only known in the second one, which is always sent second. So on keydown was changed to only report keypress, which is way more correct. The event now to get the resulting character no matter what, like if you're trying to script a visual editbox in a picture window, you need to use the new created event, {{mIRC|on char}}
+
<div style="background-color: rgba(0,0,0,.03); display: block;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keyval}}'''</span>The [[unicode character|unicode character]] value of the key pressed</div>
 +
 
 +
<div style="background-color: rgba(0,0,0,.03); display: block;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keychar}}'''</span>The actual character pressed</div>
 +
 
 +
<div style="background-color: rgba(0,0,0,.03); display: block; margin-bottom: 10px;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keyrpt}}'''</span>If the key is being held down/repeating</div>
  
 
== Synopsis ==
 
== Synopsis ==
<pre>ON <level>:KEYDOWN:<@>:<keycode,...,keycodeN>:<commands></pre>
+
<pre>ON <level>:KEYDOWN:<@>:<key,...,keyN>:<commands></pre>
  
 
== Parameters ==
 
== Parameters ==
<span style="display: inline-block; width: 105px;">'''<level>'''</span>The corresponding {{mIRC|access levels}} for the event to trigger.
+
<span style="display: inline-block; width: 105px;">'''<level>'''</span>The level for the event to trigger.
 
 
<span style="display: inline-block; width: 105px;">'''<@>'''</span>The {{mIRC|custom windows}} where this event should listen. Can be '''@''' for all windows.
 
 
 
<span style="display: inline-block; width: 105px;">'''<keycode>'''</span>The specific key, or keys to listen for. Can specify multiple keys, such as:
 
<source lang="mIRC">ON *:KEYDOWN:@myWindow:38,42,55,78:echo -a $keyval</source> see https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes for a list of key code
 
  
== Identifiers ==
+
<span style="display: inline-block; width: 105px;">'''<@>'''</span>The [[custom windows - mIRC|custom window]] where this event should listen. Can be '''@''' for all windows.
  
This event fills the following identifiers:
+
<span style="display: inline-block; width: 105px;">'''<commands>'''</span>The specific key, or keys to listen for. Can specify multiple keys, such as:
<div style="background-color: rgba(0,0,0,.03); display: block;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keyval}}'''</span>The Windows keycode value of the key pressed, this has nothing to do with ascii or unicode code point, the list can be found here https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes</div>
+
<source lang="mIRC">ON *:KEYDOWN:@myWindow:38,42,55,78:echo -a $keyval</source>
 
 
<div style="background-color: rgba(0,0,0,.03); display: block;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keychar}}'''</span>The actual character pressed if there is one, see the note above, this is kept for backward compatibility reason, scripters should not use this value inside on keydown</div>
 
 
 
<div style="background-color: rgba(0,0,0,.03); display: block; margin-bottom: 10px;"><span style="border-right: 1px dashed rgba(0,0,0,.15); display: inline-block; margin-left: 35px; margin-right: 10px; width: 70px;">'''{{mIRC|$keyrpt}}'''</span>If the key is being held down/repeating</div>
 
  
 
== Example ==
 
== Example ==
Line 44: Line 39:
 
[[File:Keyup event.png|This screenshot shows an example of the ON KEYDOWN event custom example.]]
 
[[File:Keyup event.png|This screenshot shows an example of the ON KEYDOWN event custom example.]]
  
Note that this makes use of a [[Picture Windows - mIRC|picture window]], as well as the {{mIRC|/drawtext}}. These types of [[Picture Windows - mIRC|windows]] and their tools can be very powerful in creating some amazing graphical layouts, as well as mIRC games.
+
Note that this makes use of a [[Picture Windows - mIRC|picture window]], as well as the [[/drawtext command - mIRC|drawtext command]]. These types of [[Picture Windows - mIRC|windows]] and their tools can be very powerful in creating some amazing graphical layouts, as well as mIRC games.
  
 
== Compatibility ==
 
== Compatibility ==

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)