Everquest keyboard not working in background
Moderators: Lavish Software Team, Moderators
Everquest keyboard not working in background
I'm trying to get Keyclone to work so I can box two instances of Everquest on one computer. The problem I have is that it seems EQ only allows keyboard input for the foreground application, and even with Inner Space's "Lock Foreground" setting turned on I still can't get this to work.
Does anybody know how I can get the keyboard working for two instances of Everquest on a single PC?
Does anybody know how I can get the keyboard working for two instances of Everquest on a single PC?
Well, if you're using Inner Space, you don't really need keyclone. And using Inner Space's keyboard emulation, it works wonderfully.
Inner Space provides 3 features that, when combined, form exactly what I think you're looking for.
1. The "press" command allows you to press (and hold if desired) a key or key combination
2. The "relay" command allows you to relay any command (including "press") to an Inner Space session
3. The "bind" command allows you to create hotkeys for a specific session (additionally, the "globalbind" command allows you to create a Windows hotkey, which works anywhere in Windows instead of in that specific session -- the hotkey shown in the window titlebar, e.g. Ctrl+Alt+1, is a globalbind).
So, for example:
Causes the "is1" session to press alt+4, which could cast a spell for you on that character.
Or, say you need a specific EQ hotkey on a specific session to go any time you press CTRL+ALT+W, regardless of which session is in the foreground:
And if you've got, say, 2 melees and a healer, it might be useful for the same key combination used in either melee session to have the healer heal that character. You might do something like so:
and in the other session
All that's missing is an easy to use interface to set up and manage the binds, otherwise everything you need is built right in.
Inner Space provides 3 features that, when combined, form exactly what I think you're looking for.
1. The "press" command allows you to press (and hold if desired) a key or key combination
2. The "relay" command allows you to relay any command (including "press") to an Inner Space session
3. The "bind" command allows you to create hotkeys for a specific session (additionally, the "globalbind" command allows you to create a Windows hotkey, which works anywhere in Windows instead of in that specific session -- the hotkey shown in the window titlebar, e.g. Ctrl+Alt+1, is a globalbind).
So, for example:
Code: Select all
relay is1 press alt+4
Or, say you need a specific EQ hotkey on a specific session to go any time you press CTRL+ALT+W, regardless of which session is in the foreground:
Code: Select all
globalbind mybind ctrl+alt+w press 4
Code: Select all
bind healme shift+alt+h relay is1 press 4
Code: Select all
bind healme shift+alt+h relay is1 press 5
Ok, so how would I set it up to map the keys every time I launched Everquest?
What I want is for all the number pad keys to be passed to my 2nd account whenever I press those keys from the main one.
I'm guessing that'll be something like:
Is that right? Is there any documentation for the key names? How do I save these settings so they always apply to my main EQ session?
Also, if I'm using InnerSpace, is there any way to re-map the eqclient.ini file like WinEQ does? It would be great to run both copies of EQ from the same folder instead of having to have the whole 9GB of EQ copied twice lol.
What I want is for all the number pad keys to be passed to my 2nd account whenever I press those keys from the main one.
I'm guessing that'll be something like:
Code: Select all
bind 1 numpad1 relay is2 numpad1
bind 2 numpad2 relay is2 numpad2
...
bind enter numpadenter relay is2 numpadenter
bind ctrl-1 ctrl+numpad1 relay is2 ctrl+numpad1
Also, if I'm using InnerSpace, is there any way to re-map the eqclient.ini file like WinEQ does? It would be great to run both copies of EQ from the same folder instead of having to have the whole 9GB of EQ copied twice lol.
By default, Inner Space is doing so on a per-profile basis. If you launch the "No Patch" profile for EverQuest, you're using "eqclient-EverQuest No Patch.ini". You would probably want to duplicate the No Patch profile in Inner Space. The easiest way to do so is to close Inner Space and open up GameConfiguration.XML in notepad, search for EverQuest, and you'll see something that looks something like this:Also, if I'm using InnerSpace, is there any way to re-map the eqclient.ini file like WinEQ does? It would be great to run both copies of EQ from the same folder instead of having to have the whole 9GB of EQ copied twice lol.
Code: Select all
<Set Name="EverQuest" GUID="1610613078">
<Set Name="Profiles" GUID="1610613079">
<Set Name="EverQuest Default Profile" GUID="1610613080">
<Setting Name="Game">EverQuest</Setting>
<Setting Name="Executable">everquest.exe</Setting>
<Setting Name="Parameters" />
<Setting Name="Path">C:\Program Files\EverQuest</Setting>
</Set>
[color=red][b]<Set Name="EverQuest No Patch" GUID="1610613081">
<Setting Name="Game">EverQuest</Setting>
<Setting Name="Executable">eqgame.exe</Setting>
<Setting Name="Parameters">patchme</Setting>
<Setting Name="Path">C:\Program Files\EverQuest</Setting>
</Set>[/b][/color]
</Set>
<Setting Name="Win32 Mouse Position">1</Setting>
<Setting Name="OpenGL">1</Setting>
<Setting Name="Direct3D8">1</Setting>
<Setting Name="Direct3D9">1</Setting>
<Setting Name="Win32I Keyboard">1</Setting>
<Setting Name="Win32I Mouse">1</Setting>
<Setting Name="DirectInput8 Keyboard">1</Setting>
<Setting Name="DirectInput8 Mouse">1</Setting>
<Setting Name="modules">eqgame.exe,testeqgame.exe,testeqmain.dll,eqmain.dll,eqgraphicsdx9.dll,eqgfx_dx8.dll</Setting>
<Setting Name="Background Mouse">1</Setting>
</Set>
Code: Select all
<Set Name="EverQuest My Profile">
The names of all of the keys are dependent on your keyboard driver and language settings in Windows, so while there is no specific documentation containing the list of all the names, you can look at the list any time you like. The "bind" and "press" commands both work off the same list, and both have a -keylist switch that can output the entire list.
Code: Select all
bind -keylist
- or -
press -keylist
Code: Select all
List of available keys:
--------------------------
' F11 G8 Num 8
, F12 G9 Num 9
- F13 H Num Del
. F14 Help Num Enter
/ F15 Home Num Lock
0 F16 I O
1 F17 Insert P
2 F18 J Page Down
3 F19 K Page Up
4 F2 L Pause
5 F20 Left Play/Pause
6 F21 Left Windows Q
7 F22 M R
8 F23 M1 Right
9 F24 M2 Right Shift
; F3 M3 Right Windows
= F4 Mouse1 S
[ F5 Mouse2 Scan Next Track
\ F6 Mouse3 Scan Previous Track
] F7 Mouse4 Scroll Lock
` F8 Mouse5 Shift
A F9 Mouse6 Space
Alt G Mouse7 Stop
Application G1 Mouse8 Sys Req
B G10 MR T
Backspace G11 Mute Tab
C G12 N U
Caps Lock G13 Num * Up
Ctrl G14 Num + V
D G15 Num - Volume Decrement
Delete G16 Num / Volume Increment
Down G17 Num 0 W
E G18 Num 1 X
End G2 Num 2 Y
Enter G3 Num 3 Z
Esc G4 Num 4
F G5 Num 5
F1 G6 Num 6
F10 G7 Num 7
So as you can see, the numpad keys are Num <xxx>, such as Num Del, Num 1, Num +, etc. To use the numpad keys in bind or press requires quoting (because of the spaces, so the same is true for scroll lock or any other key name that has a space in it), like so:
Code: Select all
bind num1 "Num 1" relay is2 press "Num 1"
bind ctrlnum1 "Ctrl+Num 1" relay is2 press "Ctrl+Num 1"
While there is no way to "save" the settings, there are a host of options available for you to store the commands. One is the "Startup Sequence", which consists of a global startup sequence, a per-game startup sequence, and a per-profile startup sequence (and they execute in that order). You can add any number of commands to these sequences.
What I would do is create a script, in notepad or your favorite text editor, which simply consists of this:
Code: Select all
function main()
{
; binds go here
}
Code: Select all
function main()
{
bind num1 "Num 1" relay is2 press "Num 1"
bind num2 "Num 2" relay is2 press "Num 2"
bind numenter "Num Enter" relay is2 press "Num Enter"
bind ctrlnum1 "Ctrl+Num 1" relay is2 press "Ctrl+Num 1"
}
Code: Select all
run keybinds

That should answer all of your questions in detail. I won't be immediately available again after posting this until tonight or tomorrow, so please excuse the lack of reply in the meantime if you have more questions.
Good god man! After a reply like that I wouldn't have grounds to complain if you took a fortnight to type your next replyso please excuse the lack of reply in the meantime

It looks like I've got a fun night of learning InnerSpace ahead of me

Ok, getting there with this now. You're right about editing the xml, that's tons easier than the UI
I've got two EQ sessions running now, with separate .ini files. The main problem I had before was that I wasn't using the nopatch settings, and Inner Space wasn't actually running.
IS is running now though, and I can use the Ctrl+Alt+1 and Ctrl+Alt+2 hotkeys to swop between clients. I can also type "relay is2 press "num 1"" into the console to send commands to my boxed character, and see that working, and for most keypresses I can see the commands working on the boxed character (eg: I can press a key on my main and watch the 2nd character sit down).
However, I can't get it to recognise accept key presses for the movement keys. For some reason those just don't work. On the boxed character I have numberpad 4, 5, 6 and 8 bound to the movement keys, but I can't make the character move around.
The script I'm running to bind the keys is:
I'm pretty sure the syntax is right since I can pass "Num 3" (sit) easily and see it work, but "Num 5" does nothing. If anybody has any clue about how to fix this I'd love to hear it.
Myx
PS. I'm wondering: Does InnerSpace just send a single keypress, or does it bind the keys so if you hold a key down, it sends a continual signal?

IS is running now though, and I can use the Ctrl+Alt+1 and Ctrl+Alt+2 hotkeys to swop between clients. I can also type "relay is2 press "num 1"" into the console to send commands to my boxed character, and see that working, and for most keypresses I can see the commands working on the boxed character (eg: I can press a key on my main and watch the 2nd character sit down).
However, I can't get it to recognise accept key presses for the movement keys. For some reason those just don't work. On the boxed character I have numberpad 4, 5, 6 and 8 bound to the movement keys, but I can't make the character move around.
The script I'm running to bind the keys is:
Code: Select all
function main()
{
bind num1 "Num 1" relay is2 press "Num 1"
bind num2 "Num 2" relay is2 press "Num 2"
bind num3 "Num 3" relay is2 press "Num 3"
bind num4 "Num 4" relay is2 press "Num 4"
bind num5 "Num 5" relay is2 press "Num 5"
bind num6 "Num 6" relay is2 press "Num 6"
bind num7 "Num 7" relay is2 press "Num 7"
bind num8 "Num 8" relay is2 press "Num 8"
bind num9 "Num 9" relay is2 press "Num 9"
bind num0 "Num 0" relay is2 press "Num 0"
bind numDEC "Num decimal" relay is2 press "Num decimal"
bind numdiv "Num divide" relay is2 press "Num divide"
bind nument "Num enter" relay is2 press "Num enter"
bind numplus "Num plus" relay is2 press "Num plus"
bind numsub "Num sub" relay is2 press "Num sub"
bind nummult "Nummult" relay is2 press "Nummult"
bind ctrlnum1 "ctrl+Num 1" relay is2 press "ctrl+Num 1"
bind ctrlnum2 "ctrl+Num 2" relay is2 press "ctrl+Num 2"
bind ctrlnum3 "ctrl+Num 3" relay is2 press "ctrl+Num 3"
bind ctrlnum4 "ctrl+Num 4" relay is2 press "ctrl+Num 4"
bind ctrlnum5 "ctrl+Num 5" relay is2 press "ctrl+Num 5"
bind ctrlnum6 "ctrl+Num 6" relay is2 press "ctrl+Num 6"
bind ctrlnum7 "ctrl+Num 7" relay is2 press "ctrl+Num 7"
bind ctrlnum8 "ctrl+Num 8" relay is2 press "ctrl+Num 8"
bind ctrlnum9 "ctrl+Num 9" relay is2 press "ctrl+Num 9"
bind ctrlnum0 "ctrl+Num 0" relay is2 press "ctrl+Num 0"
bind ctrlnumDEC "ctrl+Num decimal" relay is2 press "ctrl+Num decimal"
bind ctrlnumdiv "ctrl+Num divide" relay is2 press "ctrl+Num divide"
bind ctrlnument "ctrl+Num enter" relay is2 press "ctrl+Num enter"
bind ctrlnumplus "ctrl+Num plus" relay is2 press "ctrl+Num plus"
bind ctrlnumsub "ctrl+Num sub" relay is2 press "ctrl+Num sub"
bind ctrlnummult "ctrl+Nummult" relay is2 press "ctrl+Nummult"
}
Myx
PS. I'm wondering: Does InnerSpace just send a single keypress, or does it bind the keys so if you hold a key down, it sends a continual signal?
Update: It's definately just the movement keys that don't work. I've found out what I did wrong with some other stuff that wasn't working, and bar movement it's working like a charm now. I can even use Ctrl+Num 4 to cast a spell, that works fine. It seems to just be that EQ won't accept movement commands from InnerSpace.
While typing this I wondered if it simply wasn't sending a long enough command, I had a read through the manual and found you can use "press -hold". Testing with that I can see that does work and I can get the character to spin on the spot by going to the console and type:
So, I guess what I need is an update to the bind command. Something that holds the key down for as long as I hold down the key on my main.
While typing this I wondered if it simply wasn't sending a long enough command, I had a read through the manual and found you can use "press -hold". Testing with that I can see that does work and I can get the character to spin on the spot by going to the console and type:
Code: Select all
relay is2 press -hold "num 6"
Code: Select all
bind -press num1 "Num 1" relay is2 press -hold "Num 1"
bind -release num1 "Num 1" relay is2 press -release "Num 1"

Hmm... spoke slightly too soon. Everything works bar Num 5, for some reason that works in game, but InnerSpace isn't able to pick it up.
Although my script says:
If I do a bind -list, I'm shown the following:
I also found this thread talking about Num 5 only working with num lock on, don't know if it's relevant though.
http://www.lavishsoft.com/forum/viewtop ... hlight=num
Although my script says:
Code: Select all
bind -press num5 "Num 5" relay Lunnolax press -hold "Num 5"
bind -release num5b "Num 5" relay Lunnolax press -release "Num 5"
Code: Select all
[num5] [Clear] Command (Press): relay "Lunnolax" "press" "-hold" "Num 5"
[num5b] [Clear] Command (Release): relay "Lunnolax" "press" "-release" "Num 5"
http://www.lavishsoft.com/forum/viewtop ... hlight=num
Well, that post in particular probably isn't relevant, since the Inner Space input system has changed drastically since 2005, but I suppose I cant help but give the same response: I'll look into it. 
I'm fairly certain I had fixed it at one point, but Num 5 behavior has always been kind of odd. The Num Lock thing is absolutely true -- the behavior of numpad keys is quite different depending on whether num lock is on or not (If memory serves, it actually produces completely different key codes depending on the num lock state). At any rate, I'll see if I can track this down later today, I'm pretty tied up for the next several hours, but we'll see.

I'm fairly certain I had fixed it at one point, but Num 5 behavior has always been kind of odd. The Num Lock thing is absolutely true -- the behavior of numpad keys is quite different depending on whether num lock is on or not (If memory serves, it actually produces completely different key codes depending on the num lock state). At any rate, I'll see if I can track this down later today, I'm pretty tied up for the next several hours, but we'll see.
Thanks, let me know if there's anything I can troubleshoot this end.
The thing that strikes me as odd though is the way it's reported in "bind -list". Num+5 seems to be recorded completely differently to the other keys:
But the command to create it was identical:
And it shows up as 'Clear' for both the 'Num 5' and the 'Ctrl+Num 5' binding.
The thing that strikes me as odd though is the way it's reported in "bind -list". Num+5 seems to be recorded completely differently to the other keys:
Code: Select all
[ctrlnum2] [CTRL+NUM 2] Command (Release): relay "Lunnolax" "press" "ctrl+Num 2"
[ctrlnum3] [CTRL+NUM 3] Command (Release): relay "Lunnolax" "press" "ctrl+Num 3"
[ctrlnum4] [CTRL+NUM 4] Command (Release): relay "Lunnolax" "press" "ctrl+Num 4"
[ctrlnum5] [CTRL+Clear] Command (Release): relay "Lunnolax" "press" "ctrl+Num 5"
[ctrlnum6] [CTRL+NUM 6] Command (Release): relay "Lunnolax" "press" "ctrl+Num 6"
[ctrlnum7] [CTRL+NUM 7] Command (Release): relay "Lunnolax" "press" "ctrl+Num 7"
Code: Select all
bind ctrlnum2 "ctrl+Num 2" relay Lunnolax press "ctrl+Num 2"
bind ctrlnum3 "ctrl+Num 3" relay Lunnolax press "ctrl+Num 3"
bind ctrlnum4 "ctrl+Num 4" relay Lunnolax press "ctrl+Num 4"
bind ctrlnum5 "ctrl+Num 5" relay Lunnolax press "ctrl+Num 5"
bind ctrlnum6 "ctrl+Num 6" relay Lunnolax press "ctrl+Num 6"
bind ctrlnum7 "ctrl+Num 7" relay Lunnolax press "ctrl+Num 7"
Yeah, like I said, Num 5 has always been odd. The testing I did way back when showed that it would give the "Clear" key code without num lock, and "Num 5" with num lock. What you're seeing is some conversion that Inner Space had to do to support it at the time. I'll have to do further testing and research on it.