Everquest keyboard not working in background

Discussion of Inner Space

Moderators: Lavish Software Team, Moderators

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Everquest keyboard not working in background

Post by myxiplx » Mon Jan 07, 2008 1:30 am

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?

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Mon Jan 07, 2008 9:59 am

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:

Code: Select all

relay is1 press alt+4
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:

Code: Select all

globalbind mybind ctrl+alt+w press 4
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:

Code: Select all

bind healme shift+alt+h relay is1 press 4
and in the other session

Code: Select all

bind healme shift+alt+h relay is1 press 5
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.

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Mon Jan 07, 2008 10:18 am

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:

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
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.

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Mon Jan 07, 2008 10:56 am

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:

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&#58;\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&#58;\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>
The portion I colored in bold red is what you want to copy, and paste just below it. Rename the set and remove the GUID="xxxxx" portion, so the <Set ...> tag looks like so:

Code: Select all

<Set Name="EverQuest My Profile">
You can do it through the configuration interface in IS, but there's no button to copy a profile and you'd have to manually fill in the path and filename -- not a big deal, but to do it faster, especially if you wanted to set up 4 different profiles, it's better to edit the XML if you're comfortable enough with it.

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
Here's mine, with my G15 keyboard:

Code: Select all

List of available keys&#58;
--------------------------
'                         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                     
Note that some of the keys do not actually appear on the keyboard -- F13 through F24 for example don't exist on most US keyboards including mine. But you do see all of the G1-G18 keys provided by my G15 keyboard as well as M1, M2, M3 and MR (and here's a bunch of information you may not want or need, but I will mention anyway) -- Inner Space supports all of them (for session-specific binds, but Windows does not support anything special for global binds), provided that the G15 Profiler is not changing their behavior (G15 users would want to disable the profiler to use these keys in Inner Space binds). If you had gamepads or other additional input devices that support Direct Input (Xbox 360 controllers, guitar hero guitars, etc) plugged in at the start of the session, buttons from those devices will also show up in the list (and a side note, D-Pads and axes such as thumb sticks and accelerometers can be specially used through a different system)

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"
note: I'm using capitalization, but lower case is fine

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&#40;&#41;
&#123;
; binds go here
&#125;
So for example:

Code: Select all

function main&#40;&#41;
&#123;
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"
&#125;
Save it as keybinds.iss, or any name you please, but .iss is short for Inner Space Script, so it's best to use that extension. Then one command will execute the script and apply all of your binds:

Code: Select all

run keybinds
You can do that command manually each time if you like, or you can put it in the startup sequence for a specific profile. In the game configuration for the profile in question, click on "Startup" in the upper right (I'm explaining this process in detail because it's not the most user friendly or obvious, and when Inner Space 2 comes out it'll be much better ;) ). Create a new entry in the sequence by clicking Insert. Then click on New Entry. Name the sequence item whatever you please in the text box on top, then put the command in the text box on the bottom. When you're finished with the sequence editor, click Finished. You must click Apply to save your changes.

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.

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Mon Jan 07, 2008 11:11 am

so please excuse the lack of reply in the meantime
Good god man! After a reply like that I wouldn't have grounds to complain if you took a fortnight to type your next reply :D Many, many thanks for that, the detail is hugely appreciated.

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

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Mon Jan 07, 2008 4:18 pm

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:

Code: Select all

function main&#40;&#41;
&#123;
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"
&#125;
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?

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Mon Jan 07, 2008 4:29 pm

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:

Code: Select all

relay is2 press -hold "num 6"
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.

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Tue Jan 08, 2008 8:08 am

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"
:)

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Tue Jan 08, 2008 8:10 am

wohoo! :-D

You know, I had a sneaky suspicion there would be a way to script it, but couldn't work it out for the life of me.

Many thanks for the help, now I just need to buy that 2nd monitor and I can practice driving two chars at once :D

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Tue Jan 08, 2008 2:12 pm

Works a treat, only problem now is the lag. Makes me feel like I'm playing Nightmare on telly :D

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Fri Jan 18, 2008 2:12 pm

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:

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"
If I do a bind -list, I'm shown the following:

Code: Select all

[num5] [Clear] Command &#40;Press&#41;&#58; relay "Lunnolax" "press" "-hold" "Num 5"
[num5b] [Clear] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "-release" "Num 5"
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

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Sat Jan 19, 2008 9:05 am

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.

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Sat Jan 19, 2008 9:11 am

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:

Code: Select all

[ctrlnum2] [CTRL+NUM 2] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 2"
[ctrlnum3] [CTRL+NUM 3] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 3"
[ctrlnum4] [CTRL+NUM 4] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 4"
[ctrlnum5] [CTRL+Clear] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 5"
[ctrlnum6] [CTRL+NUM 6] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 6"
[ctrlnum7] [CTRL+NUM 7] Command &#40;Release&#41;&#58; relay "Lunnolax" "press" "ctrl+Num 7"
But the command to create it was identical:

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"
And it shows up as 'Clear' for both the 'Num 5' and the 'Ctrl+Num 5' binding.

Lax
Owner
Posts: 6634
Joined: Fri Jun 18, 2004 6:08 pm

Post by Lax » Sat Jan 19, 2008 9:16 am

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.

myxiplx
GamingTools Subscriber
Posts: 25
Joined: Fri Aug 31, 2007 4:16 pm

Post by myxiplx » Sat Jan 19, 2008 9:27 am

Well it's not working with num lock on or off here. I'm using a logitech wireless keyboard, so there's every change Logitech have done something clever.

Is there any way for me to get Innerspace to show the key code it's detecting as I press the key?

Post Reply