Posted: Fri Feb 27, 2004 3:35 pm
Have you used the Layout panel? You can assign functions to buttons there, in a number of different ways:DGG wrote:WOW!!!!
Your proposal certainly has "sex appeal" but, unless you plan to provide a similar graphical (layout-supported) interface for the basic button assignment functions and are simply using "keymoves" as a way to prove the concept, I'm not sure it's worth the effort (But then, it's your effort.)
- Right click on a button in the image and choose the function
- Drag a function onto a button in the image
- Click on a button to select it, then double-click on a function to assign it.
The problem is that you don't know which device button the upgrade is going to be assigned to. That is done in IR.For me, the simple tabular interface you describe would suffice. Frankly, I don't see the companion layout as being particularly useful even for button assignment, and especially not for keymoves on non-"upgrade" devices, since only the buttons assigned in the current upgrade could be taken into account - at best, an incomplete picture - unless, of course, you can access IR.exe's .txt file.
Already addressed above.But, let me offer a couple of specific comments anyway.
I think the device button for the bound device of the keymove selected in the table should always be highlighted. I don't see any advantage to differentiating between the "upgrade" device and the others in this way.It would be possible to have no device button highlighted
No, this would be the same list as is currently displayed in KM.Would this include keymoves automatically generated by RM for, say, shifted keys? If so, they should be specially tagged. And, if they could be modified under this tab you may want to consider some form of flagging under the Buttons tab as well. Otherwise, I'd be concerned about confusion, and contention (RM's simple refusal to proceed in the face of an error condition rather than providing an error message isn't one of my favourite features) between the Keymove tab and the Button tab.On the right side would be a table containing the list of defined Keymoves
That could only be handled when RM takes over IR's functions in addition to KM's. That is the eventual goal, but is in the distant future.There are at least two other classes that should be considered for a comprehensive list of keymoves but that (I suspect) couldn't be accounted for on the new Keymove tab. They are keymoves generated directly with IR.exe and keymoves for the upgrade device set up on the Keymove tab of the upgrades for other devices (i.e., the function that started this discussion).
True, it is, and this is why (not really understanding the purpose of KM's Key Move sheet) I didn't think I needed to implement the Key Move sheet, 'cause I thought I had it covered by External Functions. Actually, what RM does today it really conceptually "Imported Functions", meaning functions taken from other devices, and KM's "Key Move" sheet deals with "Exported Functions". The fact that they are both actually keymoves can actually cause confusion to the novice.Finally, RM's current External Functions cabability, while the name suggests otherwise, is just another keymove assigment mechanism, i.e., it sets up keymoves on the upgrade device that cause some other device to do something. I appreciate that the Functions/Buttons mechanism is used to make the assignment but, they are, nonetheless, keymoves and in fact, are treated that way in the output file.
One of the goals of RM was to be more "user-friendly", by attempting to hide some of the complexity of JP1. One way to do that was to interact with functions in the same way regardless of whether they are assigned to keys in the button map, are for the current device but assigned outside the button map, or are for a different device altogether.
I'll have to think about that a bit.If all keymoves relevant to the "upgrade" device can't be included, I'd be inclined to re-label the function "External Keymoves" and limit it to setting up keymoves on another device that require execution by the "upgrade" device. That being said, it seems to me the new function logically could be integrated with the current External Functions tab, with the bound device (or the presence or absence thereof) defining the general nature of the keymove.
It's not just a matter of entering data, it also a matter of displaying the data. Remember that the data associated with a function is really just a sequence of bytes (often only one, but sometimes more). How would RM know how the user wants to view this value? I suppose I could just say, well, if it's one byte, always do EFCs. If it more than 1 byte, look at each byte and check to see if it is in the valid range for ASCII characters, if it is, display it as Text, otherwise display it as Hex. I think that is more confusing and subject to misinterpretation than having the user specify how to display the data.PS: Going back to an earlier post, why does one need to specify the type of data to be entered into the External Function EFC/Hex field. Is this a shortcoming of using JAVA? Why not simply enter data in the traditional form, i.e., $xx for hex, "abc" for character strings and assume anything else is an EFC?