From 2e65abae8f87913e39804704abf331a7b3bf3365 Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Sun, 30 May 2021 16:32:25 +0200 Subject: [PATCH 1/6] Feat: Vjoy for IL2 missing axis --- il2_missing_axis.lua | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 il2_missing_axis.lua diff --git a/il2_missing_axis.lua b/il2_missing_axis.lua new file mode 100644 index 0000000..e70de8b --- /dev/null +++ b/il2_missing_axis.lua @@ -0,0 +1,57 @@ +-- ########## +-- IL2 Sturmovik Battle of Stalingrad does not recognize the sliders axis of the throtle and pedals. +-- This config creates a virtual joystick with those 2 axis. +-- It also makes the button 2(1) of the throtle a modifier, to use it as the LEFT ALT key. +-- ########## + +--Physical devices to use (type lsusb in terminal to list your connected devices) +devices = + { + d0 = --Thrustmaster Throttle + { + vendorid = 0x044f, + productid = 0xb687, + } + } + +--Virtual devices to create, current limit is maximum 53 (0 to 52) buttons and 19 (0 to 18) axes. Note that not every button or axis is fully tested to work. +--Creating more than one virtual devices is possible, making room for more buttons and axes. +v_devices = + { + v0 = + { + buttons = 1, + axes = 2 + } + } + +-- Send method for keyboard. Key is given, i.e. KEY_G (check reference document for more supported key-codes), and state is given, i.e. 0 for release or 1 for press. +-- send_keyboard_event(key, state) + +-- Send methods for virtual devices. Index of virtual device is given, i.e. 0 for v0, 1 for v1 and so on. Button/axis is given, i.e. 0 for button 0, 1 for button 1 and so on. +-- send_button_event(vjoy, button, state) +-- send_axis_event(vjoy, axis, pos) //pos is the axis position (-32767 >= pos <= 32767) + +-- Get methods for physical devices. Arguments applies in the same way as for above methods. +-- get_button_status(joy, button) //Returns 0 or 1 if button is pressed or not. +-- get_axis_status(joy, axis) //Returns the axis position value + +-- Get methods for virtual devices, applies in the same way as for physical devices. +-- get_vjoy_button_status(vjoy, button) +-- get_vjoy_axis_status(vjoy, axis) + +-- When axis 1 on device 0 is changed, set the axis 1 on virtual device 0, inverted or not depending on button 1 on device 0. +function d0_a6_event(value) + send_axis_event(0, 0, value) +end +function d0_a7_event(value) + send_axis_event(0, 1, value) +end +-- Send a button 0 event to virtual device 0 when button 0 on physical device 0 is pressed and released. +function d0_b1_event(value) + if value == 1 then + send_keyboard_event(KEY_LEFTALT, 1) + else + send_keyboard_event(KEY_LEFTALT, 0) + end +end \ No newline at end of file From 48f095c0631856402ef6a116d2a3ee6cd5c9e4aa Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Sun, 30 May 2021 16:35:57 +0200 Subject: [PATCH 2/6] Feat: Install as service --- installService.sh | 19 +++++++++++++++++++ wejoy.service | 12 ++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 installService.sh create mode 100644 wejoy.service diff --git a/installService.sh b/installService.sh new file mode 100755 index 0000000..b7225fb --- /dev/null +++ b/installService.sh @@ -0,0 +1,19 @@ +if [[ $UID != 0 ]]; then + echo "Please run this script with sudo:" + echo "sudo $0 $*" + exit 1 +fi +if [ "$#" -ne 1 ] +then + echo "Please provide the lua script that will be installed as a service in /etc/wejoy/config.lua" + echo "Usage: ./installService.sh CONFIG_SCRIPT.lua" + exit 1 +fi + +mkdir -p /etc/wejoy +cp $1 /etc/wejoy/config.lua +cp wejoy.service /etc/systemd/system/ +systemctl daemon-reload +systemctl start wejoy +systemctl enable wejoy +echo "Wejoy was installed and started. You can test it on your gamepad settings or with evtest" \ No newline at end of file diff --git a/wejoy.service b/wejoy.service new file mode 100644 index 0000000..32dad9b --- /dev/null +++ b/wejoy.service @@ -0,0 +1,12 @@ +[Unit] +Description=wejoy + +[Service] +Type=idle +ExecStart=/usr/bin/wejoy /etc/wejoy/config.lua +Restart=always +Environment=PATH=/usr/bin:/usr/local/bin +WorkingDirectory=/etc/wejoy + +[Install] +WantedBy=multi-user.target \ No newline at end of file From 051e9a80f6b03cc71d7f02803fdcb2023ac05da9 Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Sun, 30 May 2021 16:40:34 +0200 Subject: [PATCH 3/6] Docs: Service information added on readme --- readme.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/readme.md b/readme.md index 78b0206..371dffc 100644 --- a/readme.md +++ b/readme.md @@ -51,6 +51,12 @@ If the module uinput is not loaded on your system, you need to manually load it: * * You can quit 'wejoy' by pressing 'q' end then 'ENTER'. +# Install it as a service ---- + +If you want to have a permanent config script running, you may also install wejoy as a service by running the `installService.sh` script +This script will create a systemd service that starts on boot and copy the script config you want to `/etc/wejoy/config.lua`. +Example: `sudo ./installService.sh il2_missing_axis.lua` + # LUA scripting ---- * Please read the example.lua and warthog_throttle.lua to learn how to customize your script. * Also read the keycodes_ref.txt for keyboard reference. These variables are globally accessable in your LUA script. From 597701f7d1f896ba59d3f93894ba478283ce1ddb Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Sun, 6 Jun 2021 17:06:21 +0200 Subject: [PATCH 4/6] fix: 100% CPU while loop on background --- main.cc | 2 +- wejoy | Bin 0 -> 221368 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100755 wejoy diff --git a/main.cc b/main.cc index 0ffa67a..0ee3e76 100644 --- a/main.cc +++ b/main.cc @@ -289,7 +289,7 @@ int main(int argc, char** argv) std::thread threadUpdateJoysticks(updateThreadJoysticks, std::ref(lScript)); std::thread threadUpdateKeyboard(updateThreadKeyboard, std::ref(lScript)); - while(getchar()!='q'); + while(getchar()!='q') { sleep(10);}; bPoll = false, threadUpdateJoysticks.join(); threadUpdateKeyboard.join(); diff --git a/wejoy b/wejoy new file mode 100755 index 0000000000000000000000000000000000000000..f91e18c9bdb01181a9c1db35634d4c0647cc8386 GIT binary patch literal 221368 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%0Dl0j$@Jsr8K1z5!3;1DoC5w1 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 z%0D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 HYvKO^2G;$X literal 0 HcmV?d00001 From 281fe216c57b3d7311de8050e947a238eef84bbd Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Sun, 6 Jun 2021 17:19:40 +0200 Subject: [PATCH 5/6] feat: Steam game launch script --- readme.md | 4 ++++ wejoy-run.sh | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100755 wejoy-run.sh diff --git a/readme.md b/readme.md index 371dffc..e49d7ad 100644 --- a/readme.md +++ b/readme.md @@ -57,6 +57,10 @@ If you want to have a permanent config script running, you may also install wejo This script will create a systemd service that starts on boot and copy the script config you want to `/etc/wejoy/config.lua`. Example: `sudo ./installService.sh il2_missing_axis.lua` +# Run it with a steam game + +If you only want to run it with a steam game, you can set the game's launch options as: `/route/to/wejoy-run.sh %command%`. This way wejoy will launch automatically when you launch that game. You can also clone the SH file and customize a lua config script for each game. + # LUA scripting ---- * Please read the example.lua and warthog_throttle.lua to learn how to customize your script. * Also read the keycodes_ref.txt for keyboard reference. These variables are globally accessable in your LUA script. diff --git a/wejoy-run.sh b/wejoy-run.sh new file mode 100755 index 0000000..3e538c4 --- /dev/null +++ b/wejoy-run.sh @@ -0,0 +1,12 @@ +# Game launch script for STEAM +# set launch options to "/route/to/wejoy-run.sh %command%" +cleanup() { + # kill all processes whose parent is this process + kill $WEJOY_PID + pkill -P $$ +} +# Customize the LUA config script you want to use. +wejoy /etc/wejoy/config.lua & +WEJOY_PID=$! +trap cleanup EXIT +"$@" From 89a80fa0120d1d93f83c09dec5695582f7b3f60e Mon Sep 17 00:00:00 2001 From: pvillaverde Date: Thu, 27 Oct 2022 23:57:58 +0200 Subject: [PATCH 6/6] [Fix] wejoy path scripted --- config.lua | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ wejoy-run.sh | 3 ++- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 config.lua diff --git a/config.lua b/config.lua new file mode 100644 index 0000000..e70de8b --- /dev/null +++ b/config.lua @@ -0,0 +1,57 @@ +-- ########## +-- IL2 Sturmovik Battle of Stalingrad does not recognize the sliders axis of the throtle and pedals. +-- This config creates a virtual joystick with those 2 axis. +-- It also makes the button 2(1) of the throtle a modifier, to use it as the LEFT ALT key. +-- ########## + +--Physical devices to use (type lsusb in terminal to list your connected devices) +devices = + { + d0 = --Thrustmaster Throttle + { + vendorid = 0x044f, + productid = 0xb687, + } + } + +--Virtual devices to create, current limit is maximum 53 (0 to 52) buttons and 19 (0 to 18) axes. Note that not every button or axis is fully tested to work. +--Creating more than one virtual devices is possible, making room for more buttons and axes. +v_devices = + { + v0 = + { + buttons = 1, + axes = 2 + } + } + +-- Send method for keyboard. Key is given, i.e. KEY_G (check reference document for more supported key-codes), and state is given, i.e. 0 for release or 1 for press. +-- send_keyboard_event(key, state) + +-- Send methods for virtual devices. Index of virtual device is given, i.e. 0 for v0, 1 for v1 and so on. Button/axis is given, i.e. 0 for button 0, 1 for button 1 and so on. +-- send_button_event(vjoy, button, state) +-- send_axis_event(vjoy, axis, pos) //pos is the axis position (-32767 >= pos <= 32767) + +-- Get methods for physical devices. Arguments applies in the same way as for above methods. +-- get_button_status(joy, button) //Returns 0 or 1 if button is pressed or not. +-- get_axis_status(joy, axis) //Returns the axis position value + +-- Get methods for virtual devices, applies in the same way as for physical devices. +-- get_vjoy_button_status(vjoy, button) +-- get_vjoy_axis_status(vjoy, axis) + +-- When axis 1 on device 0 is changed, set the axis 1 on virtual device 0, inverted or not depending on button 1 on device 0. +function d0_a6_event(value) + send_axis_event(0, 0, value) +end +function d0_a7_event(value) + send_axis_event(0, 1, value) +end +-- Send a button 0 event to virtual device 0 when button 0 on physical device 0 is pressed and released. +function d0_b1_event(value) + if value == 1 then + send_keyboard_event(KEY_LEFTALT, 1) + else + send_keyboard_event(KEY_LEFTALT, 0) + end +end \ No newline at end of file diff --git a/wejoy-run.sh b/wejoy-run.sh index 3e538c4..dbfc3c4 100755 --- a/wejoy-run.sh +++ b/wejoy-run.sh @@ -1,3 +1,4 @@ +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" # Game launch script for STEAM # set launch options to "/route/to/wejoy-run.sh %command%" cleanup() { @@ -6,7 +7,7 @@ cleanup() { pkill -P $$ } # Customize the LUA config script you want to use. -wejoy /etc/wejoy/config.lua & +wejoy $SCRIPT_DIR/config.lua & WEJOY_PID=$! trap cleanup EXIT "$@"