Jump to content
Sign in to follow this  
VeryBumpy

PMDG DC-6, force mapping FSX keyboard and control functions?

Recommended Posts

As I listed years ago, the PMDG DC-6 is far from perfect.

https://www.avsim.com/forums/topic/516911-pmdg-dc-6-current-state-seems-a-bit-underwhelming/

I'm back into FSX and see PMDG still didn't address much. (the see-through engine area isn't even fixed?!! pathetic)

 

So I'm trying to find work-arounds for their prerogatives:

  1. throttle increase/decrease using game controller buttons
  2. Propeller Low/Propeller High using keyboard keys
  3. Mixture control using keyboard keys
  4. Shift+E then # door activation using keyboard keys
  5. map appropriate lights to default keyboard keys

 

Will the payed version of FSUIPC be able solve everything on my list?

From what I've read LINDA 'only' does controller buttons, not keyboard keys, correct?

 

I'm not familiar with FSUIPC limitations so any help or redirects are appreciated.

Thank you.

 

 

Share this post


Link to post
Share on other sites

The PMDG DC-6 has a virtual co-pilot that operates the throttles and mixture via commands to the co-pilot from a drop down menu. This probably has to be disabled to operate the throttles and mixture reliably yourself via your controllers and keyboard. Since I don't have much time in the plane I never graduated to the point of using it without the virtual co-pilot.

Ted


3770k@4.5 ghz, Noctua C12P CPU air cooler, Asus Z77, 2 x 4gb DDR3 Corsair 2200 mhz cl 9, EVGA 1080ti, Sony 55" 900E TV 3840 x 2160, Windows 7-64, FSX, P3dv3, P3dv4

Share this post


Link to post
Share on other sites

So I finally spent some time (and $ (FSUIPC)) on my OP to fix the issues with the PMDG DC-6.

The answer is yes, FSUIPC and LINDA seems to fix the DC-6 shortcomings, these are my solutions in hopes of helping others:

  1. Can’t throttle increase/decrease using game controller buttons - Paid version of FSUIPC allows mapping of default throttle keys to game controller buttons.
  2. Can’t 'Propeller High'/'Propeller Low' using keyboard keys - FSUIPC allows prop pitch lever to be set to max/min values with Axis Propeller Set, Parameter:+/-17500 using default keys.
  3. Can’t mixture control using default FSX keys - Paid version of FSUIPC allows mapping of default keys with a custom Lua script.
  4. Can’t Shift+E then # door activation default FSX keys - Paid version of FSUIPC allows mapping of default keys with a custom Lua script.
  5. Can’t control lights with default FSX keys - Paid version of FSUIPC allows mapping of default keys with a custom Lua script.
  6. Batt Sw doesn’t move with default FSX keys - Paid version of FSUIPC allows mapping of default keys with a custom Lua script.
  7. C+D leaves lights on, window open - Paid version of FSUIPC allows scripting to set as needed of default keys with a custom Lua script.
  8. BONUS: Carb Air Levers – using LINDA with Module: PMDG DC-6, Guenter Steiner, ver 1.0, Sept 2017, easily allows lever mapping to gamepad buttons.

 

Below is most of my crude and sloppy Lua code to help those that may want to use or learn from it:

=========

Controlling Lights below here

=========

function DC6_All_on ()
ipc.control(66587, 6703) --wheel well light
ipc.control(66587, 6701)
ipc.control(66587, 6704)
    if ipc.readLvar("dc6_121_obj") == 1 then --landing
    ipc.control(66587, 12101)
    end

    if ipc.readLvar("dc6_122_obj") == 1 then --extend for landing lights
    ipc.control(66587, 12201) --extend or down direction
    elseif ipc.readLvar("dc6_122_obj") == 2 then --2 is sw in up most position(retract)
    ipc.control(66587, 12201)
    ipc.sleep(500)
    ipc.control(66587, 12201)
   --ipc.sleep(500)
   --ipc.control(66587, 12202)--retract or up direction
        end

    if ipc.readLvar("dc6_041_obj") == 0 then --beacon
    ipc.control(66587, 4101)
    end
    if ipc.readLvar("dc6_040_obj") == 1 then --position
    ipc.control(66587, 4002)
    elseif ipc.readLvar("dc6_040_obj") == 0 then
    ipc.control(66587, 4002)
    ipc.sleep(1000)
    ipc.control(66587, 4002)
    end
--red NOT on
    --ipc.writeLvar("dc6_708_obj", 1)
    --ipc.writeLvar("dc6_043_obj", 1)
    --ipc.writeLvar("dc6_699_obj", 1)
    --ipc.writeLvar("dc6_048_obj", 1)
    --ipc.writeLvar("dc6_058_obj", 1)
--white
    ipc.writeLvar("dc6_050_obj", 1)
    ipc.writeLvar("dc6_049_obj", 1)
    ipc.writeLvar("dc6_174_obj", 1)
   
ipc.lineDisplay("All Lights ON")
ipc.sleep(2000)
ipc.lineDisplay("")
--ipc.sleep(5000)
    --ipc.control(66587, 12202) --landing light retracts back to off(up) DONT, turns of nacelle lighting

end

function DC6_All_off ()
    if ipc.readLvar("dc6_122_obj") == 1 then --retracts
    ipc.control(66587, 12202)
    elseif ipc.readLvar("dc6_122_obj") == 0 then
    ipc.control(66587, 12202)
    ipc.sleep(500)
    ipc.control(66587, 12202)
    --ipc.sleep(500)
    --ipc.control(66587, 12201)
    end
    if ipc.readLvar("dc6_041_obj") == 1 then --beacon
    ipc.control(66587, 4101)
    end
    if ipc.readLvar("dc6_040_obj") == 2 then --position
    ipc.control(66587, 4001)
    elseif ipc.readLvar("dc6_040_obj") == 0 then
    ipc.control(66587, 4002)
    end
--red interior
    --ipc.writeLvar("dc6_708_obj", 0)
    --ipc.writeLvar("dc6_043_obj", 0)
    --ipc.writeLvar("dc6_699_obj", 0)
    --ipc.writeLvar("dc6_048_obj", 0)
    --ipc.writeLvar("dc6_058_obj", 0)
--white
    ipc.writeLvar("dc6_050_obj", 0)
    ipc.writeLvar("dc6_049_obj", 0)
    ipc.writeLvar("dc6_174_obj", 0)
   ipc.lineDisplay("All Lights OFF")
   ipc.sleep(2000)
   ipc.lineDisplay("")
   ipc.sleep(2000)
    if ipc.readLvar("dc6_121_obj") == 0 then --landing off after delay so see cool sweep motion
    ipc.control(66587, 12101)
    ipc.control(66587, 6703) --wheel well light
    ipc.control(66587, 6701)
    ipc.control(66587, 6704)
    end    

ipc.control(66587, 12201) --move retract sw back down to off from retract position
end

function DC6LightsAll ()
    if ipc.readLvar("dc6_050_obj") == 0 then
       DC6_All_on ()
    else
       DC6_All_off ()
    end
end

DC6LightsAll ()
return

========

Door Control below here

========

--Calling this Lua with Shift+E in Key Presses
--fwd below
function DC6_ExitFwd_open ()
    ipc.writeLvar("dc6_446_obj", 1)
    ipc.display("Front Door OPEN")
    ipc.sleep(4000)
    if ipc.readLvar("dc6_446_obj") == 1 then ipc.exit()
    end
end

function DC6_ExitFwd_close ()
    ipc.writeLvar("dc6_446_obj", 0)
    ipc.display("Front Door CLOSED")
    ipc.sleep(4000)
if ipc.readLvar("dc6_446_obj") == 0 then ipc.exit()
    end
end

function DC6_ExitFwd_toggle ()
    if ipc.readLvar("dc6_446_obj") == 0 then
       DC6_ExitFwd_open ()
    else
       DC6_ExitFwd_close ()
    end
--ipc.exit ()
end


--aft below
function DC6_ExitAft_open ()
    ipc.writeLvar("dc6_451_obj", 1)
    ipc.display("Rear Door OPEN")
ipc.sleep(4000)
if ipc.readLvar("dc6_451_obj") == 1 then ipc.exit()
    end
end

function DC6_ExitAft_close ()
    ipc.writeLvar("dc6_451_obj", 0)
    ipc.display("Rear Door CLOSED")
ipc.sleep(4000)
if ipc.readLvar("dc6_451_obj") == 0 then ipc.exit()
    end
end

function DC6_ExitAft_toggle ()
    if ipc.readLvar("dc6_451_obj") == 0 then
       DC6_ExitAft_open ()
    else
       DC6_ExitAft_close ()
    end
--ipc.exit ()
end
--cargo below
function DC6_CargoHold_open ()
    ipc.writeLvar("dc6_448_obj", 1)
  ipc.display("Cargo Hatches OPEN")
ipc.sleep(4000)
if ipc.readLvar("dc6_448_obj") == 1 then ipc.exit()
    end
end

function DC6_CargoHold_close ()
    ipc.writeLvar("dc6_448_obj", 0)
    ipc.display("Cargo Hatches CLOSED")
ipc.sleep(4000)
if ipc.readLvar("dc6_448_obj") == 0 then ipc.exit()
    end
end

function DC6_CargoHold_toggle ()
    if ipc.readLvar("dc6_448_obj") == 0 then
       DC6_CargoHold_open ()
    else
       DC6_CargoHold_close ()
    end
end


-- note: 153078 *** EVENT: Cntrl= 66587 (0x0001041b), Param= 44901 (0x0000af65) ROTOR_BRAKE
function PilotWindow ()
        ipc.control(66587, 44901)
        ipc.display("Pilot Window Toggle")
    ipc.sleep(3000)
    ipc.exit()
end

event.key(49, 8, "DC6_ExitFwd_toggle")
event.key(50, 8, "DC6_ExitAft_toggle")
event.key(51, 8, "DC6_CargoHold_toggle")
event.key(52, 8, "PilotWindow")

=========

Mixture Lever controls below here

=========

    ipc.control(66587, 40002) --richen mixtures
    ipc.control(66587, 40102)
    ipc.control(66587, 40202)
    ipc.control(66587, 40302)

 

    ipc.control(66587, 40001) --lean out mixtures
    ipc.control(66587, 40101)
    ipc.control(66587, 40201)
    ipc.control(66587, 40301)
   

Edited by VeryBumpy
minor corrections

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Tom Allensworth,
    Founder of AVSIM Online


  • Flight Simulation's Premier Resource!

    AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...