manual:chapter6:flags:cmd_asnkey

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
manual:chapter6:flags:cmd_asnkey [2023/05/20 09:16]
claudio
manual:chapter6:flags:cmd_asnkey [2023/05/20 09:20] (current)
claudio
Line 49: Line 49:
       - **8** = The user is using the interactive function plot (not yet implemented)       - **8** = The user is using the interactive function plot (not yet implemented)
       - **16** = The using is using the interactive picture mode (not yet implemented)       - **16** = The using is using the interactive picture mode (not yet implemented)
-The subcontexts are bits, and get set whenever a context gets activated. For example, a custom user interface (let's say for example the UI of an equation solver) would have main context of an arbitrary number (like 23 for this example) and a subcontext of zero initially at their main screen (whatever that screen is). Any custom keys defined to be active during the application main screen only would need to use a context number for ''ASNKEY'' of **23*32+0**.  If the user wants to type the equation to solve, the UI would activate the editor and the context would become 1 (only the editor is open, within a custom UI). Now if the UI has the 'Calc' soft menu key to enable the use of the stack within the application, then the subcontext would become 2. If the user wants to enter something in this stack, the subcontext would become 3 (2+1 = using the editor while using the stack while inside the application). If the user entered the interactive stack from this stack, the subcontext would become 6 (4+2 = using the interactive stack while using the stack while inside the application). When there's no application running, the system has a main context of zero, and the subcontext is typically 2, since the stack is almost always open. Entering the editor switches to subcontext 3 (in the editor while in the main stack). In this example, to create a user definition that only activates whenever the user is using that specific application (context 23) and only when the user uses the editor within the 'Calc' stack, it would use a context number for ''ASNKEY'' of **23*32+3**. When the user is not running any application (just the system stack), then the context number to use would be **0*32+3** for a custom key active only within the editor (3 because the editor is always open within the stack). Using a subcontext of zero means the key is active on all subcontexts. Similarly, using the main context number of zero makes the key active on all contexts. Notice that since the system is assigned the main Context of zero, any key active in the main system context is also active on **all other application contexts** as well. This is by design, so that system-wide key customizations become active for all applications.+The subcontexts are bits, and get set whenever a context gets activated. For example, a custom user interface (let's say for example the UI of an equation solver) would have main context of an arbitrary number (chosen by the application designer, let's use 23 for this example) and a subcontext of zero initially at their main screen (whatever that screen is). Any custom keys defined to be active during the application main screen only would need to use a context number for ''ASNKEY'' of **23*32+0**.  If the user wants to type the equation to solve, the UI would activate the editor and the context would become 1 (only the editor is open, within a custom UI). Now if the UI has the 'Calc' soft menu key to enable the use of the stack within the application, then the subcontext would become 2. If the user wants to enter something in this stack, the subcontext would become 3 (2+1 = using the editor while using the stack while inside the application). If the user entered the interactive stack from this stack, the subcontext would become 6 (4+2 = using the interactive stack while using the stack while inside the application). When there's no application running, the system has a main context of zero, and the subcontext is typically 2, since the stack is almost always open. Entering the editor switches to subcontext 3 (in the editor while in the main stack). In this example, to create a user definition that only activates whenever the user is using that specific application (context 23) and only when the user uses the editor within the 'Calc' stack, it would use a context number for ''ASNKEY'' of **23*32+3**. When the user is not running any application (just the system stack), then the context number to use would be **0*32+3** for a custom key active only within the editor (3 because the editor is always open within the stack). Using a subcontext of zero means the key is active on all subcontexts. Similarly, using the main context number of zero makes the key active on all contexts. Notice that since the system is assigned the main Context of zero, any key active in the main system context is also active on **all other application contexts** as well. This is by design, so that system-wide key customizations become active for all applications.
  
 Whenever a key is assigned with ''ASNKEY'', it is added first to the list of handlers for that key. If there was a previous definition for that key, it will still be present in the list, so a key can have multiple custom defined actions for different or even the same key, shift and modifiers. Whenever the key is pressed, the system will search for a matching key/shift/modifier group and execute the action. The list is traversed in order, so the last assignment done with ''ASNKEY'' will be checked first, therefore can override any previous assignments. Removing a key definition with ''DELKEY'' will only remove the last definition that was added, and any previously stored definition will be active. Once the system finds a match, it will execute its action and stop the search unless [[manual:appendix:flags#flag-45]] is set. The program can set this flag on purpose to make the system continue the search for other custom key handlers (for example, a program might decide to "pass" on handling the key press, letting other handlers process it). In a similar way, a handler might set [[manual:appendix:flags#flag-46]] to cause the default action to be executed. Using both flags lets the system know it needs to search for another custom definition, and if there isn't one, the default action will be taken. Whenever a key is assigned with ''ASNKEY'', it is added first to the list of handlers for that key. If there was a previous definition for that key, it will still be present in the list, so a key can have multiple custom defined actions for different or even the same key, shift and modifiers. Whenever the key is pressed, the system will search for a matching key/shift/modifier group and execute the action. The list is traversed in order, so the last assignment done with ''ASNKEY'' will be checked first, therefore can override any previous assignments. Removing a key definition with ''DELKEY'' will only remove the last definition that was added, and any previously stored definition will be active. Once the system finds a match, it will execute its action and stop the search unless [[manual:appendix:flags#flag-45]] is set. The program can set this flag on purpose to make the system continue the search for other custom key handlers (for example, a program might decide to "pass" on handling the key press, letting other handlers process it). In a similar way, a handler might set [[manual:appendix:flags#flag-46]] to cause the default action to be executed. Using both flags lets the system know it needs to search for another custom definition, and if there isn't one, the default action will be taken.
Line 71: Line 71:
 ASNKEY                                      ASNKEY                                     
 </code> </code>
-**__Effect__**: Pressing number 2 will type the word ''two'' instead. Remove by using ''"2"'' ''DELKEY''.+**__Effect__**: Pressing number 2 will type the word ''two'' instead. Remove by using ''"2"'' ''DELKEY''Notice that when in **Alpha** mode, you can still type the number 2, as the override was only for the key 2 without any shift mode. 
 +\\ 
 +\\
 \\ \\
- 
- 
 **__Example 2: Spell out the number 2, but only within the text editor.__** **__Example 2: Spell out the number 2, but only within the text editor.__**
 <code> <code>
  • manual/chapter6/flags/cmd_asnkey.1684599386.txt.gz
  • Last modified: 2023/05/20 09:16
  • by claudio