Difference between revisions of "83Plus:Hooks:9B84"
(→Using the Hook) |
|||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Category:83Plus:Hooks:By_Name|Raw Key Hook]] [[Category:83Plus:Hooks:By_Address|9B84 - Raw Key Hook]] | ||
== Synopsis == | == Synopsis == | ||
'''Name:''' Raw Key ''(has had other names proposed, which are discouraged -- see notes below.)'' | '''Name:''' Raw Key ''(has had other names proposed, which are discouraged -- see notes below.)'' | ||
Line 10: | Line 11: | ||
'''Hook Call BCALL:''' [[83Plus:BCALLs:4F5D|4F5D]] | '''Hook Call BCALL:''' [[83Plus:BCALLs:4F5D|4F5D]] | ||
− | '''Hook Active Flag:''' 5, (iy + 34h) | + | '''Hook Active Flag:''' [[83Plus:Flags:34#Bit_5|5, (iy + 34h)]] |
This hook allows you to change the values that [[83Plus:BCALLs:4972|GetKey]] returns. | This hook allows you to change the values that [[83Plus:BCALLs:4972|GetKey]] returns. | ||
Line 16: | Line 17: | ||
== Using the Hook == | == Using the Hook == | ||
− | This hook is called any time a key is accepted by | + | This hook is called any time a key is accepted by [[83Plus:BCALLs:4972|GetKey]]. It is called for kOff only if bit [[83Plus:Flags:28#Bit_7|7,(iy+28h)]] is set. |
* A = keycode; ([[83Plus:RAM:8446|keyExtend]]) = extended keycode | * A = keycode; ([[83Plus:RAM:8446|keyExtend]]) = extended keycode | ||
** You can modify these values to change the key that is "pressed." | ** You can modify these values to change the key that is "pressed." | ||
− | * Return with Z set if the keypress should be ignored. | + | * Return with Z set, or with A equaling zero, if the keypress should be ignored. |
== Comments == | == Comments == | ||
− | This hook is one of the four "official" hooks defined in ti83plus.inc. However, it appears that someone at TI made a mistake in adding its address, because it does not in fact have anything to do with "raw" keys. It has been suggested that this was intended to be called the "GetKey" hook. To avoid | + | This hook is one of the four "official" hooks defined in ti83plus.inc. However, it appears that someone at TI made a mistake in adding its address, because it does not in fact have anything to do with "raw" keys. It has been suggested that this was intended to be called the "GetKey" hook. To avoid possible confusion with [[83Plus:Hooks:9B88|another hook]], the name "Raw Key" should be used nevertheless. |
+ | |||
+ | == Example == | ||
+ | The following code will swap the Apps and Prgm keys: | ||
+ | <nowiki>RawKeyHook: | ||
+ | .db 83h ; Required for all hooks | ||
+ | cp kAppsMenu ; was Apps pressed? | ||
+ | jr z,AppsKey | ||
+ | cp kPrgm ; was Prgm pressed? | ||
+ | ret nz | ||
+ | ld a,kAppsMenu ; change key to kAppsMenu | ||
+ | or a ; set NZ condition | ||
+ | ret | ||
+ | AppsKey: | ||
+ | ld a,kPrgm ; change key to kPrgm | ||
+ | or a ; set NZ condition | ||
+ | ret</nowiki> | ||
== Credits and Contributions == | == Credits and Contributions == | ||
* Texas Instruments | * Texas Instruments |
Latest revision as of 09:00, 27 October 2006
Synopsis
Name: Raw Key (has had other names proposed, which are discouraged -- see notes below.)
Hook Pointer Block Address: 9B84
Hook Enable BCALL: 4F66
Hook Disable BCALL: 4F6F
Hook Call BCALL: 4F5D
Hook Active Flag: 5, (iy + 34h)
This hook allows you to change the values that GetKey returns.
Using the Hook
This hook is called any time a key is accepted by GetKey. It is called for kOff only if bit 7,(iy+28h) is set.
- A = keycode; (keyExtend) = extended keycode
- You can modify these values to change the key that is "pressed."
- Return with Z set, or with A equaling zero, if the keypress should be ignored.
Comments
This hook is one of the four "official" hooks defined in ti83plus.inc. However, it appears that someone at TI made a mistake in adding its address, because it does not in fact have anything to do with "raw" keys. It has been suggested that this was intended to be called the "GetKey" hook. To avoid possible confusion with another hook, the name "Raw Key" should be used nevertheless.
Example
The following code will swap the Apps and Prgm keys:
RawKeyHook: .db 83h ; Required for all hooks cp kAppsMenu ; was Apps pressed? jr z,AppsKey cp kPrgm ; was Prgm pressed? ret nz ld a,kAppsMenu ; change key to kAppsMenu or a ; set NZ condition ret AppsKey: ld a,kPrgm ; change key to kPrgm or a ; set NZ condition ret
Credits and Contributions
- Texas Instruments