Difference between revisions of "PRGM GetKey"

From WikiPrizm
Jump to navigationJump to search
(Added note about delay in syscall from fixing a performance issue in an add-in.)
 
(2 intermediate revisions by one other user not shown)
Line 21: Line 21:
 
The return is a packed 2 digit number, with the first digit being the ''row - 1'' and the second digit being the ''column''. For example, GetKeyWait_OS, when F1 is pressed, will give 7,10 as the col,row.  This function returns 79 as the (col)(row-1).  AC/ON returns 1,1 for GetKeyWait_OS and therefore returns 10 from PRGM_GetKey.
 
The return is a packed 2 digit number, with the first digit being the ''row - 1'' and the second digit being the ''column''. For example, GetKeyWait_OS, when F1 is pressed, will give 7,10 as the col,row.  This function returns 79 as the (col)(row-1).  AC/ON returns 1,1 for GetKeyWait_OS and therefore returns 10 from PRGM_GetKey.
  
<nowiki>*</nowiki> This function actually '''does''' block for a very small amount of time, which can hurt performance of FPS-hungry add-ins.  The PRGM_GetKey_OS syscall will stall for a very small amount of time (about 0.05s) if no keys are pressed, and unnoticeable delay when a key is pressed.  If you are making a time-sensative add-in, it is best to not use syscalls and [[Debouncing_Multiple-Keypress_PRGM_GetKey|directly poll the keyboard hardware]].
+
<nowiki>*</nowiki> This function actually '''does''' block for a very small amount of time, which can hurt performance of FPS-hungry add-ins.  The PRGM_GetKey_OS syscall will stall for a small amount of time if no keys are pressed, and unnoticeable delay when a key is pressed.  If you are making a time-sensative add-in, it is best to not use syscalls and [[Debouncing_Multiple-Keypress_PRGM_GetKey|directly poll the keyboard hardware]].
 +
 
 +
== Keycodes ==
 +
[LEFT]  38    [F1]    79    [SHIFT] 78    [ALPHA] 77
 +
[DOWN]  37    [F2]    69    [OPTN]  68    [x^2]  67
 +
[UP]    28    [F3]    59    [VARS]  58    [^]    57
 +
[RIGHT] 27    [F4]    49    [MENU]  48    [EXIT]  47
 +
                [F5]    39
 +
                [F6]    29
 +
 
 +
[X/O/T] 76    [a b/c] 75
 +
[log]  66    [F<->D] 65
 +
[ln]    56    [(]    55
 +
[sin]  46    [)]    45
 +
[cos]  36    [,]    35
 +
[tan]  26    [->]    25
 +
 
 +
[7]    74    [4]    73    [1]    72    [0]    71
 +
[8]    64    [5]    63    [2]    62    [.]    61
 +
[9]    54    [6]    53    [3]    52    [EXP]  51
 +
[DEL]  44    [*]    43    [+]    42    [(-)]  41
 +
[AC/ON] 10    [/]    33    [-]    32    [EXE]  31
  
 
[[Category: Useful Routines]]
 
[[Category: Useful Routines]]

Latest revision as of 17:02, 23 May 2013

Synopsis

This is a routine that is non-blocking* See Comments, goes through the OS, and returns one key value: the very last one pressed or still held.

Definition

int PRGM_GetKey(void)
{
  unsigned char buffer[12];
  PRGM_GetKey_OS( buffer );
  return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 );
}

Inputs

None

Outputs

Packed key code

Comments

This function will retrieve the last pressed key and continue returning it if it is still held. While it's slightly outdated, it is still commonly used for simple key checking.

The return is a packed 2 digit number, with the first digit being the row - 1 and the second digit being the column. For example, GetKeyWait_OS, when F1 is pressed, will give 7,10 as the col,row. This function returns 79 as the (col)(row-1). AC/ON returns 1,1 for GetKeyWait_OS and therefore returns 10 from PRGM_GetKey.

* This function actually does block for a very small amount of time, which can hurt performance of FPS-hungry add-ins. The PRGM_GetKey_OS syscall will stall for a small amount of time if no keys are pressed, and unnoticeable delay when a key is pressed. If you are making a time-sensative add-in, it is best to not use syscalls and directly poll the keyboard hardware.

Keycodes

[LEFT]  38     [F1]    79     [SHIFT] 78     [ALPHA] 77
[DOWN]  37     [F2]    69     [OPTN]  68     [x^2]   67
[UP]    28     [F3]    59     [VARS]  58     [^]     57
[RIGHT] 27     [F4]    49     [MENU]  48     [EXIT]  47
               [F5]    39
               [F6]    29
 
[X/O/T] 76     [a b/c] 75
[log]   66     [F<->D] 65 
[ln]    56     [(]     55 
[sin]   46     [)]     45
[cos]   36     [,]     35 
[tan]   26     [->]    25
 
[7]     74     [4]     73     [1]     72     [0]     71
[8]     64     [5]     63     [2]     62     [.]     61
[9]     54     [6]     53     [3]     52     [EXP]   51
[DEL]   44     [*]     43     [+]     42     [(-)]   41
[AC/ON] 10     [/]     33     [-]     32     [EXE]   31