View Full Version : MultiShift in two different flavors

December 25th, 2002, 06:09 PM
As Girder is a very powerful app there's always a lack of buttons on the remote. Mark created a setup for using one button as a shift. I personally like the way the shifting is done because it's absolutely stable.
However, someone asked for a way to increase the number of shifting levels. As I didn't want to change Mark's code and some people might be scared by the required (re-)'learn event' process, I made a new setup that is able to support multiple shift-levels and doesn't require a special learn event process.

The big disadvantage of this solution is that the commands of the shifted buttons have to be nested in special groups.

As mentioned in the subject there are actually two different 'flavors'.

Version 1 - Single-Key:
Pressing the shift button once will make Girder enter shift level 1, pressing it again will make Girder enter shift level 2 and so on. So the shift button cycles through the shift levels.

Version 2 - Direct-Shift:
This one has one shift button for each shift level. It's similar to the way the pocket calculaters from Texas Instruments work (2nd key, 3rd key). Note that this version uses reg23 to store the shift-level.

Both versions have the ability to assign buttons as one-shot.
Button 1:
shift-level 0 (no shift/default): Next Track
shift-level 1: Volume Up
shift-level 2: Fast Forward
Button 2:
shift-level 0 (no shift/default): Start Winamp
shift-level 1: Close Winamp
shift-level 2: Shutdown Windows
You can set it up to keep the shift-level after pressing button 1 (good for increasing the volume by more than just one step by holding down the button). But you can assign button 2 to be a one-shot (going back to shift-level 0 after closing Winamp without having to press shift again).

The example files support 3 commands per button but can be modified to increase the number of shift-levels. One one-shot button is predefined for testcommands. You'll find further information in the 'comments' after loading the file in Girder.

Comments on the files are appreciated.

March 1st, 2003, 11:55 PM

This looks like to perfect solution to the problem I've bee working on. Currenlty I'm using a Creative IR receiver and Pronto to run zoomplayer and because of the small number of keys available I quickly ran out of buttons for commands. I'd like to use this multishift to split the ZP funtions and switch between them using a shift key. Being fairly new to girder I'm a little lost as to how to setup the multishift .gml and how to incorporate my own .gml files.

I have so far assigned a shift key and imported ZP and winamp .gml's. I've moved these commands into the three differnt groups of the multishift .GML so that winamp is listed under the shift0-cmd group, ZP special commands under shift1-cmd group and ZP functions lies under shift2-cmd group. The OSD commands are a great idea BTW :)

However pressing the shift key only serves to enable the shift0 group and disable all the others. Further presses of the shift key do the same thing. Am I missing the point here?

Eventually I'd like to expand this to include a number of other groups and use multiple 'shift' keys to enable the different groups rather than a single key. For now though, with only three groups, one shift key will suffice.

Hope you can help as this appears to be a terrific solution.

Thanks in advance

June 1st, 2003, 09:03 PM
Where can i get these sample files?

June 15th, 2003, 01:46 AM
I could be wrong, but i belive that


You can browse around there for other stuff too:


I'm also quite new to this whole girder thing and i've reciently descovered the single shift script. I have yet to try the multi shift yet.

January 14th, 2004, 07:02 AM

i know this is an old thread but i really like the idea of this multishift and i find it very usefull. the only problem is that im really at loss about how to set it up...ive tried first the original shift file by Mark F and that was even more confusing so i switched to the multi shift which seems more simple. yet even with this i am a bit at loss since i cant seem to figure out the basics especially how to cycle through the various shift stages..id really appriciate any help i can get to try to explain to me the simple basics in a non "computer-genius" language :D

thx alot


January 16th, 2004, 08:50 AM
im really spun out on this idea

im guessing the shift button just disables other commands on each level, or soemthing

could someone write a quite tute on how to use this :P

February 20th, 2004, 10:21 PM
I'm a newb here, but I've tried to get multishift working, it seems pretty simple, I haven't tried the direct version only the single key.

I think you just have to set the SHIFT multigroup to your shift button. Also seems to have testcommands I'd guess you'd set your shift button to as well, only to show an osd to let you know which shift level you're in. There's also a key for testcommand in the backshift group. I guess this should be set to shift as well, not sure about that. maybe it should be set to a shift that you want to auto revert to shift level 0.

The only script increments reg23 which contains the shift value. 1, 2, or 3. The problem seems to come in from attempting to perform arithmetic on a global variable.

Hmmm, that's weird, just went back to the script window, which is where i originally saw this error message, and it's gone, and now the shift seems to work. I didn't do anything to it. Weird.

Also, it seems the links are broken, You need to go through the shift commands and make sure that group enable and disable commands actually point somewhere.

Also, the BACKSHIFT multigroup has a girderopen event, I think that to activate that, you need to either have the gml autoload with girder or disable then enable your input device (F9 twice).

Weird about that global variable thing. At least I'm startin to get the hang of this thing.

February 20th, 2004, 10:33 PM
Oh, one more thing. The links are broken in the shift multigroup as well. You need to link them to the their multigroups. I.E. shift -> 0 to the shift -> 0 multigroup. If you don't know how to do that. Hit browse on the top name and browse to the proper multigroup. The top name executes on true, and the bottom name executes on false.

February 21st, 2004, 02:23 AM
so can anyone post a mini guide on how to do this :P

im guessing that u can set the time it takes till the shift button changes

so if u hit shift once, u enter the 2nd tier of shifting,
so just hitting 1 by itself would give u 1 command, hitting shift and then 1 u get onto a new tier, hit shift again and u go onto another tier, which resets after 1 or 2 seconds if u dont hit anything?

February 21st, 2004, 02:00 PM
I'm not sure about implementing the auto reset, but to fix the broken links is quite simple.

This applies to the single key variant, I haven't tried the other.

There are 4 commands in the SHIFT Multigroup:

set shift-state (this contains the script, if reg23==2 then reg23=0 else reg32=reg23+1 end. So this checks reg23 for a value between 0 and 2, when it reaches the end of the loop, it resets zero, otherwise it increments it. To add more shift levels you would change reg23==2 to however many shift levels you want, 0 counts as a level.)

shift -> 0 (This contains Check Reg23==0. So if no shift then it goes to the shift ->0 multigroup. When I installed this gml, this pointed nowhere, as did the other shift's in this multigroup. So to make it point somewhere, click the browse button next to the name immediately below the Icon/Device box. Select the shift -> 0 multigroup from the tree that pops up. Press apply. Most of the time when things don't work as I intended, I forgot to press apply and lost the settings.)

shift -> 1 (check reg23==1) Point to shift ->1 multigroup.

shift -> 2 (check reg23==2) Point to shift -> 2 multigroup.

These are all pretty basic, to add more shift levels you would need to add shift -> 3 etc...

You also need to set up an event trigger for the SHIFT multigroup. Highlight shift, press learn event, press desired shift button.

Next, we go to the shift -> Multigroups

shift->0. Contains 2 commands, the first points to disable all multigroup, to ensure that no unwanted groups are open. The link is broken and must be set. I think the goto command is set already, all you have to do is select the browse next to the name directly beneath the icon/device box. Point to the disable all multigroup.

enable shift-0-cmds. This enables the shift-0-cmds group. Link is broken. Point to appropiate group.

I also put a display shiftstate command in here, which uses xp osd to display current shiftstate.

The shift->1 and shift->2 multigroups are the same, point them at their appropriate groups.

Next, the disable all Multigroup. Three commands, group disable, links broken, fix.

Now, everything should be working, except, I haven't mentioned the BACKSHIFT group. Two commands, Two event triggers.

reset state. (sets reg23 to 0)

shift->0 (points to shift->0 multigroup, can't remember if this link was broken, probably, so point it where it needs to go.)

initialize on startup. This is set to girderopen, so to enable it enable then disable all input devices, or F9 twice. This is to ensure that reg23 contains zero and shift0-cmds group is enabled at start. You don't need to disable/enable device if you have the gml autoload with girder.

key for testcommand. This one i'm unsure about, it has no event associated with it. I suppose it might be a reset button.

That's basically it, you put your various commands in the various cmd groups, when the group is enabled, so is the command, when disabled, they are too.

I hope that this is the how-to you were talking about. I am new to girder, so don't know enough about it yet to set an auto-reset. I also use a sms-style keyboard gml that contains a script with an autotimer, maybe you could use that, or the nokia style gml has a non-script timer. It calls the alarm timer plugin, but I haven't customized it, so unsure how to use it.

Good luck.

February 21st, 2004, 08:02 PM
Just figured out a way to set a timer to reset the shift key. Just add two new commands to the end of the SHIFT multigroup, make the first a wait command, it's in the windows tab. The second a goto then browse for the BACKSHIFT group. Goto is in the girder tab. That's it.

August 17th, 2004, 02:58 PM
Probably stupid questions from a total newbie:

I am new to Girder LCD Master and I am trying to get them up and running. I read that I need to install PORTIO and the LCD driver my system (XP).

1) I cannot get through to install the driver because there is no way to enter a generic device that I can find - XP always wants me to identify a device type in the ADD HARDWARE wizard. Do I need this to drive the LCD? I have a parallel 2x16 Samsung. I am assuming I need the specify LPT1 for the port number once I can install the driver.

2) How do I configure the LCD driver plug in to match my device? I cannot find anything to modify.

3) How does girder know where my infrared reciever is? Will it find it automatically on it's USB? The one I have is hardwired to the mother board USB slot.

August 17th, 2005, 02:59 PM
Can I get link to MultiShift group?

August 24th, 2005, 03:13 PM
I would also like this the link above is not working :D

October 22nd, 2005, 08:36 AM
i dunno abootu you but my girder's having serious trouble doing if then else's, i can type in reg23=1 and it sets to 1 fine, but the if statement just wont work

if reg23 >=2
then reg23=0
else reg23=reg23+1

also, any idea on how to make the osd's popup a message when it's group goes active?
im running girder 3.2.4

October 28th, 2005, 02:08 PM

For those of you looking for a backshift solution, I posted a solution in this thread:

I now use it for a "little kids that can't keep their hands of the remote solution" by
bassically keeping the main group (group 1) empty, so commands can only be activated after the shift key is pressed.


Maybe it's a little premature to say, but these won't work in Girder 4.

For a "Girder 4 shift and backshift solution look at the attached GML, have fun :wink:

January 6th, 2006, 10:20 PM
Care to upload to the G4 section ;)?

January 7th, 2006, 10:11 PM
Hi Mike,

will do...

just no readme for the time being...little bussy right now. :wink:


Improved the GML, readme is done and included in the ZIP

have fun :wink: