Thanks Jamal, this looks exactly like what Jeff was asking about. There's one line in function keyboardInsert which I'm wondering about though:
Set oKey = Keyboard.Key(s) shouldn't that be: Set oKey = Keyboard.Key(sKey) <query>? Chip -----Original Message----- From: Jamal Mazrui [mailto:empo...@smart.net] Sent: Tuesday, July 07, 2009 12:06 PM To: gw-scripting@gwmicro.com Subject: Some custom keyboard functions Given that inserting a key combination by name has been a recent topic, I thought I'd share some functions of HomerSharedObject.vbs in this area. Hope this helps, Jamal Public Function KeyboardBypass(sName) ' Insert a key directly to the focused window, bypassing Window-Eyes ExecuteHotkey hkBypass KeyboardInsert sName End Function Public Function KeyboardGetModifiers(sName) ' Get modifier flags of a key Dim iReturn Dim oKey Set oKey = Keyboard.Key(sName) iReturn = 0 If oKey.FilterApplication = kfsDown Then iReturn = iReturn Or kmApplication If oKey.FilterAlt = kfsDown Then iReturn = iReturn Or kmAlt If oKey.FilterControl = kfsDown Then iReturn = iReturn Or kmControl If oKey.FilterInsert = kfsDown Then iReturn = iReturn Or kmInsert If oKey.FilterNumlock = kfsDown Then iReturn = iReturn Or kmNumlock If oKey.FilterNumpad = kfsDown Then iReturn = iReturn Or kmNumpad If oKey.FilterShift = kfsDown Then iReturn = iReturn Or kmShift If oKey.FilterWindows = kfsDown Then iReturn = iReturn Or kmWindows KeyboardGetModifiers = iReturn End Function Public Function KeyboardInsert(sName, bSuppressInterrupt) ' Insert a key by name, and specify whether to suppress interruptability so that speech in progress continues Dim aKeys Dim iOldInterrupt, iIndex, iModifiers Dim oKey Dim sKey Set oKey = Keyboard.Key(sName) iModifiers = KeyboardGetModifiers(oKey) If Right(sName, 1) = "-" Then sKey = "-" Else aKeys = Split(sName, "-") sKey = aKeys(UBound(aKeys)) End If Set oKey = Keyboard.Key(s) iIndex = oKey.Index If bSuppressInterrupt Then iOldInterrupt = oHomer.KeyboardSetInterrupt(kimOff) Keyboard.InsertKey iIndex, iModifiers If bSuppressInterrupt Then oHomer.KeyboardSetInterrupt(iOldInterrupt) End Function Public Function KeyboardSetInterrupt(iNewState) ' Set state of interruptability, and return previous setting so it may be restored KeyboardSetInterrupt = ActiveSettings.Keyboard.Interruptability ActiveSettings.Keyboard.Interruptability = iNewState End Function