Driving Enhancements - ATS/ETS2 - Updated 13/03/2025

Make your game even better
Post Reply
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Driving Enhancements - ATS/ETS2 - Updated 13/03/2025

Post by JHTrucker » January 10th, 2025, 10:49 pm

Post 1 of 5 - Driving Enhancements - Description.

Updated 13/03/2025 - New controls.sii file edits date highlighted. What's new, look here: viewtopic.php?p=67654#p67654

==============================================================================

This isn't a mod to just drop into your mod manager, you'll also need to follow instructions and edit your controls.sii & config_local.cfg files, using Notepad or similar.

For ATS/ETS2 game version 1.41+
The supplied mod contains no game version specific files, but the code that controls all the functions does require at least game version 1.41.

Confirmed to work for game versions 1.41 to 1.53

Note 1: This will NOT work with VR or Tobii Eye devices, see these links instead:
Tobii Eye Driving Enhancements - viewtopic.php?p=57548#p57548
VR Driving Enhancements - viewtopic.php?p=55557#p55557

Note 2: This will NOT work if you use 'Steam Controller Support', that will remove all of the required code from the controls.sii file.
To disable steam controller support:
In Steam Library - Right Click Game - Properties - Controller - Select - Disable Steam Input.
If you don't know how to configure your controller without using steam input, it's probably best not to even attempt trying this mod.

Note 3: If you have '-sysmouse' set in the games steam launch options, remove it, else the 'Driving Enhancements' features will not function correctly.

==============================================================================


If like to role play or just want a little more immersion in your sim...

Driving Enhancements Features:
In the driving seat, select from:
SCS game default look functions (interior instant look & variable look or from 1.53+ smooth look motion with auto centre options).
Or
New, for 1.41+, 'Driving Enhancements' smooth look left, right, behind (out of window) & down at dash (for a closer look) either with 'Press & Hold' or 'Toggle', all with smooth re-centre.
Pressing CAM 1 will also smooth re-centre the view.
You can adjust smooth look speed to how fast you want it.
You can set your required look left/right angle to 50, 60, 70, 80 or 90 degrees.
You can select the above to have mouse look enabled or disabled.

Optional - Auto zoom when 'Toggle' looking at the passenger side mirror.

Optional - Press & Hold or Toggle Interior Zoom on/off.

CAM 1, Driving seat - CAM 2, Passenger Seat - CAM 3, Sleeper area - CAM 4, Outside.
You can only drive from the driving seat or any game default external camera (CAM 5, 6, 7, 8, 9 & 10 - see camera list below).

First person animated movement between drivers seat, passenger seat, sleeper area & outside.
You can therefore move into the sleeper before you activate 'sleep', you must first be parked in a sleep area.

'Action' Button, can be used to move to and from sleeper area & to and from outside.

Outside the truck:
Basic first person 'walking' movement with a fixed height, head bob and crouch (don't expect GTA style exploring!).
You can 'Walk' around the general area of your truck, stand next to the fuel tank when refueling or the crank handle when you attach/detach the trailer.
If parked on an 'Activate' icon you can 'walk' to a suitable location before pressing your 'Activate' key/button.
For example Service, Showroom, Job select (nearby office/hut), hotel (to sleep if using day cab) etc. Once activated, 'walk' back to your truck.
Note: The above 'walking' feature is optional, you can still sit in the driving seat to refuel, attach/detach the trailer etc.

All features can be controlled via a keyboard, gamepad or wheel.
TrackIR can also be used, if required, but VR and Tobii Eye are NOT supported and will not function at all.

This is not fixed mod forcing you to do all features it contains, choose just the ones you want, you can for example:
Play the game the way you always have been, but now use only the 'lay down in the sleeper before activating sleep', feature.

A 'Quick Start' controls.sii file is available, using game default keyboard setup for WASD driving and 'walking', so you can quickly test this out.

Here's a quick demo of some of the above features:
(Ignore the poor image quality, game on lowest settings, 30 fps and recorded at 720p on old camera phone).

Xbox360 controller was setup as:
Left thumbstick = Steer & Turn 'walk' view left/right.
Right trigger = Throttle & 'walk/run' forwards.
Left trigger = Brake & 'walk' backwards.
Button Yellow (Y) = 'Action'.
Button Blue (X) = Attach/detach trailer.
Button Red (B) = Activate.
Button Green (A) = Park brake.
Note: You can setup your controller the way you want it.

Here's a quick 'walking' only demo using 'DE' keyboard defaults:
(Ignore the poor image quality, game on lowest settings, 30 fps and recorded at 720p on old camera phone).


If you use TrackIR and want some more features, see 'TrackIR Driving Enhancements' instead: viewtopic.php?p=46457#p46457

==============================================================================

Driving Enhancements Cameras:
CAM 1 - Keyboard 1 - Game standard driving view - Set your 'look' option via Preset 1 in Tobii Eye menu.
CAM 2 - Keyboard 2 - NEW - Passenger Seat. *** You cannot drive from this camera ***
CAM 3 - Keyboard 3 - NEW - Sleeper Area. *** You cannot drive from this camera ***
CAM 4 - Keyboard 4 - NEW - Outside truck. *** You cannot drive from this camera ***
CAM 5 - Keyboard 5 - Game standard chase view.
CAM 6 - Keyboard 6 - Game standard top down view.
CAM 7 - Keyboard 7 - Game standard roof view.
CAM 8 - Keyboard 8 - Game standard Drive-By view.
CAM 9 - Keyboard 9 - Game standard bumper view.
CAM 10 - ALT + Keyboard 9 - Game standard On-Wheel view.
Note 1: You can switch from (cam 1/2/3/4) to (cam 5/6/7/8/9/10) OR switch from (cam 5/6/7/8/9/10) to (cam 1).
Note 2: You can't switch from an external 'driving' camera (cam 5/6/7/8/9/10) to a 'non-driving' camera (cam 2/3/4) to avoid losing control of your truck.
Note 3: Game standard 'Cam Cycle' function is disabled because it breaks 'DE' functionality.

==============================================================================

Use the games Tobii Eye menu to setup the Driving Enhancements features:
Open Tobii Eye menu (shift + numlock).
Image
At the top of the menu:
1 - Enable/Disable 'DE' code (only game default functions when disabled).
Note: This is provided so you can quickly disable the 'DE' code if you think it's causing an issue with a certain aspect of the game, perhaps garage mode, photo mode, editor etc? and then re-enable when you're back to doing driving and 'walking'. Further note: Original cam 5 (lean out) won't function correctly until the 'DE' mod is also removed.
At the bottom of the menu:
2 - Assign 'Action' Button.
3 - Select Driving Seat 'look' option.
4 - Select Passenger Seat.
5 - Select Sleeper Area.
Note: Don't click 'Reset to defaults' or any item not highlighted in a green box.

==============================================================================

How to select driving seat look options:
Open Tobii Eye menu (shift + numlock).
Scroll down to the very bottom of the menu and click on the drop down for 'Apply Extended View Preset 1'
Only choose presets that start with '1' and match your trucks driving side, LHD 'L' or RHD 'R'.
Example '1L ....' for LHD trucks or '1R ....' for RHD trucks.

1L - Game Default Look Options <-- LHD using game look functions.

1L - Game Default TrackIR <-- LHD using TrackIR - Passenger seat, sleeper & outside will also use TrackIR.

1L 50 Toggle + Press & Hold + Mouse <-- LHD Look angle 50 degrees and mouse can also be used.
1L 60 Toggle + Press & Hold + Mouse <-- LHD Look angle 60 degrees and mouse can also be used.
1L 70 Toggle + Press & Hold + Mouse <-- LHD Look angle 70 degrees and mouse can also be used.
1L 80 Toggle + Press & Hold + Mouse <-- LHD Look angle 80 degrees and mouse can also be used.
1L 90 Toggle + Press & Hold + Mouse <-- LHD Look angle 90 degrees and mouse can also be used.
Note: If you're mouse is too sensitive it may keep toggling off your selected look preference, if so, use the below to disable it.

1L 50 Toggle + Press & Hold <-- LHD Look angle 50 degrees.
1L 60 Toggle + Press & Hold <-- LHD Look angle 60 degrees.
1L 70 Toggle + Press & Hold <-- LHD Look angle 70 degrees.
1L 80 Toggle + Press & Hold <-- LHD Look angle 80 degrees.
1L 90 Toggle + Press & Hold <-- LHD Look angle 90 degrees.

1R - Game Default Look Options <-- RHD using game look functions.

1R - Game Default TrackIR <-- RHD using TrackIR - Passenger seat, sleeper & outside will also use TrackIR.

1R 50 Toggle + Press & Hold + Mouse <-- RHD Look angle 50 degrees and mouse can also be used.
1R 60 Toggle + Press & Hold + Mouse <-- RHD Look angle 60 degrees and mouse can also be used.
1R 70 Toggle + Press & Hold + Mouse <-- RHD Look angle 70 degrees and mouse can also be used.
1R 80 Toggle + Press & Hold + Mouse <-- RHD Look angle 80 degrees and mouse can also be used.
1R 90 Toggle + Press & Hold + Mouse <-- RHD Look angle 90 degrees and mouse can also be used.
Note: If you're mouse is too sensitive it may keep toggling off your selected look preference, if so, use the below to disable it.

1R 50 Toggle + Press & Hold <-- RHD Look angle 50 degrees.
1R 60 Toggle + Press & Hold <-- RHD Look angle 60 degrees.
1R 70 Toggle + Press & Hold <-- RHD Look angle 70 degrees.
1R 80 Toggle + Press & Hold <-- RHD Look angle 80 degrees.
1R 90 Toggle + Press & Hold <-- RHD Look angle 90 degrees.

Example: 1L 60 Toggle + Press & Hold <-- LHD truck with look angle 60 degrees and mouse look disabled.

Note: It's important to choose the correct driving position, LHD or RHD to suit your current truck, to prevent unintended results.

Once you exit the Tobii Eye menu press '1' to apply the preset you just selected.

==============================================================================

How to select the passenger seat to use:
Open Tobii Eye menu (shift + numlock).
Scroll down to the very bottom of the menu and click on the drop down for 'Apply Extended View Preset 2'
Only choose presets that start with '2' and match your trucks driving side, LHD 'L' or RHD 'R'.
2L (truck) Passenger Seat <-- LHD that matches your (truck) model
2R (truck) Passenger Seat <-- RHD that matches your (truck) model
Note: If using a mod truck you'll need to choose, what you think, may be a suitable preset from the ones provided.

Example: 2L Freightliner Cascadia Passenger Seat <-- LHD passenger seat for Freightliner Cascadia

==============================================================================

How to select the sleeper to use:
Open Tobii Eye menu (shift + numlock).
Scroll down to the very bottom of the menu and click on the drop down for 'Apply Extended View Preset 3'
Only choose presets that start with '3' and match your trucks driving side, LHD 'L' or RHD 'R'.
3L (truck) Sleeper <-- LHD that matches your (truck) model
3R (truck) Sleeper <-- RHD that matches your (truck) model
Note: If using a mod truck you'll need to choose, what you think, may be a suitable preset from the ones provided.

Example: 3R Iveco S-Way Sleeper <-- RHD sleeper for Iveco S-Way

==============================================================================

How to look around in the driver seat:
Using game default look options: (1L - Game Default Look Options OR 1R - Game Default Look Options).
Assign keys/buttons/gamepad thumbstick etc to these as required:
Look Left (default numpad /)
Look Right (default numpad *)
Interior Look Left (default numpad 4)
Interior Look Up Left (default numpad 7)
Interior Look Right (default numpad 6)
Interior Look Up Right (default numpad 9)
Interior Look Up Middle (default numpad 8)
Interior Look Forward (default numpad 5)
Note: This is exactly how SCS provide the look function in game, there's nothing new or different here, use this preset if that's how you like it.

Using keys/buttons with Driving Enhancements Look Functions: (1L/R xx Toggle + Press & Hold + Mouse OR 1L/R xx Toggle + Press & Hold)
Assign keys/buttons to these as required:
Look Left (default numpad /) <-- Smooth look to 50/60/70/80/90 degrees based on your preset 1 choice.
Look Right (default numpad *) <-- Smooth look to 50/60/70/80/90 degrees based on your preset 1 choice.
Interior Look Left (default numpad 4) <-- Smooth look to 50/60/70/80/90 degrees based on your preset 1 choice.
Interior Look Right (default numpad 6) <-- Smooth look to 50/60/70/80/90 degrees based on your preset 1 choice.
Interior Look Up Middle (default numpad 8) <-- Smooth look down at dash.
Interior Look Forward (default numpad 5) <-- Smooth re-centre. If required, this also toggles off any toggled on view.
Interior Look Up Left (default numpad 2) <-- Smooth look out of the drivers window to look behind you.
Interior Look Up Right (default numpad 9) <-- Smooth 'Auto Look Left/Right' function - See description below.
Note: 'Look Left/Interior Look Left' & 'Look Right/Interior Look Right' have the same functions, just choose which of them you want to assign a key too.

See post 3 - Configuration options - "Adjust Driver seat 'look' speed".

Using gamepad thumbstick with Driving Enhancements Look Functions: (1L/R xx Toggle + Press & Hold + Mouse OR 1L/R xx Toggle + Press & Hold)
Assign gamepad look thumbstick as required:
Look Up/Down Axis <-- Smooth look down at dash & smooth look out of the drivers window to look behind you.
Set 'Look Up/Down Axis mode' as required:
Centered = Up is look behind & Down is look at dash.
Inverted and centered = Up is look at dash & Down is look behind.
Look Left/Right Axis <-- Smooth look left/right to 50/60/70/80/90 degrees based on your preset 1 choice.
You can also assign your look thumbstick button press to:
Interior Look Forward <-- Smooth re-centre. If required, this also toggles off any toggled on view.

See post 3 - Configuration options - "Adjust Driver seat 'look' speed".

*** New 13/03/2025 ***
Smooth 'Auto Look Left/Right' function:
May be useful when trying to pull out of a busy junction?
Once initiated the driving view will continually look left/right at the speed and angle that is currently in use.
The view will pause at each left/right limit for a time that you can set, to suit your requirements.
This function stops and re-centres the view when pressing the throttle (after a time limit that you can set), pressing any of the 'Look' keys or by toggling it off.

To intitate:
Requires a suitable 'DE' driving preset 1 - (1L/R xx Toggle + Press & Hold + Mouse OR 1L/R xx Toggle + Press & Hold).
Press 'Interior Look Up Right' (default numpad 9) - To toggle on.
To stop this function, do any of the below actions:
Press 'Interior Look Up Right' (default numpad 9) - To toggle off.
Press any other 'Interior Look' functions (defaults numpad 2, 4, 5, 6 & 8).
Press Thottle, view will re-centre after your specified time (default 1 sec) - 0 = Instant smooth re-centre.

See post 3 - Configuration options --> "Adjust 'Auto Look Left/Right' function - Re-centre view when pressing throttle" & "Adjust 'Auto Look Left/Right' function - Pause view".

==============================================================================

How to move from the driver seat:
Using game default look functions: (1L - Game Default Look Options OR 1R - Game Default Look Options):
Driver Seat --> Press 2 --> Passenger Seat --> Press 1 --> Driver Seat.
Driver Seat --> Press 3 --> Sleeper Area --> Press 1 --> Driver Seat.
Driver Seat --> Press 4 --> Outside --> Press 1 --> Driver Seat.
OR
Driver Seat --> Press 'Action' --> Outside --> Press 'Action' --> Driver Seat.

Using Driving Enhancements Look Functions: (1L/R xx Toggle + Press & Hold OR 1L/R xx Toggle + Press & Hold + Mouse):
Driver Seat --> Press 2 --> Passenger Seat --> Press 1 --> Driver Seat.
Driver Seat --> Press 3 --> Sleeper Area --> Press 1 --> Driver Seat.
OR
Driver Seat --> 'Toggle Look to passenger side' and then Press 'Action' --> Sleeper Area --> Press 'Action' --> Driver Seat.
Driver Seat --> Press 4 --> Outside --> Press 1 --> Driver Seat.
OR
Driver Seat --> 'Toggle Look to drivers door window' and then Press 'Action' --> Outside --> Press 'Action' --> Driver Seat.

Using Driving Enhancements Look Functions: (1L - Game Default TrackIR OR 1R - Game Default TrackIR):
Driver Seat --> Look at the passenger seat and Press 'Action' --> Passenger Seat --> Look at the driver seat and Press 'Action' --> Driver Seat.
Driver Seat --> Look at the sleeper area and Press 'Action' --> Sleeper Area --> Press 'Action' --> Driver Seat.
Driver Seat --> Look out of the driver side door window and press 'Action' --> Outside --> Press 'Action' --> Driver Seat.
Note: You can still just press 1, 2, 3 & 4 but using above 'Look Action' is better!

==============================================================================

How to look around in the passenger seat, sleeper or outside:
Using the same keys/buttons you assigned for the driving seat look options:
Look Left (default numpad /) <-- Smooth look left, 'Press & Hold'.
Look Right (default numpad *) <-- Smooth look right, 'Press & Hold'.
Interior Look Left (default numpad 4) <-- Smooth look left, 'Press & Hold'.
Interior Look Right (default numpad 6) <-- Smooth look right, 'Press & Hold'.
Interior Look Up Middle (default numpad 8) <-- Smooth look up, 'Press & Hold'.
Interior Look Forward (default numpad 5) <-- Smooth re-centre, 'Quick Press'.
Interior Look Up Left (default numpad 2) <-- Smooth look down, 'Press & Hold'.

Using the same gamepad thumbstick you assigned for the driving seat look options:
Look Up/Down Axis <-- Smooth look up/down, 'Press & Hold'.
Look Left/Right Axis <-- Smooth look left/right, 'Press & Hold'.
Interior Look Forward <-- Smooth re-centre, 'Quick Press'.

See post 3 - Configuration options - "Adjust Passenger, Sleeper & Outside 'look' speed".

==============================================================================

How to 'walk' around outside your truck:
Using keyboard Steering, Throttle and Brake:
Press 'Steer Left' to turn the 'walk' direction left.
Press 'Steer Right' to turn the 'walk' direction right.
Press 'Throttle' to 'walk' forward.
Press 'Brake' to 'walk' backward.
Note: The above same keys also need to be assigned to the games WALKMODE keys for Left/Right/Forward/Back (which they are as 'DE' default WASD).

Using gamepad or wheel & pedals for Steering, Throttle and Brake:
Thumbstick left or turn wheel left to turn the 'walk' direction left.
Thumbstick right or turn wheel right to turn the 'walk' direction right.
Thumbstick forward, Throttle trigger or Throttle pedal to 'walk' forward.
Thumbstick backward, Brake trigger or Brake pedal to 'walk' backward.

Using whatever keys/buttons you have assigned in the games WALKMODE menu:
Press 'WALKMODE Left' to turn the 'walk' direction left.
Press 'WALKMODE Right' to turn the 'walk' direction right.
Press 'WALKMODE Forward' to 'walk' forward.
Press 'WALKMODE Back' to 'walk' backward.
Press 'WALKMODE Run' to run. Optional 'toggle' available, see post 3 - Configuration options for the required edit.
Press 'WALKMODE Crouch' to crouch. Optional 'toggle' available, see post 3 - Configuration options for the required edit.
Note: If the WALKMODE keys you use are the same used for other functions (except steer/throttle/brake), those other functions will operate while you're 'walking'. To prevent this see post 3 - Configuration options.

General notes:
1 - When you are 'walking' around your truck the trucks steering, throttle, brake & clutch are all disabled to prevent it from moving whilst using the same controls to 'walk', but you should always apply the park brake first to prevent your truck rolling down a hill.
2 - There's no collision, you can 'walk' through everything. During development, with collision enabled, it just resulted in all sorts for strange jumping/lurking movements.
3 - For best results, only 'walk' around a flat area, you cannot 'walk' up/down slopes, you'll just 'walk' through them.
4 - There's a limit to how far you can 'walk' away from your truck, you'll know when you get there.
5 - Look left/right/up/down using your chosen method.

See post 3 - Configuration options - "Adjust 'Walk' speed".

==============================================================================

Zoom Interior Camera:

You can Press & Hold or Toggle Interior Zoom on/off as required.
See post 3 - Configuration options - "Zoom Interior Camera - key/button".

You can enable Auto Zoom when looking at the passenger side mirror.
See post 3 - Configuration options - "Auto zoom when 'toggle' looking at the passenger mirror".

You can enable Auto Zoom when looking at the dash.
See post 3 - Configuration options - "Auto zoom dash".

Note: If you just assign a key/button to 'Zoom Interior Camera' in the games key/buttons menu, you'll lose the above optional features.

==============================================================================

What to expect when playing the game with 'Driving Enhancements':

For best results, always drive with cam 1, sleep with cam 3, 'walk' with cam 4 to attach/detach trailer & refuel and avoid 'skipping' parking.

Some game mechanics have been changed to avoid issues where, by default, the game will automatically change to cam 1, at certain times and can therefore cause the 'DE' code to be out of sync with the view.
Example: Whenever you choose a 'quick job' the game will always change to cam 1, regardless of what camera you were last using.

On game startup:
You'll be in the truck if you last exited the game whilst being in the truck, either driving seat, passenger seat or sleeper (Tip: Change to sleeper before exiting the game, your in game character may as well rest while your not playing!).
OR
You'll be stood outside the drivers door, in 'walk' mode, if you previously exited the game whilst 'walking' or using an external 'driving' camera. Press '1' to get back into the truck ready to drive it.

When using "external 'driving' cameras" (5/6/7/8/9/10):
Connect to a trailer, upon pressing your 'Trailer attach/detach' key/button, the 'DE' code will instant change to cam 1. If required, you can then re-select your preferred external 'driving' camera. This is unavoidable as there's no way to detect if you are attaching or detaching the trailer when pressing that one key/button, but it fixes the trailer delivery part, see next.
OR
Complete the job, by parking the trailer, upon pressing your 'Trailer attach/detach' key/button, the 'DE' code will instant change to cam 1 just before the 'completed' screen appears. This ensures the view, cam 1, and the 'DE' code are kept in sync ready for your next delivery.
OR
Complete the job by 'skipping' parking, the 'DE' code and view will be out of sync when you next drive - Press '1' to fix.
OR
Select a 'Special Transport' job, after the fly around cut scene the game will automatically change to cam 1 ready for driving, the 'DE' code will be out of sync - Press '1' to fix.
OR
Complete a job when using your own trailer by 'skipping' parking or pressing 'Activate' to unload, the 'DE' code and view will be out of sync when you next drive - Press '1' to fix.

Skip parking (if you need to):
For best results always change to cam 1 before selecting 'skip parking', this ensures the 'DE' code and view will remain in sync.

Using 'walk' mode:
When you press '4' to exit your truck to 'walk' around it to attach/detach the trailer etc, the 'DE' code will keep this camera mode forced on, if the game changes the view to cam 1 the 'DE' code will quickly revert it back to 'walking'.

Quick Job - Complete delivery, detach trailer in 'walk' mode, next quick job you'll be still in 'walk' mode, press '1' to get back into the truck to drive it.

Freight Market - Complete delivery, detach trailer in 'walk' mode, select another job or click 'drive' and you'll still in 'walk' mode, 'walk' back to the drivers door, press '1' to get into your truck to drive it.

Slight quirk when using 'walk' mode to buy a new truck:
If parked on a truck dealer icon, get out and 'walk' to the dealer entrance, press 'activate' to enter it and then buy a new truck and opt to drive it straight away. After the new truck cut scene is displayed you'll still be outside in 'walk' mode but you may be placed somewhere different. This is because the 'walk' camera origin is the drivers seat of the truck and if the new truck is spawned in a different place/orientation than where your old truck was parked, you'll therefore be re-located but still at the same distance from the drivers door, just 'walk' to the truck and press '1' to get back into the driving seat.

Slight quirk when manually loading a save game:
It seems that the variables used for 'DE' to function correctly are not restored when manually loading a save game and instead are just set to game defaults. This can result in incorrect functionality. Pressing any of the camera keys/buttons will fix that.
However, on game startup, your last save is automatically loaded and then the controls.sii file is read, resulting in the 'DE' variables set correctly, in this instance.

Notes:
There's probably more situations that may cause a glitch, if you think 'DE' isn't functioning correctly, pressing '1' will always fix it.

Disable the 'DE' code, if it's causing a problem, see "Use the games Tobii Eye menu to setup the Driving Enhancements features" at the top of this post and then report that problem to me so I can hopefully fix it.

Although I developed and tested this mod, using the old cheap notebook you see in the demo video, I don't use it when driving, therefore I'm unlikely to spot any more bugs... I do, however, do all my driving on my 'old driving pc' using g27 wheel & pedals and my "TrackIR Driving Enhancements" mod, which this mod was developed from. Any bugs spotted there and fixed will also be applied to this mod if required.

==============================================================================

Post 1 - Description: viewtopic.php?p=67254#p67254
Post 2 - Quick start guide: viewtopic.php?p=67255#p67255
Post 3 - Configuration options: viewtopic.php?p=67256#p67256
Post 4 - Manual edits: viewtopic.php?p=67257#p67257
Post 5 - Help / Q & A: viewtopic.php?p=67258#p67258
Last edited by JHTrucker on March 22nd, 2025, 4:28 pm, edited 24 times in total.
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements

Post by JHTrucker » January 10th, 2025, 10:49 pm

Post 2 of 5 - Driving Enhancements - Quick Start Guide.
This is an easy way to test if you want to use 'Driving Enhancements' or not.

By using the supplied 'quick start' controls.sii file you will need to re-setup all your game control buttons, keys, wheel, pedals, shifter & Force Feedback settings etc.
OR
Don't use the 'quick start' controls.sii file and instead refer to Post 4 - Manual edits. The choice is yours!

Note 1: Using steam controller support will cause problems. I've never used it and have it disabled, that way the game will use all control functions that are specified within the games controls.sii file.
To disable steam controller support:
In Steam Library - Right Click Game - Properties - Controller - Select - Disable Steam Input.

Note 2: If you have '-sysmouse' set in the games steam launch options, remove it, else the 'Driving Enhancements' features will not function correctly.

=============================================================================================================

Setup - You need to do these 3 steps:
1 - Add the required mod.
2 - Edit your controls.sii file or use the supplied one.
3 - Edit your config_local.cfg file.

1 - Download Driving Enhancements v1.0 (1.41+).zip --> https://mega.nz/file/b8R1SSiK#ieokMCahi ... S2HyR3ZBoU
The zip file contains 2 folders, Singleplayer & Multiplayer:
Singleplayer - Driving Enhancements v1.0 (1.41+).scs - Use this mod when playing in singleplayer, it removes your character from the driving seat when you are outside of your truck, your not in your truck and so the seat should be empty!
Multiplayer - Driving Enhancements v1.0 (1.41+).scs - Use this mod when playing multiplayer, so that all other players are not seen as driver less trucks.
As you can see, both mods have the exact same name, just pick the one you need and add it to your games MOD folder.
Look here --> American or Euro Truck Simulator 2\mod\Driving Enhancements v1.0 (1.41+).scs

2 - Download DE controls 13-03-2025.zip --> https://mega.nz/file/S4ZgACJZ#MA6qhp1oa ... _C2Y8qL2tw

Look here --> American or Euro Truck Simulator 2\profiles\Your Profile\controls.sii
Rename your controls.sii file for backup.
Copy the supplied controls.sii file into your profile folder.

3 - Look here --> American or Euro Truck Simulator 2\profiles\Your Profile\config_local.cfg
Edit your config_local.cfg with the following:
uset g_eye_preset_5 "g:CAM 4 RHD - Walk Keys Free Roam"
uset g_eye_preset_4 "g:CAM 4 LHD - Walk Keys Free Roam"
uset g_eye_preset_3 "g:3 Setup LHD Sleeper Area" <-- Change this via the Tobii Eye menu to suit your current truck.
uset g_eye_preset_2 "g:2 Setup LHD Passenger Seat" <-- Change this via the Tobii Eye menu to suit your current truck.
uset g_eye_preset_1 "g:1L 70 Toggle + Press & Hold" <-- Change this via the Tobii Eye menu to select your preferred 'look' function.

Close & save your config_local.cfg file.
If required, here's the above setup instructions in picture form:
Image

Start the game and add the mod 'Driving Enhancements' to the top of your mod manager list.

Image

Pick a game default LHD truck, don't use a mod truck for testing, they should work, but they may have edited interior cam files that may cause unintended movement.

At the driving screen press 1 for driver seat.
Look around with the below keys, either 'Press & Hold' or 'Toggle':
Interior Look Left (numpad 4) <-- Smooth look left to 70 degrees.
Interior Look Right (numpad 6) <-- Smooth look right to 70 degrees.
Interior Look Up Middle (numpad 8) <-- Smooth look down at dash.
Interior Look Up Left (numpad 2) <-- Smooth look out of the drivers window to look behind you (if it turns into the sleeper, you've incorrectly picked a RHD truck for this test).
Interior Look Forward (numpad 5) <-- Smooth re-centre, 'Quick Press'.

Now move from the driver seat:
Driver Seat --> Press 2 --> Passenger Seat --> Press 1 --> Driver Seat.
Driver Seat --> Press 3 --> Sleeper Area --> Press 1 --> Driver Seat.
Driver Seat --> Press 4 --> Outside --> Press W A S D to 'walk' around --> Press 1 --> Driver Seat.
Note 1: You can only move to/from driver seat, for example, you can't move from passenger seat to sleeper.
Note 2: The passenger seat and sleeper position are just generic locations for testing, for best results, choose the correct truck CAM 2 & CAM 3 presets for these in the Tobii Eye menu.
Note 3: You can use the same 'Interior Look' keys stated above to look around in passenger seat, sleeper & outside.
Interior Look Left (numpad 4) <-- Smooth look left, 'Press & Hold'.
Interior Look Right (numpad 6) <-- Smooth look right, 'Press & Hold'.
Interior Look Up Middle (numpad 8) <-- Smooth look up, 'Press & Hold'.
Interior Look Up Left (numpad 2) <-- Smooth look down, 'Press & Hold'.
Interior Look Forward (numpad 5) <-- Smooth re-centre, 'Quick Press'.
Image

Don't click 'Reset to default' at the bottom of the keys/buttons & controller menus as that will remove the 'DE' line edits!
You can click 'Force Feedback - Reset to defaults' if required.

Now re-setup your controls for windows, steering & pedals etc.
In the games 'Keys & Buttons' menu don't assign anything to these functions marked as 'complex' as that will remove the Driving Enhancements code.
Image
Truck:
Throttle, Brake/Reverse, Steering Left & Steering Right.
Camera Controls:
Next Camera, Interior Camera, Chasing Camera, Top-Down Camera, Roof Camera, Lean Out Camera, Bumper Camera, Drive-By Camera & Zoom Interior Camera.
Auxiliary Cameras:
Zoom Interior Camera.
See Post 3 - Configuration options - For assigning the above key functions, if required.

By default, 'Driving Enhancements' uses the following keys:
W = Throttle & 'Walk' forward.
S = Brake/Reverse & 'Walk' backward.
A = Steering Left & 'Walk' turn left.
D = Steering Right & 'Walk' turn right.

You can change WASD to other keys or disable them if using a controller and require those keys for other functions, see Post 3 - Configuration options - For further information.

Note: The supplied controls.sii file is game version 1.53 defaults with 'DE' edits added, on first startup the game will 'clean it up' by automatically adding or removing lines that are only applicable to the game version you're running, leaving the 'DE' line edits intact.
Example: If you're running game version 1.41 then you'll see a few errors in the game log, starting with this one:
00:00:05.234 : <ERROR> [inp] mix "cstm_mod_1" does not exist, ignoring change
Those [inp] errors are ok, they won't appear again, as the game has just removed them.

Here's a setup demo using 'DE' keyboard defaults:
(Ignore the poor image quality, game on lowest settings, 30 fps and recorded at 720p on old camera phone).


==============================================================================

Post 1 - Description: viewtopic.php?p=67254#p67254
Post 2 - Quick start guide: viewtopic.php?p=67255#p67255
Post 3 - Configuration options: viewtopic.php?p=67256#p67256
Post 4 - Manual edits: viewtopic.php?p=67257#p67257
Post 5 - Help / Q & A: viewtopic.php?p=67258#p67258
Last edited by JHTrucker on March 13th, 2025, 5:10 pm, edited 11 times in total.
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements

Post by JHTrucker » January 10th, 2025, 10:50 pm

Post 3 of 5 - Driving Enhancements - Configuration options:
Note 1: You need to edit your 'DE' controls.sii file to make changes for the below options.
Note 2: Copy your current controls.sii file for backup, just in case!

==============================================================================

Enable / Disable 'Head Roll' in the driving seat when using TrackIR:
"constant c_ht_roll 1.000000" <-- Enabled (default)
"constant c_ht_roll 0.000000" <-- Disabled

==============================================================================

Adjust 'Auto Look Left/Right' function - Re-centre view when pressing throttle:
"mix dbgreset `(DE_Auto_Look_Left_Right_Reset_On_Throttle_Delay_?1 * 1 * c_et_head) + (keyboard.end?0 * ! c_et_head)`"

0 <-- Instant smooth re-centre.
1 <-- The number of seconds after pressing the throttle before the view is smooth re-centered.


Adjust 'Auto Look Left/Right' function - Pause view:
"mix dbgrmvehic `(DE_Auto_Look_Left_Right_Pause_?1 * 10 * c_et_head) + (keyboard.home?0 * ! c_et_head)`"

10 <-- Pause value, not seconds, see below:

The 'Auto Look Left/Right' function will pause at each look limit for a time based on the below values.
Examples when game is locked at 60fps:
0 = Disable 'Auto Look Left/Right' function.
10 = Pause for ~1 second
50 = Pause for ~2 seconds
70 = Pause for ~3 seconds
80 = Pause for ~4 seconds
90 = Pause for ~7 seconds
100 = Pause for ~12 seconds
Note 1: As you can see, the scale isn't linear (values 0 to 100 only).
Note 2: The speed is also linked to your fps, the higher your fps the faster the pause will be. For best results, always cap your fps at a value that your system can maintain across the whole map.


Optional - Another CAM 1 button on controller rather than pressing '1':
Replace your_cam1_button?0 with your preferred key/button (if required, see 'How to find a key/button name').
"mix dbgmodcrea `(DE_Cam1_?1 * your_cam1_button?0 * c_et_head) + (keyboard.num0?0 * ! c_et_head)`"
Note: If you use 'DE Toggle Look' in the driving seat, pressing this alternative CAM 1 button or '1' will also smooth re-centre the view.


Optional - Another CAM 5 (3rd person cam) button on controller rather than pressing '5':
Replace your_cam5_button?0 with your preferred key/button (if required, see 'How to find a key/button name').
"mix dbgmodremo `(DE_Cam5_?1 * your_cam5_button?0 * c_et_head) + (keyboard.numperiod?0 * ! c_et_head)`"


Adjust Driver seat 'look' speed:
"mix dbgmodsele `(DE_Driver_Seat_Look_Speed_?1 * 30 * c_et_head) + (keyboard.numenter?0 * ! c_et_head)`"

30 <-- It's a multiplier: Higher values = faster and Lower values = slower.
Note: The speed is also linked to your fps, the higher your fps the faster the smooth look motion speed will be. For best results, always cap your fps at a value that your system can maintain across the whole map. Wildly fluctuating fps will cause the smooth motion to speed up and down.


Adjust Passenger, Sleeper & Outside 'look' speed:
"mix dbgnxcrty `(DE_Passenger_Sleeper_Outside_Look_Speed_?1 * 10 * c_et_head) + (keyboard.numslash?0 * ! c_et_head)`"

10 <-- It's a multiplier: Higher values = faster and Lower values = slower.
Note: The speed is also linked to your fps, the higher your fps the faster the smooth look motion speed will be. For best results, always cap your fps at a value that your system can maintain across the whole map. Wildly fluctuating fps will cause the smooth motion to speed up and down.


Adjust 'Walk' speed:
"mix dbgcuracti `(DE_Walk_Speed_?1 * (20 + (40 * camwalk_for * camwalk_run * ! camwalk_crou)) * (1.0 - (0.6 * camwalk_crou)) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) + (mouse.button_left?0 * ! c_et_head)`"

20 = 'Walk' speed when using 'Walk Keys Free Roam'.
40 = 'Run' speed when using 'Walk Keys Free Roam'.
They're multipliers: Higher values = faster and Lower values = slower.
Note: The speed is also linked to your fps, the higher your fps the faster the 'walking' will be. For best results, always cap your fps at a value that your system can maintain across the whole map. Wildly fluctuating fps will cause 'walking' to speed up and down.


Optional - Disable 'get in' animation when driving from external cams:
"mix dbgchngsta `(DE_Disable_get_in_animation_for_cam56789_?1 * 0 * c_et_head) + (modifier(ctrl_only, mouse.button_middle?0) * ! c_et_head)`"

0 <-- DE default, get in animation always on.
1 <-- Get in animation disabled.

Note: This disables 'get in' animation when driving from external cams 5/6/7/8/9/10 so that when switching back to cam 1 it's instant, allowing uninterrupted driving.


Zoom Interior Camera - key/button:
Replace your_zoom_button?0 with your preferred key/button (if required, see 'How to find a key/button name').
"mix dbgselacti `(DE_Zoom_view_?1 * your_zoom_button?0 * ! dbgmacrost?0 * ! dbgmacrosa?0 * c_et_head) + (mouse.button_right?0 * ! c_et_head)`"


Auto zoom when 'toggle' looking at the passenger mirror - Default off:
"mix dbgmacrost `((DE_Auto_zoom_passenger_mirror_?1 * 0 * gt(abs(eyeposyaw), c_et_gv_ext) * sign((eyeposy * ! c_et_pos) + (eyeposx * c_et_pos)) * sign(abs(mouse.rel_position.x?0) + 1)) * c_et_head) + (keyboard.i?0 * ! c_et_head)`"

0 <-- Disable auto zoom passenger mirror (default)
1 <-- Enable auto zoom passenger mirror

Note: This option is setup to only zoom when you 'Toggle' look at the passenger side, using 'Press & Hold' will just view the passenger side as normal.


Auto zoom dash, when looking down at dash, to further increase visibility - Default off:
"mix dbgmacrosa `((DE_Auto_zoom_dash_?1 * 0 * gt(abs(eyeposroll), 0.8) * sign(abs(mouse.rel_position.x?0) + 1)) * c_et_head) + (keyboard.o?0 * ! c_et_head)`"

0 <-- Disable auto zoom dash (default)
1 <-- Enable auto zoom dash


Enable mouse for passenger seat, sleeper & outside:
"mix dbgmacrolo `(DE_Mouse_for_passenger_sleeper_outside_?1 * 0 * c_et_head) + (keyboard.p?0 * ! c_et_head)`"

0 <-- Disable basic mouse look (default)
1 <-- Enable basic mouse look

Note 1: Click 'Left Mouse Button' to smooth re-centre the view.
Note 2: This provides a rather rough mouse movement that is not as good as normal mouse movement, but it's useable.

==============================================================================

Optional - Change Tobii Eye menu access key:
"mix eyecfg `keyboard.tab?0`" <--- Example using TAB key instead of default 'shift + numlock'.

==============================================================================

How to find a key/button name:
If you don't know what a key/button is called, do a horn test:
In game assign the key/button to the horn, exit game.
Then open the controls.sii file and look for 'mix horn' to see what it's called.
Example only: "mix horn `joy.b4?0 | semantical.horn?0`"

==============================================================================

Select how you want to control the 'walking' movement when outside:

"Walk Keys Free Roam" - Always use the games 'WALKMODE' keys/buttons regardless of what you are using to drive with.
"Gamepad1 Free Roam" - Thumbstick Steering to turn 'walking' left/right - Thumbstick/Triggers for Throttle & Brake to 'walk' forward/backward - Thumbstick 'Direct' Look, view follows your movement and will centre when you let go.
"Gamepad2 Free Roam" - Thumbstick Steering to turn 'walking' left/right - Thumbstick/Triggers for Throttle & Brake to 'walk' forward/backward - Thumbstick 'Move' Look, view remains as is when you let go, if required, press 'Interior Look Forward' to re-centre.
"Wheel Free Roam" - Steering wheel to turn 'walking' left/right - Throttle & Brake pedals to 'walk' forward/backward.

Edit your config_local.cfg file with the following:
uset g_eye_preset_5 "g:CAM 4 RHD - Walk Keys Free Roam" <-- 'DE' default
uset g_eye_preset_4 "g:CAM 4 LHD - Walk Keys Free Roam" <-- 'DE' default
OR
uset g_eye_preset_5 "g:CAM 4 RHD - Gamepad1 Free Roam"
uset g_eye_preset_4 "g:CAM 4 LHD - Gamepad1 Free Roam"
OR
uset g_eye_preset_5 "g:CAM 4 RHD - Gamepad2 Free Roam"
uset g_eye_preset_4 "g:CAM 4 LHD - Gamepad2 Free Roam"
OR
uset g_eye_preset_5 "g:CAM 4 RHD - Wheel Free Roam"
uset g_eye_preset_4 "g:CAM 4 LHD - Wheel Free Roam"

Close & save your config_local.cfg file.


To change the default WASD keys used for driving but marked as 'complex' in the menu:
Note: You need to edit your 'DE' controls.sii file to make changes for the below options.

Replace "keyboard.a?0" with your preferred key or button to steer left.
"mix dsteerleft `DE?1 * keyboard.a?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

Replace "keyboard.d?0" with your preferred key or button to steer right.
"mix dsteerright `DE?1 * keyboard.d?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

Replace "keyboard.w?0" with your preferred key or button to accelerate.
"mix dforward `DE?1 * keyboard.w?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

Replace "keyboard.s?0" with your preferred key or button to brake/reverse.
"mix dbackward `DE?1 * keyboard.s?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

Note 1: Important, if you just assign your own driving keys via the game keys/buttons menu, your truck will start driving when ever you are 'walking' around it.
Note 2: If you want to disable keyboard driving to use the keys elsewhere, change DE?1 to DE?0. That will disable them and also keep showing as 'complex' as a reminder to not assign keys via the menu.


To change the default WASD keys used for 'walking':
Use the games keys/button menu and scroll down to 'WALKMODE' section.
Assign required keys/buttons to Forward, Back, Left, Right, Run & Crouch.


Optional - WALKMODE RUN - Press & Hold or Quick Press to toggle on/off: *** You need to add this line ***
Replace "keyboard.lshift?0" with your preferred key or button to RUN.
"mix camwalk_run `DE?1 * (long_press(keyboard.lshift?0, 500) + memory(short_press(keyboard.lshift?0 + (sign(keyboard.esc?0 + keyboard.key1?0 + dbgmodcrea?0 + keyboard.key4?0 + dbgdraw?0) * camwalk_run), 499), ! camwalk_run))`"

Note: This will now show as 'complex' in the games key/buttons menu.


Optional - WALKMODE CROUCH - Press & Hold or Quick Press to toggle on/off: *** You need to add this line ***
Replace "keyboard.lctrl?0" with your preferred key or button to CROUCH.
"mix camwalk_crou `DE?1 * (long_press(keyboard.lctrl?0, 500) + memory(short_press(keyboard.lctrl?0 + (sign(keyboard.esc?0 + keyboard.key1?0 + dbgmodcrea?0 + keyboard.key4?0 + dbgdraw?0) * camwalk_crou), 499), ! camwalk_crou))`"

Note: This will now show as 'complex' in the games key/buttons menu.


If your 'WALKMODE' keys are also used by other game functions, then those other functions will operate while you're 'walking':
Example only:
WALKMODE Forward = Up arrow key
Front suspension up = Up arrow key.
To prevent the suspension from moving up while 'walking' forward, do this:
Replace this line:
"mix frontsuspup `keyboard.uarrow?0 | semantical.frontsuspup?0`"

With this line:
"mix frontsuspup `keyboard.uarrow?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

The above means, 'suspension up' will only operate when sat in the driver seat, using a game default external camera or when the 'DE' code is disabled. Therefore 'walking' will no longer interfere with it.

To re-cap, to prevent unwanted functions when 'walking' outside your truck, just add this to the associated lines:
* ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)

==============================================================================

Post 1 - Description: viewtopic.php?p=67254#p67254
Post 2 - Quick start guide: viewtopic.php?p=67255#p67255
Post 3 - Configuration options: viewtopic.php?p=67256#p67256
Post 4 - Manual edits: viewtopic.php?p=67257#p67257
Post 5 - Help / Q & A: viewtopic.php?p=67258#p67258
Last edited by JHTrucker on March 13th, 2025, 5:08 pm, edited 14 times in total.
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements

Post by JHTrucker » January 10th, 2025, 10:51 pm

Post 4 of 5 - Driving Enhancements - Manual edits:

For your reference, here's all the 'DE' line edits (added to the supplied 'Quick Start' controls.sii file), so you can quickly apply them to your own controls.sii file.

NOTE: For required MOD and edits to your config_local.cfg file, refer to top of Post 2 'Quick Start Guide': viewtopic.php?p=67255#p67255

Make a backup copy of your controls.sii for safe keeping, just in case.
Edit with notepad/wordpad etc your controls.sii file.
(American/Euro Truck Simulator 2\profiles\Your Profile\controls.sii)

Note: Match the "mix name" and paste the highlighted part into it.

Note: The line edits shown below are in the same order as they appear in the controls.sii file.

"constant c_ht_roll 1.000000"

"mix dbgfovup `DE?1 * (keyboard.numplus?0 * ! c_et_head) + memory(((eyepreset2?0 + eyepreset3?0) * ! c_et_xscale * c_et_yscale * ! dbgfovup?0) + (sign(long_press(dbgfovup, 3100) + sign(keyboard.key1?0 + dbgmodcrea?0) + mouse.button_left?0 + keyboard.esc?0) * dbgfovup?0), ! dbgfovup) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

"mix dbgfovdown `DE?1 * (keyboard.numminus?0 * ! c_et_head) + memory((((long_press(dbgprev, 500) + (dbglockrot?0 * trackiron) + (eyepause?0 * sign(deadzone(c_etwm_yawsc, 0.05)) * trackiron))) * ! dbgfovup * long_press(! c_et_xscale, 1000) * c_et_yscale * ! dbgfovdown?0) + (sign(long_press(dbgfovdown, 3100) + keyboard.key2?0 + keyboard.key3?0 + keyboard.key4?0 + mouse.button_left?0 + keyboard.esc?0 + sign(lookpos3?0 + lookpos4?0 + lookpos5?0 + lookpos6?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.5))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.5))))) * dbgfovdown?0), ! dbgfovdown) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

"mix dbgfovreset `DE?1 * (modifier(no_modifier, keyboard.nummultiply?0) * ! c_et_head) + memory((sign(keyboard.key4?0 + (eyepause?0 * ! c_et_hv_mode * ! trackiron) + (((eyepause?0 * eyeposx?0 * ! c_et_pos) + (eyepause?0 * eyeposy?0 * c_et_pos)) * ! trackiron) + (eyepause?0 * abs(sign(deadzone(clamp(trackiryaw, -c_et_pos, ! c_et_pos), 0.4))) * trackiron)) * c_et_xscale * c_et_yscale * ! dbgfovreset?0) + (sign((c_et_xscale * long_press(! c_et_yscale, 10)) + sign(keyboard.key1?0 + dbgmodcrea?0) + mouse.button_left?0 + keyboard.esc?0) * dbgfovreset?0), ! dbgfovreset) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

"mix dbgshowhud `DE?1 * (keyboard.del?0 * ! c_et_head) + memory((sign(keyboard.key1?0 + dbgmodcrea?0 + eyepause?0) * c_et_xscale * ! c_et_yscale * sign(! hmdz + ! dbgchngsta) * ! dbgshowhud?0) + (sign(long_press(dbgshowhud, 3100) + mouse.button_left?0 + keyboard.esc?0) * dbgshowhud?0), ! dbgshowhud) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

"mix dbgchngpip `DE?1 * (keyboard.ins?0 * ! c_et_head) + (sign(dbgfovup?0 + dbgfovdown?0 + dbgfovreset?0 + dbgshowhud?0) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head)`"

"mix dbgnextmode `DE?1 * (keyboard.num7?0 * ! c_et_head) + (long_press(dbgchngpip?0, 30) + long_press(dbgchngpip?0, 60) + long_press(dbgchngpip?0, 90) + long_press(dbgchngpip?0, 120) + long_press(dbgchngpip?0, 150) + long_press(dbgchngpip?0, 180) + long_press(dbgchngpip?0, 210) + long_press(dbgchngpip?0, 240) + long_press(dbgchngpip?0, 270) + long_press(dbgchngpip?0, 300) + long_press(dbgchngpip?0, 330) + long_press(dbgchngpip?0, 360) + long_press(dbgchngpip?0, 390) + long_press(dbgchngpip?0, 420) + long_press(dbgchngpip?0, 450) + long_press(dbgchngpip?0, 480) + long_press(dbgchngpip?0, 510) + long_press(dbgchngpip?0, 540) + long_press(dbgchngpip?0, 570) + long_press(dbgchngpip?0, 600) + long_press(dbgchngpip?0, 630) + long_press(dbgchngpip?0, 660) + long_press(dbgchngpip?0, 690) + long_press(dbgchngpip?0, 720) + long_press(dbgchngpip?0, 750) + long_press(dbgchngpip?0, 780) + long_press(dbgchngpip?0, 810) + long_press(dbgchngpip?0, 840) + long_press(dbgchngpip?0, 870) + long_press(dbgchngpip?0, 900) + long_press(dbgchngpip?0, 930) + long_press(dbgchngpip?0, 960) + long_press(dbgchngpip?0, 990) + long_press(dbgchngpip?0, 1020) + long_press(dbgchngpip?0, 1050) + long_press(dbgchngpip?0, 1080) + long_press(dbgchngpip?0, 1110) + long_press(dbgchngpip?0, 1140) + long_press(dbgchngpip?0, 1170) + long_press(dbgchngpip?0, 1200) + long_press(dbgchngpip?0, 1230) + long_press(dbgchngpip?0, 1260) + long_press(dbgchngpip?0, 1290) + long_press(dbgchngpip?0, 1320) + long_press(dbgchngpip?0, 1350) + long_press(dbgchngpip?0, 1380) + long_press(dbgchngpip?0, 1410) + long_press(dbgchngpip?0, 1440) + long_press(dbgchngpip?0, 1470) + long_press(dbgchngpip?0, 1500) + long_press(dbgchngpip?0, 1530) + long_press(dbgchngpip?0, 1560) + long_press(dbgchngpip?0, 1590) + long_press(dbgchngpip?0, 1620) + long_press(dbgchngpip?0, 1650) + long_press(dbgchngpip?0, 1680) + long_press(dbgchngpip?0, 1710) + long_press(dbgchngpip?0, 1740) + long_press(dbgchngpip?0, 1770) + long_press(dbgchngpip?0, 1800) + long_press(dbgchngpip?0, 1830) + long_press(dbgchngpip?0, 1860) + long_press(dbgchngpip?0, 1890) + long_press(dbgchngpip?0, 1920) + long_press(dbgchngpip?0, 1950) + long_press(dbgchngpip?0, 1980) + long_press(dbgchngpip?0, 2010) + long_press(dbgchngpip?0, 2040) + long_press(dbgchngpip?0, 2070) + long_press(dbgchngpip?0, 2100) + long_press(dbgchngpip?0, 2130) + long_press(dbgchngpip?0, 2160) + long_press(dbgchngpip?0, 2190) + long_press(dbgchngpip?0, 2220) + long_press(dbgchngpip?0, 2250) + long_press(dbgchngpip?0, 2280) + long_press(dbgchngpip?0, 2310) + long_press(dbgchngpip?0, 2340) + long_press(dbgchngpip?0, 2370) + long_press(dbgchngpip?0, 2400) + long_press(dbgchngpip?0, 2430) + long_press(dbgchngpip?0, 2460) + long_press(dbgchngpip?0, 2490) + long_press(dbgchngpip?0, 2520) + long_press(dbgchngpip?0, 2550) + long_press(dbgchngpip?0, 2580) + long_press(dbgchngpip?0, 2610) + long_press(dbgchngpip?0, 2640) + long_press(dbgchngpip?0, 2670) + long_press(dbgchngpip?0, 2700) + long_press(dbgchngpip?0, 2730) + long_press(dbgchngpip?0, 2760) + long_press(dbgchngpip?0, 2790) + long_press(dbgchngpip?0, 2820) + long_press(dbgchngpip?0, 2850) + long_press(dbgchngpip?0, 2880) + long_press(dbgchngpip?0, 2910) + long_press(dbgchngpip?0, 2940) + long_press(dbgchngpip?0, 2970)) * 0.01 * c_et_head`"

"mix dbgdraw `DE?1 * (keyboard.num1?0 * ! c_et_head) + long_press(dbgchngpip?0, 3000) * c_et_head`"

"mix dbglockpos `DE?1 * (keyboard.num0?0 * ! c_et_head) + memory((sign(c_et_gv_ext) * ((eyeposx * c_et_pos) + (eyeposy * ! c_et_pos)) * c_et_xscale * c_et_yscale * ! dbglockpos) + (((! eyeposx * c_et_pos) + (! eyeposy * ! c_et_pos)) * ! dbgfovup?0 * dbglockpos) + long_press(dbglockpos * dbgfovup?0 * dbglockpos, 1000), ! dbglockpos) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

"mix dbglockrot `DE?1 * (memory((eyepause?0 * sign(abs(deadzone(clamp(-trackiryaw?0, -c_et_pos, ! c_et_pos), 0.375))) * ! sign(abs(deadzone(trackiryaw?0, 0.55))) * c_et_xscale * c_et_yscale * trackiron * ! dbglockrot) + (eyepause?0 * sign(abs(deadzone(clamp(trackiryaw?0, -c_et_pos, ! c_et_pos), 0.375))) * ! sign(abs(deadzone(trackiryaw?0, 0.55))) * ! c_et_xscale * c_et_yscale * trackiron * ! dbglockrot) + long_press(dbglockrot, 3000), ! dbglockrot) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) + (keyboard.numperiod?0 * ! c_et_head)`"

"mix dbgslowdwn `(DE?1 * memory(long_press((sign(lookpos1 + (mouse.button_left?0 * dbgmacrolo) + dbgprev?0) * ! dbgslowdwn * ((! c_et_xscale * c_et_yscale) + (c_et_xscale * ! c_et_yscale))) + long_press(dbgslowdwn, 600), 10), ! dbgslowdwn) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) + (keyboard.pgdn?0 * ! c_et_head)`"

"mix dbgspeedup `(DE?1 * (long_press(dbgslowdwn, 20) + long_press(dbgslowdwn, 40) + long_press(dbgslowdwn, 60) + long_press(dbgslowdwn, 80) + long_press(dbgslowdwn, 100) + long_press(dbgslowdwn, 120) + long_press(dbgslowdwn, 140) + long_press(dbgslowdwn, 160) + long_press(dbgslowdwn, 180) + long_press(dbgslowdwn, 200) + long_press(dbgslowdwn, 220) + long_press(dbgslowdwn, 240) + long_press(dbgslowdwn, 260) + long_press(dbgslowdwn, 280) + long_press(dbgslowdwn, 300) + long_press(dbgslowdwn, 320) + long_press(dbgslowdwn, 340) + long_press(dbgslowdwn, 360) + long_press(dbgslowdwn, 380) + long_press(dbgslowdwn, 400) + long_press(dbgslowdwn, 420) + long_press(dbgslowdwn, 440) + long_press(dbgslowdwn, 460) + long_press(dbgslowdwn, 480) + long_press(dbgslowdwn, 500)) * 0.04 * c_et_head) + (keyboard.pgup?0 * ! c_et_head)`"

"mix dbgprev `(DE?1 * memory(long_press((sign(sign(keyboard.key1?0 + dbgmodcrea?0) + (eyepause?0 * ! trackiron)) * ! dbgprev * ((! c_et_xscale * c_et_yscale) + (c_et_xscale * ! c_et_yscale))) + long_press(dbgprev, 600), 10), ! dbgprev) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) + (keyboard.pgdn?0 * ! c_et_head)`"

New 13/03/2025
"mix dbgreset `(DE_Auto_Look_Left_Right_Reset_On_Throttle_Delay_?1 * 1 * c_et_head) + (keyboard.end?0 * ! c_et_head)`"

New 13/03/2025
"mix dbgrmvehic `(DE_Auto_Look_Left_Right_Pause_?1 * 10 * c_et_head) + (keyboard.home?0 * ! c_et_head)`"

"mix dbgmodcrea `(DE_Cam1_?1 * your_cam1_button?0 * c_et_head) + (keyboard.num0?0 * ! c_et_head)`"

"mix dbgmodremo `(DE_Cam5_?1 * your_cam5_button?0 * c_et_head) + (keyboard.numperiod?0 * ! c_et_head)`"

"mix dbgmodsele `(DE_Driver_Seat_Look_Speed_?1 * 30 * c_et_head) + (keyboard.numenter?0 * ! c_et_head)`"

"mix dbgnxcrty `(DE_Passenger_Sleeper_Outside_Look_Speed_?1 * 10 * c_et_head) + (keyboard.numslash?0 * ! c_et_head)`"

Amended 13/03/2025
"mix dbgcuracti `(DE_Walk_Speed_?1 * (20 + (40 * camwalk_for * camwalk_run * ! camwalk_crou)) * (1.0 - (0.6 * camwalk_crou)) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) + (mouse.button_left?0 * ! c_et_head)`"

"mix dbgchngsta `(DE_Disable_get_in_animation_for_cam56789_?1 * 0 * c_et_head) + (modifier(ctrl_only, mouse.button_middle?0) * ! c_et_head)`"

"mix dbgselacti `(DE_Zoom_view_?1 * your_zoom_button?0 * ! dbgmacrost?0 * ! dbgmacrosa?0 * c_et_head) + (mouse.button_right?0 * ! c_et_head)`"

"mix dbgmacrost `((DE_Auto_zoom_passenger_mirror_?1 * 0 * gt(abs(eyeposyaw), c_et_gv_ext) * sign((eyeposy * ! c_et_pos) + (eyeposx * c_et_pos)) * sign(abs(mouse.rel_position.x?0) + 1)) * c_et_head) + (keyboard.i?0 * ! c_et_head)`"

"mix dbgmacrosa `((DE_Auto_zoom_dash_?1 * 0 * gt(abs(eyeposroll), 0.8) * sign(abs(mouse.rel_position.x?0) + 1)) * c_et_head) + (keyboard.o?0 * ! c_et_head)`"

"mix dbgmacrolo `(DE_Mouse_for_passenger_sleeper_outside_?1 * 0 * c_et_head) + (keyboard.p?0 * ! c_et_head)`"

"mix cam1 `DE?1 * (((eyepreset1?0 | eyepreset2?0 | eyepreset3?0) * sign(sign(! lookpos3?0 * ! lookpos4?0 * ! lookpos5?0 * ! lookpos6?0 * ! lookleft?0 * ! lookright?0 * ! sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.5))) * ! sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.5))) * c_et_xscale * c_et_yscale) + dbgshowhud?0 + hmdz?0)) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) | (sign(keyboard.key1?0 + dbgmodcrea?0) * ! c_et_head)`"

"mix cam2 `DE?1 * sign(keyboard.key5?0 + dbgmodremo?0) * c_et_head | keyboard.key2?0 * ! c_et_head`"

"mix cam3 `DE?1 * keyboard.key6?0 * c_et_head | keyboard.key3?0 * ! c_et_head`"

"mix cam4 `DE?1 * keyboard.key7?0 * c_et_head | keyboard.key4?0 * ! c_et_head`"

Amended 13/03/2025
"mix cam5 `DE?1 * (sign(dbgdraw?0 + eyepause?0 + keyboard.key1?0 + dbgmodcrea?0 + gte(hmdy, 0.95)) * c_et_xscale * ! c_et_yscale * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head) | (keyboard.key5?0 * ! c_et_head)`"

"mix cam6 `DE?1 * modifier(! alt_only, keyboard.key9?0) * c_et_head | keyboard.key6?0 * ! c_et_head`"

"mix cam7 `DE?1 * modifier(alt_only, keyboard.key9?0) * c_et_head | keyboard.key7?0 * ! c_et_head`"

"mix cam8 `DE?1 * keyboard.key8?0 * 1`"

"mix camcycle `DE?1 * keyboard.key9?0 * ! c_et_head`"

"mix camzoom `DE?1 * sign((long_press(dbgselacti?0, 500) + memory(short_press((dbgselacti?0 * c_et_xscale * c_et_yscale) + (gt(dbgnextmode, 0.05) * lt(dbgnextmode, 0.1) * camzoom), 499), ! camzoom)) + (sign(dbgmacrost?0 + dbgmacrosa?0) * c_et_xscale * c_et_yscale * ! dbgchngpip * ! camzoom)) * c_et_head`"

"mix lookpos1 `keyboard.num5?0 | semantical.lookpos1?0`"

"mix lookpos2 `keyboard.num9?0 | semantical.lookpos2?0`"

"mix lookpos3 `keyboard.num2?0 | semantical.lookpos3?0`"

"mix lookpos4 `keyboard.num6?0 | semantical.lookpos4?0`"

"mix lookpos5 `keyboard.num4?0 | semantical.lookpos5?0`"

"mix lookpos6 `keyboard.num8?0 | semantical.lookpos6?0`"

"mix trackiron `DE?1 * memory(long_press((((! sign(abs(c_et_gv_inf - 0.123456)) * ! trackiron) + (sign(abs(c_et_gv_inf - 0.123456)) * trackiron)) * trackir.device.active?0 * c_et_xscale * c_et_yscale), 1), ! trackiron) * c_et_head`"

"mix trackiryaw `DE?1 * (((max(min(memory(sign(abs(mouse.rel_position.x?0 * c_msens) * dbgmacrolo) | sign(abs(deadzone(-sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.4))) | lookpos5?0 | lookpos4?0 | lookleft?0 | lookright?0 | dbgchngpip?0 | gte(dbgspeedup, 0.95), trackiryaw + sel(sign(clamp(-mouse.rel_position.x?0 * c_msens, -0.0, 1.0)) * dbgmacrolo | sign(clamp(deadzone(-sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.4), -0.0, 1.0)) | lookpos5?0 | lookleft?0, (0.00125 * dbgnxcrty * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)), (-0.00125 * dbgnxcrty * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)))), 0.5 * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)), -0.5 * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)) * sign(dbgnxcrty) * sign(abs(c_et_rollsc - 2))) + (deadzone(-sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.4) * c_et_pitchsc * ! sign(abs(c_et_rollsc - 2)) * 0.4)) * (1 - dbgspeedup) * ! trackiron * c_et_head) + (trackiron * trackir.device.position.yaw?0 * c_et_head)`"

"mix trackirpitch `DE?1 * (((max(min(memory(sign(abs(mouse.rel_position.y?0 * sel(c_minvert, -c_msens, c_msens)) * dbgmacrolo) | sign(abs(deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.4))) | lookpos6?0 | lookpos3?0 | dbgchngpip?0 | gte(dbgspeedup, 0.95), trackirpitch + sel(sign(clamp(-mouse.rel_position.y?0 * sel(c_minvert, -c_msens, c_msens), -0.0, 1.0)) * dbgmacrolo | sign(clamp(deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.4) * 0.5, -0.0, 1.0)) | lookpos6?0, (0.001 * dbgnxcrty * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)), (-0.001 * dbgnxcrty * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)))), 0.25 * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)), -0.25 * ! dbgchngpip?0 * ! gte(dbgspeedup, 0.95)) * sign(dbgnxcrty) * sign(abs(c_et_rollsc - 2))) + (deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.4) * c_et_pitchsc * ! sign(abs(c_et_rollsc - 2)) * 0.3)) * (1 - dbgspeedup) * ! trackiron * c_et_head) + (trackiron * trackir.device.position.pitch?0 * c_et_head)`"

"mix trackirroll `DE?1 * trackiron * trackir.device.position.roll?0`"

"mix trackirx `DE?1 * trackiron * trackir.device.position.x?0`"

"mix trackiry `DE?1 * trackiron * trackir.device.position.y?0`"

"mix trackirz `DE?1 * trackiron * trackir.device.position.z?0`"

"mix hmdon `DE_spare?0`"

"mix hmdyaw `DE_spare?0`"

"mix hmdpitch `DE_spare?0`"

"mix hmdroll `DE?1 * (1.0 - (abs(clamp((dbgfovup) - dbgnextmode - (dbgdraw * 0.01), -1.0, 1.0)))) * sign(! c_et_xscale + dbgfovreset?0 + dbgshowhud?0) * c_et_head`"

"mix hmdx `DE_spare?0`"

New 13/03/2025
"mix hmdy `DE?1 * max(min(c_et_xscale * ! c_et_yscale, hmdy + sel(c_et_xscale * ! c_et_yscale, 0.1, -1.0), 1.0), 0.0) * ! gte(hmdy, 1.0) * ! hmdz * ! dbgshowhud * sign(! cam2 * ! cam3 * ! cam4 * ! cam6 * ! cam7 * ! cam8 * ! camdbg) * c_et_head`"

Amended 13/03/2025
"mix hmdz `DE?1 * memory(short_press((((cam2 | cam3 | cam4 | cam6 | cam7 | cam8 | camdbg) * ! hmdz) + (cam1 * hmdz)), 1000), ! hmdz) * c_et_head`"

New 13/03/2025
"mix eyepresenton `DE?1 * memory((attach * hmdz * ! eyepresenton) + long_press(eyepresenton, 2500), ! eyepresenton) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_head`"

New 13/03/2025
"mix eyepresent `DE?1 * memory((sign(dforward?0 + aforward?0) * sign(abs(eyeposyaw)) * ! eyepresent) + long_press(eyepresent, 1000 * dbgreset), ! eyepresent) * sign(abs(mouse.rel_position.x?0) + 1) * c_et_xscale * c_et_yscale * c_et_head`"

New 13/03/2025
"mix eyegazeon `DE?1 * memory((lookpos2?0 * ! eyegazeon * c_et_xscale * c_et_yscale * sign(c_et_gv_ext) * lte(dbgrmvehic, 100) * sign(dbgrmvehic)) + (sign(lookpos9?0 + lookpos8?0 + lookpos7?0 + lookpos6?0 + lookpos5?0 + lookpos4?0 + lookpos3?0 + lookpos2?0 + lookpos1?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555))) + cam1?0 + eyepreset2?0 + eyepreset3?0 + eyepreset4?0 + eyepreset5?0 + headtren?0 + long_press(eyepresent, 1000 * dbgreset)) * eyegazeon), ! eyegazeon) * c_et_head`"

New 13/03/2025
"mix eyegazex `DE?1 * max(min(eyegazeon, eyegazex + sel(eyegazeon, (0.00002 * (11 - (dbgrmvehic * 0.1))) * dbgmodsele, -1.0), 1.0), 0.0) * ! gte(eyegazex, 1.0) * c_et_head`"

"mix eyegazey `DE?1 * memory(short_press((sign(lookpos6?0 + sign(clamp(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0))) * c_et_xscale * c_et_yscale * sign(c_et_gv_ext) * long_press(! eyegazey, 500)) + (sign(lookpos9?0 + lookpos8?0 + lookpos7?0 + lookpos6?0 + lookpos5?0 + lookpos4?0 + lookpos3?0 + lookpos2?0 + lookpos1?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555))) + cam1?0 + keyboard.key4?0 + eyepreset2?0 + eyepreset3?0 + eyepreset4?0 + eyepreset5?0 + headtren?0) * long_press(eyegazey, 500)), 600), ! eyegazey) * c_et_head`"

"mix eyeposon `DE_spare?0`"

Amended 13/03/2025
"mix eyeposyaw `DE?1 * (max(min(memory(long_press(sign(lookpos5?0 + lookleft?0 + sign(clamp(deadzone(-sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))), 1) * ! sign((lookpos5?0 * lookpos4?0) + (lookleft?0 * lookright?0)) | eyeposx?0 | sign(lt(eyegazex?0, 0.5)) * eyegazeon * ! c_et_pos | sign(gt(eyegazex?0, 0.5)) * eyegazeon * c_et_pos | 1, eyeposyaw + sel(long_press(sign(lookpos5?0 + lookleft?0 + sign(clamp(deadzone(-sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))), 1) | eyeposx?0 | sign(lt(eyegazex?0, 0.5)) * eyegazeon * ! c_et_pos | sign(gt(eyegazex?0, 0.5)) * eyegazeon * c_et_pos, (0.0025 * c_et_gv_ext * 2 * dbgmodsele), (-0.0025 * c_et_gv_ext * 2 * dbgmodsele))), c_et_gv_ext * 2), -0.0) + max(min(memory(long_press(sign(lookpos4?0 + lookright?0 + sign(clamp(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))), 1) * ! sign((lookpos5?0 * lookpos4?0) + (lookleft?0 * lookright?0)) | eyeposy?0 | sign(gt(eyegazex?0, 0.5)) * eyegazeon * ! c_et_pos | sign(lt(eyegazex?0, 0.5)) * eyegazeon * c_et_pos | 1, eyeposyaw + sel(long_press(sign(lookpos4?0 + lookright?0 + sign(clamp(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))), 1) | eyeposy?0 | sign(gt(eyegazex?0, 0.5)) * eyegazeon * ! c_et_pos | sign(lt(eyegazex?0, 0.5)) * eyegazeon * c_et_pos, (-0.0025 * c_et_gv_ext * 2 * dbgmodsele), (0.0025 * c_et_gv_ext * 2 * dbgmodsele))), 0.0), -c_et_gv_ext * 2)) * sign(dbgmodsele) * c_et_hv_mode * ! trackiron * c_et_head`"


"mix eyepospitch `DE?1 * (max(min(memory(long_press(sign((lookpos5?0 * lookpos4?0) + (lookleft?0 * lookright?0) + lookpos3?0 + sign(clamp(deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0))), 1) | eyeposz?0 | 1, eyepospitch + sel(long_press(sign((lookpos5?0 * lookpos4?0) + (lookleft?0 * lookright?0) + lookpos3?0 + sign(clamp(deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0))), 1) | eyeposz?0, (0.0025 * sign(0.5 - c_et_pos) * dbgmodsele), (-0.0025 * sign(0.5 - c_et_pos) * dbgmodsele))), 1.0 * ! c_et_pos), -1.0 * c_et_pos)) * sign(dbgmodsele) * c_et_hv_mode * ! trackiron * c_et_head`"

"mix eyeposroll `DE?1 * (max(min(memory(lookpos6?0 + sign(clamp(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0)) | eyegazey?0 | 1, eyeposroll + sel(long_press(lookpos6?0 + sign(clamp(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0)), 1) | eyegazey?0, (0.005 * dbgmodsele), (-0.005 * dbgmodsele))), 1.0), -0.0)) * sign(dbgmodsele) * c_et_hv_mode * ! trackiron * c_et_head`"

"mix eyeposx `DE?1 * memory(short_press((sign(long_press(sign(lookpos5?0 + lookleft?0) * ! lookpos4?0 * ! lookright?0, 50) + sign(clamp(deadzone(-sel(c_jilooklr?0, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))) * c_et_xscale * c_et_yscale * sign(c_et_gv_ext) * long_press(! eyeposx, 500)) + (sign(lookpos9?0 + lookpos8?0 + lookpos7?0 + lookpos6?0 + lookpos5?0 + lookpos4?0 + lookpos3?0 + lookpos2?0 + lookpos1?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555))) + cam1?0 + eyepreset2?0 + eyepreset3?0 + eyepreset4?0 + eyepreset5?0 + headtren?0) * long_press(eyeposx, 500 * ! lookpos4?0 * ! lookright?0)), 600), ! eyeposx) * c_et_head`"

"mix eyeposy `DE?1 * memory(short_press((sign(long_press(sign(lookpos4?0 + lookright?0) * ! lookpos5?0 * ! lookleft?0, 50) + sign(clamp(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555), -0.0, 1.0))) * c_et_xscale * c_et_yscale * sign(c_et_gv_ext) * long_press(! eyeposy, 500)) + (sign(lookpos9?0 + lookpos8?0 + lookpos7?0 + lookpos6?0 + lookpos5?0 + lookpos4?0 + lookpos3?0 + lookpos2?0 + lookpos1?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555))) + cam1?0 + eyepreset2?0 + eyepreset3?0 + eyepreset4?0 + eyepreset5?0 + headtren?0) * long_press(eyeposy, 500 * ! lookpos5?0 * ! lookleft?0)), 600), ! eyeposy) * c_et_head`"

"mix eyeposz `DE?1 * memory(short_press((sign(lookpos3?0 + long_press(lookpos5?0 * lookpos4?0, 50) + long_press(lookleft?0 * lookright?0, 50) + sign(clamp(deadzone(-sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555), -0.0, 1.0))) * c_et_xscale * c_et_yscale * sign(c_et_gv_ext) * long_press(! eyeposz, 500)) + (sign(lookpos9?0 + lookpos8?0 + lookpos7?0 + lookpos6?0 + lookpos5?0 + lookpos4?0 + lookpos3?0 + lookpos2?0 + lookpos1?0 + lookleft?0 + lookright?0 + sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.555))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.555))) + cam1?0 + eyepreset2?0 + eyepreset3?0 + eyepreset4?0 + eyepreset5?0 + headtren?0) * long_press(eyeposz, 500)), 600), ! eyeposz) * c_et_head`"

"mix eyeposwmyaw `DE?1 * max(min(memory(sign(abs(clamp(-sel(c_jisteer, -j_steer?0, j_steer?0), -1.0, 1.0))) | camwalk_left?0 | camwalk_righ?0 | c_et_yscale, eyeposwmyaw + sel(sign(abs(clamp(-sel(c_jisteer, -j_steer?0, j_steer?0), -1.0, 1.0))) * c_et_pitchsc | (camwalk_left?0 | camwalk_righ?0) * ! c_et_pitchsc * sign(c_et_rollsc), (0.0006 * dbgcuracti * pow(deadzone(clamp(-sel(c_jisteer, -j_steer?0, j_steer?0) * ((6 * ! sign(abs(c_et_rollsc - 1))) + (1 * ! sign(abs(c_et_rollsc - 2))) + (1 * ! sign(abs(c_et_rollsc - 3)))), -1.0, 1.0), c_steer_dz + 0.033), 3) * c_et_pitchsc * sign(c_et_rollsc)) + ((((0.0004 * ! camwalk_run) + (0.0001 * camwalk_run)) * dbgcuracti) * (camwalk_left?0 - camwalk_righ?0) * ! c_et_pitchsc * sign(c_et_rollsc)) + (-2.0 * gte(eyeposwmyaw, 1.0)) + (2.0 * lte(eyeposwmyaw, -1.0)), (0.0))), 1.0 * ! c_et_yscale), -1.0 * ! c_et_yscale) * c_et_head`"

"mix eyeposwmpitc `DE?1 * max(min((sign(camwalk_for?0 + camwalk_back?0) * ! c_et_pitchsc) + (sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz) + normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) * c_et_pitchsc), eyeposwmpitc + sel((sign(camwalk_for?0 + camwalk_back?0) * ! c_et_pitchsc) + (sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz) + normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) * c_et_pitchsc), (0.004 * dbgcuracti * sign(camwalk_for?0 + camwalk_back?0) * ! c_et_pitchsc) + (0.004 * dbgcuracti * ((normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz) + normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) * c_et_pitchsc)), -1.0), 1.0), 0.0) * ! gte(eyeposwmpitc?0, 1.0) * ! c_et_yscale * c_et_head`"

"mix eyeposwmroll `DE_spare?0`"

Amended 13/03/2025
"mix eyeposwmx `DE?1 * (max(min(memory((camwalk_for?0 | camwalk_back?0 | sign(normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) | sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz)) | c_et_yscale | ! hmdz), eyeposwmx + sel(camwalk_for?0 | camwalk_back?0 | sign(normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) | sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz)), (-0.00005 * ((camwalk_for?0 * ! c_et_pitchsc) + (3 * pow(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz), 3) * c_et_pitchsc)) * clamp(eyeposwmyaw * 2, -1.0, 1.0)) + (0.00005 * ((camwalk_for?0 * ! c_et_pitchsc) + (3 * pow(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz), 3) * c_et_pitchsc)) * clamp(deadzone(eyeposwmyaw, 0.5), -1.0, 1.0)) + (-0.00005 * ((camwalk_back?0 * ! c_et_pitchsc) + (normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz) * c_et_pitchsc)) * clamp(-eyeposwmyaw * 2, -1.0, 1.0)) + (-0.00005 * ((camwalk_back?0 * ! c_et_pitchsc) + (normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz) * c_et_pitchsc)) * clamp(deadzone(eyeposwmyaw, 0.5), -1.0, 1.0)), (0.0)) * dbgcuracti * 0.25), 1.0 * ! c_et_yscale * ! hmdz), -1.0 * ! c_et_yscale * ! hmdz)) * c_et_head`"

Amended 13/03/2025
"mix eyeposwmy `DE?1 * (max(min(memory(camwalk_crou?0 | 1, eyeposwmy + sel(long_press(camwalk_crou?0, 1), (0.005 * dbgcuracti), (-0.005 * dbgcuracti))), 1.0 * ! c_et_yscale), -0.0)) * sign(dbgcuracti) * ! trackiron * c_et_head`"

Amended 13/03/2025
"mix eyeposwmz `DE?1 * (max(min(memory((camwalk_for?0 | camwalk_back?0 | sign(normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) | sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz)) | c_et_yscale | ! hmdz), eyeposwmz + sel(camwalk_for?0 | sign(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz)), (-0.00005 * ((camwalk_for?0 * ! c_et_pitchsc) + (3 * pow(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz), 3) * c_et_pitchsc)) * (1 - abs(clamp(eyeposwmyaw * 2, -1.0, 1.0)))) + (0.00005 * ((camwalk_for?0 * ! c_et_pitchsc) + (3 * pow(normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz), 3) * c_et_pitchsc)) * abs(clamp(deadzone(eyeposwmyaw, 0.5), -1.0, 1.0))), (0.00005 * ((camwalk_back?0 * ! c_et_pitchsc) + (normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz) * c_et_pitchsc)) * (1 - abs(clamp(eyeposwmyaw * 2, -1.0, 1.0)))) + (0.00005 * ((camwalk_back?0 * ! c_et_pitchsc) + (normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz) * c_et_pitchsc)) * -abs(deadzone(eyeposwmyaw, 0.5)))) * dbgcuracti * 0.25), 1.0 * ! c_et_yscale * ! hmdz), -1.0 * ! c_et_yscale * ! hmdz)) * c_et_head`"

"mix headtron `DE?1 * (c_et_hv_mode * c_ht_on | trackiron | ! sign(abs(c_et_gv_inf - 0.123456)) | dbgfovup?0 | dbgfovdown?0 | dbgfovreset?0 | dbgshowhud?0 | ! c_et_xscale | ! c_et_yscale) * c_et_head`"

Amended 13/03/2025
"mix headtryaw `DE?1 * ((((((eyeposyaw + eyepospitch) * c_et_hv_mode * c_et_xscale * sign(dbgmodsele) * ! trackiron)) * c_et_yscale * ! dbgfovup?0 * ! dbgfovdown?0 * ! dbgfovreset?0 * ! dbgshowhud?0) + (trackiryaw * sign(c_et_xscale + ! sign(deadzone(c_etwm_yawsc, 0.05))) * c_et_yscale * ! dbgfovreset?0 * ! dbgshowhud?0 * trackiron) + (((sign(0.5 - c_et_pos) * 23.0) + trackiryaw + eyeposwmyaw + (c_ht_roll * sign(eyeposwmpitc - 0.5) * 0.001 * ((camwalk_for * camwalk_run * ! camwalk_crou * ! c_et_pitchsc) + (normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz) * ! camwalk_crou * c_et_pitchsc)))) * ! c_et_yscale * ! dbgshowhud?0) + (((clamp(trackiryaw, -0.5, 0.5) * ! sign(deadzone(c_etwm_yawsc, 0.05)) * gte(hmdroll, 0.99) * ! trackiron) + (clamp(trackiryaw, -(c_et_gv_ext * 2), (c_et_gv_ext * 2)) * sign(deadzone(c_etwm_yawsc, 0.05)) * gte(hmdroll, 0.99)) + (((((clamp(hmdroll, -0.0, 0.25) * 2.0) - (deadzone(hmdroll, 0.8) * 0.5)) * dbgfovup?0 * sign(c_et_pos - 0.5)) + (((clamp(-hmdroll, -0.2, 0.0) * 2.0) + (deadzone(hmdroll, 0.8) * 0.4)) * dbgfovdown?0 * sign(c_et_pos - 0.5))) * ! sign(deadzone(c_etwm_yawsc, 0.05)) * ! dbglockrot) + ((((clamp((dbglockpos * 0.388888) + (hmdroll * 2.5), -0.0, 0.7) - (deadzone(clamp(hmdroll, -0.0, 0.7), 0.4) * 1.4)) * dbgfovup?0) + (((-c_et_hv_exp + 3.0) * 0.25) * deadzone(hmdroll * sign(c_et_pos - 0.5), (0.7 * dbgfovup?0) + (0.1 * dbgfovdown?0))) - ((clamp(hmdroll * 5, -0.0, 0.5) - deadzone(hmdroll, 0.5) * 0.5) * 0.6 * sign(! gte(abs(c_et_yawsc - 2.5), 0.5)) * dbgfovdown?0)) * sign(c_et_pos - 0.5) * sign(deadzone(c_etwm_yawsc, 0.05)))) * ! c_et_xscale * ! dbgfovreset?0 * ! dbgshowhud?0) + (((-(c_et_gv_ext * 2 * ((eyeposx * ! c_et_pos) + (eyeposy * c_et_pos))) + clamp((1 - hmdroll) * (1.5 + (c_et_gv_ext * 8 * ((eyeposx * ! c_et_pos) + (eyeposy * c_et_pos)))), -0.0, 0.5 + (c_et_gv_ext * 2 * ((eyeposx * ! c_et_pos) + (eyeposy * c_et_pos))))) * c_et_yscale * dbgfovreset?0 * sign(c_et_pos - 0.5)) + ((-0.5 - clamp((1 - hmdroll) * 2.0, -0.0, 0.2125) * 1.5) * ! c_et_yscale * dbgshowhud?0 * sign(0.5 - c_et_pos)) + (((-0.5 * sign(deadzone(abs(headtry?0), 0.2125))) + ((0.0 - (hmdroll * 0.9)) * ! sign(deadzone(abs(headtry?0), 0.2125)))) * sign(0.5 - c_et_pos) * c_et_yscale * dbgshowhud?0))) * c_et_head)`"

"mix headtrpitch `DE?1 * (-0.125 * eyeposroll * c_et_xscale * c_et_yscale * c_et_head) + (((((clamp(trackirpitch, -0.5, 0.5) * c_et_yscale * ! dbgchngpip?0 * trackiron) + (clamp(trackirpitch, -0.5, 0.5) * ! c_et_yscale * ! dbgshowhud?0)) * c_et_xscale) + (((clamp(trackirpitch, (-0.0 - (c_etwm_pitsc * 0.085) + (-0.175 + clamp((c_etwm_pitsc - 2.5) * 0.1, -0.0, 0.25))), 1.0 ) * gte(hmdroll, 0.99)) + -((clamp(hmdroll, -0.0, 0.5) - deadzone(hmdroll, 0.5) * 0.5) * 0.4 * ! sign(deadzone(c_etwm_yawsc, 0.05))) + (((((c_etwm_pitsc - 2.5) * 0.2) * deadzone(clamp(hmdroll, -0.0, 1.0), 0.5)) + -((clamp(hmdroll * 6, -0.5, 0.5) - deadzone(hmdroll * 2, 0.5) * 0.5) * 0.6 * dbgfovdown?0)) * sign(deadzone(c_etwm_yawsc, 0.05)))) * ! c_et_xscale * ! dbgfovreset?0 * ! dbgshowhud?0) + (((clamp(-(1 - hmdroll), -0.2, 0.0) + (clamp(deadzone(1 - hmdroll, 0.41), -0.0, 0.6) * 0.666)) * c_et_yscale * dbgfovreset?0) + ((0.22 - clamp((1 - hmdroll) * 2.0, -0.0, 0.22)) * ! c_et_yscale * dbgshowhud?0) + (clamp(hmdroll - 0.26, -0.0, 0.3) * 0.666 * c_et_yscale * dbgshowhud?0))) * c_et_head)`"

Amended 13/03/2025
"mix headtrroll `DE?1 * (((clamp(hmdroll, -0.0, 0.5) - deadzone(hmdroll, 0.5) * 0.5) * 0.3 * ! c_et_xscale * sign(0.5 - c_et_pos) * ! dbgfovreset?0 * ! dbgshowhud?0) + (trackirroll * c_ht_roll * c_et_xscale * c_et_yscale * ! dbgfovreset?0) + (trackirroll * c_et_xscale * ! c_et_yscale * ! dbgshowhud?0) + (c_ht_roll * c_et_xscale * ! c_et_yscale * ! dbgshowhud?0 * (sign(eyeposwmpitc - 0.5) * 0.0007 * ((camwalk_for * ! c_et_pitchsc * (1 + (camwalk_run * ! camwalk_crou * ! c_et_pitchsc))) + (normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz) * ! camwalk_crou * 2 * c_et_pitchsc)))) + (trackirroll * ! c_et_xscale * gte(hmdroll, 0.99))) * c_et_head`"

"mix headtrx `DE?1 * (((((clamp(trackirx, -0.1, 0.1) * c_et_yscale) + (1.15 * ! c_et_yscale * sign(c_et_pos - 0.5)) + (-eyeposwmx * 200 * ! c_et_yscale * sign(c_et_rollsc))) * c_et_xscale * ! dbgchngpip?0) + (((((c_et_yawsc - 2.5) * 0.8) * hmdroll * ! sign(deadzone(c_etwm_yawsc, 0.05))) + ((clamp(hmdroll * 2, -0.0, 0.65) - (deadzone(hmdroll, 0.6) * 0.65)) * sign(0.5 - c_et_pos) * sign(deadzone(c_etwm_yawsc, 0.05)))) * ! c_et_xscale * ! dbgfovreset?0 * ! dbgshowhud?0) + ((clamp(-(1 - hmdroll), -0.495, 0.0) * sign(0.5 - c_et_pos) * c_et_yscale * dbgfovreset?0) + (-1.15 * sign(0.5 - c_et_pos) * ! c_et_yscale * dbgshowhud?0) + (-clamp(hmdroll - 0.2, -0.0, 0.495) * sign(0.5 - c_et_pos) * c_et_yscale * dbgshowhud?0))) * c_et_head)`"

Amended 13/03/2025
"mix headtry `DE?1 * (-0.1 * eyeposroll * c_et_xscale * c_et_yscale * ! trackiron * c_et_head) + (((((clamp(trackiry, -0.05, 0.05) * c_et_yscale) + ((-0.9 - (eyeposwmy * 0.7) + clamp(trackiry, -1.0, 0.15) + (eyeposwmpitc * 0.04)) * ! c_et_yscale * ! dbgshowhud?0)) * c_et_xscale * ! dbgchngpip?0) + ((((clamp(hmdroll, -0.0, 0.5) - (deadzone(hmdroll, 0.5) * 0.5)) * 0.45 * ! sign(deadzone(c_etwm_yawsc, 0.05))) + ((clamp(hmdroll, -0.0, (0.15 + (c_etwm_yawsc * 0.04))) + (((c_et_pitchsc - 2.5) * 0.45) - ((0.15 + (c_etwm_yawsc * 0.04)) * hmdroll)) * deadzone(clamp(hmdroll * (1.0 + (c_et_pitchsc * 0.1)), -0.0, 1.0), 0.35 + (c_etwm_yawsc * 0.08))) * sign(deadzone(c_etwm_yawsc, 0.05)))) * ! c_et_xscale * ! dbgfovreset?0 * ! dbgshowhud?0) + ((clamp(-deadzone((1 - hmdroll), 0.3) * 0.4, -1.0, 0.0) * c_et_yscale * dbgfovreset?0) + (-0.9 * ! c_et_yscale * dbgshowhud?0) + (deadzone(-clamp(hmdroll * 0.7, -0.0, 1.0), 0.2125) * c_et_yscale * dbgshowhud?0))) * c_et_head)`"

"mix headtrz `DE?1 * (-0.35 * eyeposroll * c_et_xscale * c_et_yscale * ! trackiron * c_et_head) + (((((clamp(trackirz, -0.2, 0.05) * c_et_yscale) + (-eyeposwmz * 200 * ! c_et_yscale * sign(c_et_rollsc))) * c_et_xscale * ! dbgchngpip?0) + ((((c_etwm_yawsc * 0.5)) * deadzone(hmdroll, 0.3)) * ! c_et_xscale * ! dbgfovreset?0 * ! dbgshowhud?0)) * c_et_head)`"

"mix headtrwmon `trackiron | ! sign(abs(c_et_gv_inf - 0.123456))`"

"mix headtrwmyaw `sel(trackiron, trackiryaw, 0)`"

"mix headtrwmpitc `sel(trackiron, trackirpitch, 0)`"

"mix headtrwmroll `sel(trackiron & c_ht_roll, trackirroll, 0)`"

"mix headtrwmx `clamp(sel(trackiron, trackirx, 0), -0.1, 0.1)`"

"mix headtrwmy `clamp(sel(trackiron, trackiry, 0), -0.1, 0.1)`"

"mix headtrwmz `clamp(sel(trackiron, trackirz, 0), -0.1, 0.1)`"

"mix dsteerleft `DE?1 * keyboard.a?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix dsteerright `DE?1 * keyboard.d?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix steering `DE?1 * (dsteering - memory(j_steer_c?1, (pow(normalize(abs(sel(c_jisteer, -j_steer?0, j_steer?0)), c_steer_dz), (1.0 + c_steer_func * 0.5)) * sign(sel(c_jisteer, -j_steer?0, j_steer?0)))) - semantical.steering?0) * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix msteering `DE?1 * -mouse.rel_position.x?0 * c_msens * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix mpedals `DE?1 * -mouse.rel_position.y?0 * c_msens * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix dforward `DE?1 * keyboard.w?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix dbackward `DE?1 * keyboard.s?0 * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix aforward `DE?1 * (memory(j_throttle_c?1, normalize(sel(c_jzthrottle, sel(c_jithrottle, -j_throttle?0, j_throttle?0), sel(c_jithrottle, j_throttle?1 * -0.5 + 0.5, j_throttle?-1 * 0.5 + 0.5)), c_throt_dz)) + semantical.aforward?0) * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix abackward `DE?1 * (memory(j_brake_c?1, normalize(sel(c_jzbrake, sel(c_jibrake, -j_brake?0, j_brake?0), sel(c_jibrake, j_brake?1 * -0.5 + 0.5, j_brake?-1 * 0.5 + 0.5)), c_brake_dz)) + semantical.abackward?0) * ! dbgchngpip * sign((c_et_xscale * c_et_yscale) + hmdz + ! c_et_head)`"

"mix clutch `DE?1 * (memory(j_clutch_c?1, normalize(sel(c_jzclutch, sel(c_jiclutch, -j_clutch?0, j_clutch?0), sel(c_jiclutch, j_clutch?1 * -0.5 + 0.5, j_clutch?-1 * 0.5 + 0.5)), c_clutch_dz)) + semantical.clutch?0) + (! c_et_yscale * ! hmdz * c_et_head)`"

"mix headtren `DE?1 * (abs(mouse.rel_position.x?0) * c_et_xscale * c_et_yscale * c_ht_on * c_et_hv_inf * c_et_head) | (lookpos3?0 | lookpos4?0 | lookpos5?0 | lookpos6?0 | lookleft?0 | lookright?0 | sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.5))) | sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.5))) | keyboard.key1?0 | dbgmodcrea?0) * ! c_ht_on * c_et_head`"

Amended 13/03/2025
"mix eyepreset1 `DE?1 * ((long_press(dbgchngpip?0, 600) * dbgshowhud?0 * ! c_et_yscale * sign(! hmdz + ! dbgchngsta) | (sign(keyboard.key1?0 + dbgmodcrea?0 + eyepause?0) * hmdz * dbgchngsta) | long_press(eyepresenton?0, 2000) | dbgdraw?0 * dbgfovdown?0 * ! c_et_xscale | sign(keyboard.key1?0 + dbgmodcrea?0) * c_et_xscale * c_et_yscale | (sign(lookpos3?0 + lookpos4?0 + lookpos5?0 + lookpos6?0 + lookleft?0 + lookright?0 + ((sign(abs(deadzone(sel(c_jilooklr, -j_look_lr?0, j_look_lr?0), 0.5))) + sign(abs(deadzone(sel(c_jilookud, -j_look_ud?0, j_look_ud?0), 0.5)))) * c_et_hv_mode)) * c_et_xscale * c_et_yscale)) * c_et_head)`"

"mix eyepreset2 `DE?1 * (keyboard.key2?0 + (dbglockrot?0 * trackiron)) * c_et_xscale * c_et_yscale * ! hmdz * c_et_head`"

"mix eyepreset3 `DE?1 * (sign(keyboard.key3?0 + (((eyepause?0 * eyeposy?0 * ! c_et_pos) + (eyepause?0 * eyeposx?0 * c_et_pos)) * ! trackiron) + (eyepause?0 * sign(abs(deadzone(clamp(-trackiryaw?0, -c_et_pos, ! c_et_pos), 0.65))) * trackiron)) * c_et_xscale * c_et_yscale) * ! hmdz * c_et_head`"

"mix eyepreset4 `DE?1 * ((dbgdraw?0 * dbgfovreset?0 * c_et_xscale * c_et_yscale) | (cam2?0 | cam3?0 | cam4?0 | cam6?0 | cam7?0 | cam8?0 | camdbg?0)) * ! c_et_pos * c_et_head`"

"mix eyepreset5 `DE?1 * ((dbgdraw?0 * dbgfovreset?0 * c_et_xscale * c_et_yscale) | (cam2?0 | cam3?0 | cam4?0 | cam6?0 | cam7?0 | cam8?0 | camdbg?0)) * c_et_pos * c_et_head`"

==============================================================================

Post 1 - Description: viewtopic.php?p=67254#p67254
Post 2 - Quick start guide: viewtopic.php?p=67255#p67255
Post 3 - Configuration options: viewtopic.php?p=67256#p67256
Post 4 - Manual edits: viewtopic.php?p=67257#p67257
Post 5 - Help / Q & A: viewtopic.php?p=67258#p67258
Last edited by JHTrucker on March 13th, 2025, 5:03 pm, edited 8 times in total.
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements

Post by JHTrucker » January 10th, 2025, 10:51 pm

Post 5 of 5 - Driving Enhancements - Help / Q & A Section:

Controller questions:
Q - 'DE' doesn't work or the control.sii file changes/resets when using a gamepad controller, can this be fixed?
A - Using the steam controller support will cause problems. I've never used it and have it disabled, that way the game will use all control functions that are specified within the games controls.sii file.
To disable steam controller support:
In Steam Library - Right Click Game - Properties - Controller - Select - Disable Steam Input

A - If you have '-sysmouse' set in the games steam launch options, remove it, else these 'Driving Enhancements' will not function correctly.
If you really need to use '-sysmouse', remove from steam launch and do this in your controls.sii file instead:
config_lines[1]: "device mouse `fusion.mouse`" <-- Game default (don't change), if it states 'sys.mouse' then you have it set in steam launch options, remove from steam launch.
config_lines[4]: "device phys_mouse `sys.mouse`" <-- Add this instead of using the steam '-sysmouse' launch option.

General questions:
Q - Can I change the Tobii Eye menu access keys (shift + Numlock) to something else?
A - Yes - Edit your controls.sii file - "mix eyecfg `keyboard.tab?0`" <--- Example using TAB key instead of default (shift + numlock)

Q - Do I have to apply all those line edits every time SCS update the game?
A - No. At least I've never had to. The line numbers may change but that's not a problem.

Q - Do I need to press '1' every time I start the game?
A - No. Just when ever you open the menu and change CAM 1 (Preset 1) to a different 'driving preset' and close it, you then have to apply that preset by pressing '1'.

Q - Why don't the 'zoom' features work for multi-monitor setups that use an overridden FOV?
A - SCS coded the 'zoom interior camera' to dynamically reduce your FOV to ~20 to make everything bigger/closer. It can't reduce an overridden FOV.

Q - Can I adjust the 'walking' speed when outside the truck?
A - Yes, see Post 3 - Configuration options.

Q - Can I adjust the 'look' speed?
A - Yes, see Post 3 - Configuration options.

Q - Can I disable TrackIR head roll in the driver seat?
A - Yes, in your controls.sii file, edit "constant c_ht_roll 1.000000" <-- 1.0 = Enable / 0.0 = Disable

Q - Can I use 'DE' with other camera mods?
A - No, the 'DE' code assumes the interior cameras are game default, modified files may give unintended results.

Q - Can I use 'DE' with other mods, graphics, sound, physics, traffic, maps etc?
A - Yes, but for best results, always keep the 'DE' mod at the top of the mod manager list.

-----

'Driving Enhancements' problems:
Q - In game version 1.51+, my truck is now driving when 'walking' around it, what's wrong?
A - Game update 1.51 automatically replaces the 'DE' line edits for, "mix steering", "mix aforward", "mix abackward" & "mix clutch" with new game default ones. Just copy/paste the 'DE' ones from post 4 to fix it. The game shouldn't do that again.
Note: Any profile you use that hasn't been used on game version 1.51+ will get the above problem. There's no fix required if you choose to use the supplied 'quick start' controls.sii file.

Q - 'DE' doesn't work as I expected it too, what's wrong?
A - You made a copy/paste mistake in your controls.sii file and the game has probably reset the controls.sii file, removing the 'DE' code.
A - You made a copy/paste mistake in your config_local.cfg file.
A - Watch the demo video in post 1 so that you know what to expect.

Q - When I use 'look action' or press '4' for outside the animated movement stops, what's wrong?
A - Check that you made the required edits to your config_local.cfg file for 'uset g_eye_preset_4 & 5'
A - If you copy your 'DE' controls.sii file to another profile you also need to copy config_local.cfg file or at least do the required edits as stated.

Q - I can't select camera 5 (lean out drivers window).
A - Default Camera 5 has been repurposed for 'walking' outside. See first post for all available cameras.

Q - The outside view is under the passenger seat inside the truck.
A - Ensure you have the correct preset 1 for LHD/RHD in the Tobii Eye menu.

Q - When getting in or out of the truck the animation slightly clips through the steering wheel / drivers seat, what's wrong?
A - The animation path is the same for all trucks, depending on how you position your seat and/or steering wheel you may see this slight clipping issue. This path was created, tweaked and tested with default seat and steering wheel positions. Plus all the trucks are slightly different shapes and sizes.

Q - The keys menu had 'complex' shown on buttons that I assigned buttons to, now 'DE' doesn't work properly or at all.
A - The controls.sii file edits detailed in post 4 are the reason they are 'complex'. Assign all buttons you need in game and then manually add all the required line edits again, taking note of the lines that you can copy/paste your current button into.

Q - How can I get 'DE' extra zoom features back after I incorrectly assigned a button to 'Zoom interior view'?
A - Re-copy/paste from post 4 "mix camzoom...' and then see post 3 - Configuration options - 'Zoom Interior View' to assign your zoom button.

-----

How to assign keys/buttons that are now shown as 'complex':
Cam 1 (Interior)
Cam 5 (3rd person, original cam 2)
Zoom Interior View
Steering Left
Steering Right
Throttle
Brake/Reverse

See post 3 - Configuration options - To make changes to the above.

==============================================================================

To Do List:

1 - Possibly improve 'mouse look' for Passenger Seat, Sleeper & Outside.

2 - If possible, fix any reported problems.

3 - Add some more optional features?

4 - v2.0 coming soon... once I've tested it with ETS2 1.54...

==============================================================================

Post 1 - Description: viewtopic.php?p=67254#p67254
Post 2 - Quick start guide: viewtopic.php?p=67255#p67255
Post 3 - Configuration options: viewtopic.php?p=67256#p67256
Post 4 - Manual edits: viewtopic.php?p=67257#p67257
Post 5 - Help / Q & A: viewtopic.php?p=67258#p67258

==============================================================================

If you use TrackIR and want some more features, see 'TrackIR Driving Enhancements' instead: viewtopic.php?p=46457#p46457

==============================================================================

Everything you need to use 'Driving Enhancements' is contained within the above 5 posts.
Any subsequent posts are for bug reporting, help requests or just to say 'Thanks'.

Note: The provided download links to "mega.nz" are just personal storage, no ads, this isn't a money making mod.
Last edited by JHTrucker on March 31st, 2025, 2:48 pm, edited 2 times in total.
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements - ATS/ETS2 (Released)

Post by JHTrucker » February 24th, 2025, 3:40 pm

Reserved
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements - ATS/ETS2 (Released)

Post by JHTrucker » March 13th, 2025, 3:46 pm

Reserved
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements - ATS/ETS2 (Released)

Post by JHTrucker » March 13th, 2025, 3:47 pm

Reserved
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
User avatar
JHTrucker
Expert
Posts: 1391
Joined: February 7th, 2020, 3:19 pm
Location: UK

Re: Driving Enhancements

Post by JHTrucker » March 13th, 2025, 5:28 pm

Driving Enhancements - Update:

Added extra code to try to counteract the times when the game automatically changes to cam 1, which would leave the 'DE' code out of sync with the view.
See the "What to expect when playing the game with 'Driving Enhancements'" section at the bottom of the first post for more info.

Added optional 'Run' and 'Crouch' toggle - For required setup see Post 3 - Configuration options.
These two functions will work as Press & Hold or Quick Press to Toggle on/off.
Note: You cannot 'run' whilst you are 'crouched' down.

Added optional 'DE Auto look left/right' function, may be useful when trying to pull out of a busy junction?
Once initiated the driving view will continually look left/right at the speed and angle that is currently in use.
The view will pause at each left/right limit for a time that you can set, to suit your requirements.
This function stops and re-centres the view when pressing the throttle (after a time limit that you can set), pressing any of the 'Look' keys or by toggling it off.
See first post for further info "How to look around in the driver seat" --> "Smooth 'Auto Look Left/Right' function".

-----

A new controls.sii file (13/03/2025) is available - See Post 2 - Quick Start Guide.
OR
You can manually update your current 'DE' controls.sii file - See Post 4 - Manual edits.
All new and amended line edits are date highlighted (13/03/2025).
Here's the change list:
"mix dbgreset...
"mix dbgrmvehic...
"mix dbgcuracti...
"mix cam5...
"mix hmdy...
"mix hmdz...
"mix eyepresenton...
"mix eyepresent...
"mix eyegazeon...
"mix eyegazex...
"mix eyeposyaw...
"mix eyeposwmx...
"mix eyeposwmy...
"mix eyeposwmz...
"mix headtryaw...
"mix headtrroll...
"mix headtry...
"mix eyepreset1...

Note: The actual mod file hasn't changed, keep using the currently available one (v1.0).
multimon_config.sii files: viewtopic.php?p=17658#p17658
controls.sii edits: viewtopic.php?p=24744#p24744
Driving Enhancements: viewtopic.php?p=67254#p67254
TrackIR Driving Enhancements: viewtopic.php?p=46613#p46613
Post Reply