Enforcing a touchscreen mapping in GNOME (who-t.blogspot.com)
Touchscreens are quite prevalent by now but one of the not-so-hidden secrets is that they're actually two devices: the monitor and the ac...

Hell yes, https://who-t.blogspot.com/2024/03/enforcing-touchscreen-mapping-in-gnome.html just solved my problem to limit a to a single display in . While it is detected just fine it’s input was all over the place of my 4 displays when that should only work for a single display. Apparently has something in it’s settings where this can be easily configured. Gnome does not [yet?] have such an option in settings.

There is however a way to enforce the touchscreen mapping in Gnome too!

The real manufacturer for the controller of my new display here is still a mystery to me. Snippet from my $HOME/.config/monitors.xml is as follows:

<monitorspec>
<connector>HDMI-2</connector>
<vendor>RTK</vendor>
<product>0x2555</product>
<serial>0x20230705</serial>
</monitorspec>

The touchscreen comes back as an ILITEK-TP though and according to lsusb is it connected as ID 222a:0001 ILI Technology Corp. Multi-Touch Screen.

Armed with that knowledge I can limit it’s input with gsettings:

gsettings set org.gnome.desktop.peripherals.touchscreen:/org/gnome/desktop/peripherals/touchscreens/222a:0001/ output "['RTK', '0x2555', '0x20230705']"

Works like a charm!

Modular Flight Simulator Panels and Button Boxes - DigitalJoshua - Joshua Marius by joshuamariusjoshuamarius (digitaljoshua.com)
This video shows you how to build modular Button Boxes or Flight Simulator Panels, without the need of 3D Printers or extra hardware.

🔖 https://www.digitaljoshua.com/modular-flight-simulator-panels-and-button-boxes/

Not often I’m mind blown by what some people come up with to scratch their itch. Swapping panels easily thanks to cable management kits is a great and cheap idea.

So I dunno if you know what a (https://en.wikipedia.org/wiki/Vacuum_fluorescent_display) is but I’m a sucker for these – at least virtually.

Games like perfected the look and this is where I want to go with my HUD app for my / home cockpit too.

Screenshot from the game Rebel Galaxy Outlaw with it's very colourful cockpits full of VFD like displays.

The segment displays are heavily inspired by project (https://augmented-ui.com/) where I’ll borrow some more elements. Learned the neat fake scan lines from there too. And yes the 8 segment display works by shifting bits under the hood 🤓 This isn’t really needed for an app but I have plans to add some real segment displays eventually (I do have a whole box full with these!) so I wanted to know how to implement this anyway.

Video from an earlier stage in the development demos the scan line effect.

The bars are configured with parameters in size, count, percent, colours and thresholds 😁 I also added a random chance of 5% to shift the hue a little bit because just as in real life nothing is perfect.

A colourful button box surrounding a display that shows various data from the game running in the background stretched over several own displays for immersion.

And yes they are fully themed so switching the colour theme also affects the virtual VFDs.

I’m also going to replace the older horizontal bars, that look way too boring in comparison.

It’s still very early but I hope to get some rad animations going too. See https://www.hudsandguis.com/home/2022/retro-digital-dashboards to get an idea in which direction this is going 🤓

See the dedicated project page https://SimPit.dev for more details on this inspired panel.

Quick demo time: I got a touch display 17.3″ that will replace my rather old one in my VF-1 inspired cockpit panel.

Pick your poison: https://www.youtube.com/watch?v=KX4LsyqYPCA / https://makertube.net/w/nCopvNbkvkwR9XcG5QPQ3i

Mostly because of the bad viewing angle. I’m not a huge fan of touch but sometimes it is really useful and if I already spend money why not go the extra mile 🤓

fso-scripts/SpeedrunTimer/data/tables/speedrun-timer-sct.tbm at master · FSO-Scripters/fso-scripts by FSO-Scripters (GitHub)
The primary collection of Lua scripts, custom SEXPs, and custom AI for FSO - FSO-Scripters/fso-scripts

🔖 https://github.com/FSO-Scripters/fso-scripts/blob/master/SpeedrunTimer/data/tables/speedrun-timer-sct.tbm

Going to investigate – apparently FSO can use fifo pipes too and this example may help me get ship telemetry going for my .

Played (closed) Alpha with my inspired . I’m simply in awe that I can replay missions from (or ) with more modern graphics and modern interface devices again. I spent _so many_ hours playing these games as a kid.

This is the heavily cut VOD of the live stream over at @bekopharm@live.famkos.net (pick your poison):

https://makertube.net/w/r1LRrqDWnhw4wRk92uNfzo /
https://www.youtube.com/watch?v=9T2jxqT_5sU

This time I play with the native Linux version and my X52 Pro joystick (which means I actually have a chance of hitting stuff too). The following missions were played:

Historical Mission 2 / Wingmen Are Important
Historical Mission 3 / Sattelites Near Coruscant
Historical Mission 4 / Beating The Odds
OP 1: Destroy Imperial Convoy (Uncut)
OP 2: Reconnaissance Mission (Uncut)
OP 3: Fly Point During Evacuation (Uncut)
OP 4: Protect Medical Frigate (Uncut)

XWVM is not an official product from Lucasfilm Ltd. or Disney. It is not endorsed or authorized by either. It is a fan recreation of the game engine used to play X-Wing and TIE Fighter for the sake of accessibility and requires the original game assets to work.

Kudos to the XWVM team, they are doing a stellar job here.

The dedicated project website for the Macross inspired SimPit is https://simpit.dev

I gave in and changed my event forwarding method in node-red for the Elite Dangerous Journal. This file is updated on various in-game events but in a way that makes it difficult to get new events only since last update. Another problem is that it’s not really a valid JSON file because it has one JSON per line but it’s not a valid JSON array. This is why it has to be parsed line by line and mashed together by event type (name) again to get the latest data for each event type per dump. Each event has it’s own timestamp by set by the game. The latest timestamp is now saved on the special flow const so node-red keeps the value in the “global” memory of the current flow:

msg.payload.event = "Journal";

let newJournalTimestamp = flow.lastJournalTimestamp;

Object.keys(msg.payload).forEach((key) => {
  if (msg.payload[key].timestamp) {
    const keyTimestamp = new Date(msg.payload[key].timestamp).getTime();

    if (!flow.lastJournalTimestamp || flow.lastJournalTimestamp < keyTimestamp) {
      // this entry is new - keep it. MULTIPLE events may have the
      //  same timestamp so wait with reassigning so we don't skip
      //  em or get the latest a 2nd time if nothing else changes.

      // update the next latest timestamp if this is newer
      if(!newJournalTimestamp || newJournalTimestamp < keyTimestamp) {
        newJournalTimestamp = keyTimestamp;
      }
    } else {
      // lastJournalTimestamp is newer, skip this
      msg.payload[key] = null;
    }
  }
});

// make sure this is a valid date for the next time
flow.lastJournalTimestamp = newJournalTimestamp || new Date().getTime();

// remove all nulled events from the payload
msg.payload = Object.fromEntries(
  Object.entries(msg.payload).filter(([_, p]) => p !== null)
);

msg.payload.timestamp = new Date(flow.lastJournalTimestamp);

return { payload: msg.payload };

So I do now keep track of the last read timestamp and reject every event that is older than the last read keeping the Journal dump smaller. This way I don’t have to try to keep track of the “latest” event to drag data from. Refuelling e.g. can happen from whopping 4 (or more) different events and it’s painful to compare all and check which one is the latest to keep track of the real current fuel levels for each tank.

Downside is I won’t get a full set of data for the current session any more if I have to reload my HUD app. This could be mitigated by using MQTT though where I could simply persist each event topic. That is already implemented and I can choose between SocketIO or MQTT in my app anyway.

This uses my X4-SimPit extension for X4: Foundations, that sends ship telemetry via a socket to my node-red plumbing pipeline, which in turn forwards data to Websockets, SocketIO and MQTT. Various subscriber listen on the new messages to run blinken lights and my HUD app. I’m using the well known message format also used by Elite Dangerous so it’s compatible with that game as well.

Pick your poison: https://makertube.net/w/nUoG2ZPeAW1QhT3A2BXRrM / https://www.youtube.com/watch?v=wp1PkVhH9cc

Oh yeah… and on Linux PC 🤓

Let me know what you think!

X4-SimPit code (pending changes) is here: https://github.com/bekopharm/x4-simpit
The cockpit panel has a dedicated project page here: https://simpit.dev/

Played (closed) Alpha with my ViperPit and with glasses. I’m simply in awe that I can replay missions from (or ) with more modern graphics and modern interface devices again. I spent _so many_ hours playing this as a kid.

This is the heavily cut VOD of the live stream over at https://live.famkos.net (pick your poison):

https://makertube.net/w/hW6cJeqBY42YoryJL1gRg5 /
https://www.youtube.com/watch?v=8at4P5rf-gE

I go over the input settings and show it’s capabilities to connected various joystick devices, demo the Proofing Grounds and showcase mission 1+2. In the end I go over various settings for the XWVM engine and how the machine hardly sweats displaying the gorgeous cockpit.

XWVM is not an official product from Lucasfilm Ltd. or Disney. It is not endorsed or authorized by either. It is a fan recreation of the game engine used to play X-Wing and TIE Fighter for the sake of accessibility and requires the original game assets to work.

The game was played with Pro XR running in Side-By-Side mode thanks to ReShade on a Linux PC.

Kudos to the XWVM team, they are doing a stellar job here.