|
|
|
The following page was printed from RemoteCentral.com:
[SOLVED]Change multiple key actions on...
| |
|
Topic: | [SOLVED]Change multiple key actions on press of a key This thread has 36 replies. Displaying posts 1 through 15. |
|
Post 1 made on Wednesday December 28, 2011 at 09:35 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
Hi, I'm new to ProntoEdit and I am using version 3 to program my Pronto TSU9800. 1) I have setup an overlay as an onscreen keyboard. Is it possible to setup one of the soft keys on my overlay i.e. when clicked to toggle all the keys to different actions like i.e. from text keys to number keys? 2) Also is it possible to change the overlay so it doesn't slide in from the sides but up from the bottom? Many thanks Steve
Last edited by Stealth on January 22, 2012 11:02.
|
|
Post 2 made on Wednesday December 28, 2011 at 12:15 |
Lyndel McGee RC Moderator |
Joined: Posts: | August 2001 12,996 |
|
|
1) Most elegant solution requires script to do this. Less elegant solution involves duplication of the keyboard on 2 or more pages, change titles/actions from keys and have your toggle key do page jumps between the 2 or more pages.
2) I can't recall what the overlay options are for slide in. If it is not readily available in the drop down, then the answer is likely no.
|
Lyndel McGee Philips Pronto Addict/Beta Tester
|
|
OP | Post 3 made on Wednesday December 28, 2011 at 12:20 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
On December 28, 2011 at 12:15, Lyndel McGee said...
1) Most elegant solution requires script to do this. Less elegant solution involves duplication of the keyboard on 2 or more pages, change titles/actions from keys and have your toggle key do page jumps between the 2 or more pages.
2) I can't recall what the overlay options are for slide in. If it is not readily available in the drop down, then the answer is likely no. Thanks for your reply. 1) I'm new to Prontoscript, anyone have any idea how to write this script or can point me to where I could find out how to do this? 2) No the only option is slide in. Oh well! Thanks again Steve
|
|
Post 4 made on Wednesday December 28, 2011 at 14:23 |
Lyndel McGee RC Moderator |
Joined: Posts: | August 2001 12,996 |
|
|
You can download the ProntoScript Dev Guide from the files section here. If you don't know Javascript, you might want to pick up the Flanagan book referenced as the "bible" in the appendix of the Dev Guide. You will only need to review the first 10 or so chapters to get Core Javascript programming down. To get an idea of the basics of changing labels on buttons/panels, etc... Have a look at this configuration (built for 9400) [Link: files.remotecentral.com]Lyndel
|
Lyndel McGee Philips Pronto Addict/Beta Tester
|
|
OP | Post 5 made on Thursday December 29, 2011 at 03:41 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
On December 28, 2011 at 14:23, Lyndel McGee said...
You can download the ProntoScript Dev Guide from the files section here. If you don't know Javascript, you might want to pick up the Flanagan book referenced as the "bible" in the appendix of the Dev Guide. You will only need to review the first 10 or so chapters to get Core Javascript programming down. To get an idea of the basics of changing labels on buttons/panels, etc... Have a look at this configuration (built for 9400) [Link: files.remotecentral.com]Lyndel Thanks for the link. I have ordered the Javascript book and I am having a play with Prontoedit 3 before it arrives. Steve
|
|
OP | Post 6 made on Thursday December 29, 2011 at 07:26 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
Help!
I have put the following code to a Button on an Overlay to make another Button on the same Overlay invisible. However it doesn't work. If I paste the same code onto a Page instead of the Overlay it works ok. Should this also work on an Overlay?
onPress = function()
{CF.widget("ABC").visible = false}
Thanks
Steve
|
|
Post 7 made on Thursday December 29, 2011 at 09:23 |
gadgetman1 Long Time Member |
Joined: Posts: | January 2009 23 |
|
|
On December 29, 2011 at 07:26, Stealth said...
Help!
I have put the following code to a Button on an Overlay to make another Button on the same Overlay invisible. However it doesn't work. If I paste the same code onto a Page instead of the Overlay it works ok. Should this also work on an Overlay?
onPress = function() {CF.widget("ABC","PS_OVERLAY").visible = false} Thanks
Steve Now is correct.
|
|
OP | Post 8 made on Thursday December 29, 2011 at 11:19 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
On December 29, 2011 at 09:23, gadgetman1 said...
{CF.widget("ABC","PS_OVERLAY").visible = false}
Now is correct. Thanks thats great. The last thing I'm struggling with is trying to change the actions for Button "K2" on press of another button. All buttons are on the same Overlay. I tried:- {CF.widget("K2","PS_OVERLAY").action = VMCCommand ("key:W");} but this fires the action as soon as I press my "Shift" Button. I want to change the action so it fires VMCCommand ("key:W");} onPress of "K2" Any help would be much appreciated. Thanks again
|
|
Post 9 made on Friday December 30, 2011 at 17:53 |
Lyndel McGee RC Moderator |
Joined: Posts: | August 2001 12,996 |
|
|
You cannot change actions/actionlists for buttons via script.
If you need 2 different action lists to execute depending on state, I recommend that you create 2 buttons with same ProntoScript Name on 2 separate hidden pages and then use executeActions() or scheduleActions() against the correct widget/button.
In the onscreen button (the one you'd press for Key A on your keyboard), do something like the following.
if (keyboardState == 0) // unshifted CF.widget("KeyA", "Unshifted").scheduleActions(); else if (keyboardState == 1) // shifted CF.widget("KeyA", "Shifted").scheduleActions();
In the action of your shift key, you'd simply set the appropriate keyboard state. Note that keyboardState is a variable you declare in you activity or in the page script of the page where the GUI keyboard is contained.
Also note that the "Unshifted" and "Shifted" strings above are the ProntoScript names that you assign to the hidden pages where you have your keyboard buttons that contain the actions you want to execute for each state.
|
Lyndel McGee Philips Pronto Addict/Beta Tester
|
|
OP | Post 10 made on Saturday December 31, 2011 at 08:44 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
On December 30, 2011 at 17:53, Lyndel McGee said...
You cannot change actions/actionlists for buttons via script.
If you need 2 different action lists to execute depending on state, I recommend that you create 2 buttons with same ProntoScript Name on 2 separate hidden pages and then use executeActions() or scheduleActions() against the correct widget/button.
In the onscreen button (the one you'd press for Key A on your keyboard), do something like the following.
if (keyboardState == 0) // unshifted CF.widget("KeyA", "Unshifted").scheduleActions(); else if (keyboardState == 1) // shifted CF.widget("KeyA", "Shifted").scheduleActions();
In the action of your shift key, you'd simply set the appropriate keyboard state. Note that keyboardState is a variable you declare in you activity or in the page script of the page where the GUI keyboard is contained.
Also note that the "Unshifted" and "Shifted" strings above are the ProntoScript names that you assign to the hidden pages where you have your keyboard buttons that contain the actions you want to execute for each state. Hi Lyndel, Again, thank you for your help and patients it’s much appreciated..... I still haven’t received my "The Definitive Guide" book yet, so I'm still not 100% on the code. However I think I have the gist of what you are saying. Forgive me if I am wrong, but will this work with the Overlay I'm using? I can see it working on a page ok but I would prefer to use an Overlay as I like the Overlay experience. Your idea of duplicating the keyboard sounds good. Would it be possible to do this and stack one key on top of the other on the same Overlay and when the Overlay is called to enter, set some code to hide one/two of the set of keys i.e. LC could be for Lowercase key UC could be for Uppercase key NM could be for Number key If I have completely misunderstood let me know and I will have to wait until my book arrives. Cheers Steve
|
|
Post 11 made on Saturday December 31, 2011 at 14:29 |
Lyndel McGee RC Moderator |
Joined: Posts: | August 2001 12,996 |
|
|
Will work just fine in an overlay. Simply put your UI buttons there and then use scheduleActions/executeActions to execute the actionlist of buttons on hidden pages.
|
Lyndel McGee Philips Pronto Addict/Beta Tester
|
|
OP | Post 12 made on Sunday January 1, 2012 at 13:54 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
I'm struggling with this. I have been at it on and off all day and still can't quite get it to work. Can someone give me a pointer to where I am going wrong please?
Where I am so far:-
a) I have declared two variables on the Action Properties Advanced page like so:-
// 0 = Unshifted (low). 1 = Shifted (Caps) var keyboardState = 0;
// Check keys output. 5 = No change var OutputState = 5;
b) On my existing keyboard overlay I have put Lyndel's code on the actions tab for one of the keys labeled "A" and called KeyA as the prontoscript name.
// 0 = Unshifted (low) 1 = Shifted (Caps) if (keyboardState == 0) // Unshifted CF.widget("KeyA", "Unshifted").scheduleActions); else if (keyboardState == 1) // Shifted CF.widget("KeyA", "Shifted").scheduleActions();
c) I created two new pages called Shifted and UnShifted, Then pasted all the buttons which I copied from my existing keyboard overlay to each of the new pages. On the Shift key actions tab for Shifted I put the following code:- keyboardState = 1; And for the Unshifted shift key:- keyboardState = 0; d) On the first key for both pages and the overlay I have named them all as KeyA for the Prontoscript Name. e) I have set the actions for KeyA on the Shifted page as:- OutputState = 6; And for Unshifted:- OutputState = 10 I did this so to confirm the key actions are changing when the shift key has been operated. When KeyA on the overlay is pressed I am reading the variable Output state into a label so see the output. f) When I run my test I call the overlay from a hard button and press KeyA, but nothing happens (variables are unchanged) I then press the shift key and the keyboard variable changes to 1 as expected. I then press KeyA again and nothing changes.. For the life of me I don’t know what I’m doing wrong. I’m sure its something stupid, please be gentle! Thanks you for taking the time to read this long post. Steve
|
|
Post 13 made on Sunday January 1, 2012 at 15:16 |
Guy Palmer Active Member |
Joined: Posts: | June 2008 648 |
|
|
Steve,
Yes, it is a long post so I might have misunderstood some part of it.
Although prontoscript can be added to a button via the actions tab (by pressing the prontoscript button), such scripts are completely separate from the actionlists that are the main thing in the actions tab. As a consequence, when you do a scheduleActions, it invokes the button's actionlist but it does not invoke its prontoscript. Hence your test scripts of OutputState=6 etc are never executed but if you replaced these with actionlists then they would be.
|
|
OP | Post 14 made on Sunday January 1, 2012 at 15:59 |
Stealth Long Time Member |
Joined: Posts: | December 2003 72 |
|
|
On January 1, 2012 at 15:16, Guy Palmer said...
Steve,
Yes, it is a long post so I might have misunderstood some part of it.
Although prontoscript can be added to a button via the actions tab (by pressing the prontoscript button), such scripts are completely separate from the actionlists that are the main thing in the actions tab. As a consequence, when you do a scheduleActions, it invokes the button's actionlist but it does not invoke its prontoscript. Hence your test scripts of OutputState=6 etc are never executed but if you replaced these with actionlists then they would be.
Guy, Thank you for your reply. Again apologises for the previous long post. I thought it best to post the full detail. I know I sound thick but can you advise on the correct syntax I will need to use? It’s been a long day and I'm way out of my depth with this. I know I need to do some serious reading on Javascript otherwise I will be wasting more days going around in circles. Thank you to those who have kindly helped, it’s much appreciated. Steve
|
|
Post 15 made on Monday January 2, 2012 at 01:17 |
Guy Palmer Active Member |
Joined: Posts: | June 2008 648 |
|
|
On January 1, 2012 at 15:59, Stealth said...
Apologies for the previous long post. I thought it best to post the full detail. No need at all to apologise - detail is good! But I appreciate your politeness! I know I sound thick but can you advise on the correct syntax I will need to use? Your syntax looks fine to me, apart from the missing opening bracket near the end in CF.widget("KeyA", "Unshifted").scheduleActions). In any event, if you make a syntax error, it will tell you in both the console (if using the simulator) and the debug widget (if using the actual pronto) It’s been a long day and I'm way out of my depth with this. I know I need to do some serious reading on Javascript otherwise I will be wasting more days going around in circles. Reading about Javascript won't help you re either CF.widget or scheduleActions() as these are prontoscript extensions rather than core Javascript. The prontoscript developers guide is the only document for reading about these matters.
|
|
|
Before you can reply to a message... |
You must first register for a Remote Central user account - it's fast and free! Or, if you already have an account, please login now. |
Please read the following: Unsolicited commercial advertisements are absolutely not permitted on this forum. Other private buy & sell messages should be posted to our Marketplace. For information on how to advertise your service or product click here. Remote Central reserves the right to remove or modify any post that is deemed inappropriate.
|
|