Comments (11)
This error itself should be fixed in the next release. Using a fork of Python-Xlib which fixes this.
AZERTY Keyboard is handled in #9.
from selkies-gstreamer.
This is going to take some time. Do restart Selkies to reconnect. In the container, you can terminate selkies-gstreamer using htop and it will automatically reload.
from selkies-gstreamer.
I believe this is a pynput problem.
from selkies-gstreamer.
Should be solved with #9.
from selkies-gstreamer.
Revamping of the Javascript libraries are necessary, especially vuetify and guacamole-keyboard.
from selkies-gstreamer.
Priority Number 3 IMO (with #9 and #22) @danisla
from selkies-gstreamer.
Any updates?
from selkies-gstreamer.
Currently discussed in #85
from selkies-gstreamer.
In short, need to implement xorg.c into ctypes (courtesy of @cruizba).
I think I found a possible way to fix all inconsistencies and errors related to the keyboard, potentially paving the way for the removal of
pyinput
and, possibly in the future,python-xlib
. You can find my work in this branch of my fork: GitHub - cruizba/selkies-gstreamer.Let me share the backstory of how I arrived to this.
Upon further investigation, I realized that certain keysyms which reach this section of
webrtc_input.py
, particularly those representing Spanish characters on my keyboard (like ñ), lacked corresponding keycodes. I've noticed that X server loads some generic keycodes, but it doesn’t cover all of them. This might relate to the default keyboard setting, which is typically a Generic 105-key PC, but I am not sure.In a remote desktop environment, the server is unaware of the client's keyboard. Therefore, modifying the server's keyboard configuration seemed impractical as a solution to me...
To explore how other projects handle keyboard input remotely, I looked into Neko. Neko, along with Guacamole keyboard lib in the browser, manages keyboard events from the browser. When the keysym reaches the neko server, they process input data through a set of C functions in
xorg.c
, which they integrate with Go.The key function of
xorg.c
isXKey()
. It appears thatXKey
dynamically assigns KeySyms to Keycodes when there is no existing association. If a keysym is sent without a corresponding keycode, it registers this new mapping in the XOrg keyboard configuration (As far as I can understand from the code). This approach is also utilized in TigerVNC's source code for keyboard keys mapping!Consequently, I've created
xorg.py
to integrate the build ofxorg.c
and changed the keyboard part ofwebrtc_input.py
to utilize the new xorg class. This solution works exceptionally well! It detects all keyboard keys correctly without altering any remote keyboard settings and while using my own keyboard configuration.The challenge was creating a new addon and compiling the
xorg.so
file to implement this functionality. The project now requires additional headers and libraries. However, the good news is that this addon could potentially replacepython-xlib
for mouse interactions and other X interactions.If you're interested in testing it, my branch is fully functional. Simply run vscode with the devcontainer as usual and execute the task
[run] re-build, re-install and run selkies-gstreamer
. It's configured to compile and install the library.No, files present at https://github.com/cruizba/selkies-gstreamer/tree/fix-inputs/addons/xorg-iface are just a simple module using x11 libs, it is not part of the X library.
from selkies-gstreamer.
I am so happy to see this :).
from selkies-gstreamer.
@cruizba You deserve an acknowledgment. We're also trying to solve the keycode (Spanish) issue with a ctypes version of your .so file.
I hope everything comes together to the next release.
from selkies-gstreamer.
Related Issues (20)
- Support remote controlling retro console devices HOT 10
- Support Selkies Joystick Interposer in 32-bit (especially Wine), support manual installation in addition to DEB HOT 2
- Long hold ESC to exit full screen in the web interface does not work in certain cases and many key combinations leak to the client OS HOT 10
- [META] Rewrite gst-web HTML5 interface frontend HOT 5
- Audio randomly gets disabled after latest changes to webrtcbin HOT 12
- Various Resize/DPI improvements with the user interface and the cursor HOT 7
- Support extended stylus or touch gestures HOT 1
- x264 encoder failing to initialize HOT 3
- Add option to manually specify XAuthority files for login greeters HOT 3
- Audio does not play on "START" button press HOT 5
- Cannot start stream with NvFBC HOT 4
- Implement WebRTC statistics logging in host HOT 2
- Keyboard keystrokes continue to be held when packets are lost by congestion or unstable connection / Improve the last bit of keyboard latency overall while accommodating unstable connections HOT 3
- Instead of erroring with no audio server, restore server-side --disable_audio CLI option or automatically detect no PulseAudio server
- Achieve higher efficiency and quality in low-bandwidth and high-latency environments
- Improve Opus: reduce NetEQ jitterbuffer & eliminate discontinuous audio artifacts from jitter with Opus + RED HOT 1
- [META] Optimize the WebRTC stack to the maximum HOT 2
- When menu is open, CPU thread congestion from Vue causes choppy video and frame drop every second HOT 3
- Color is slightly incorrect from the GStreamer video converter
- Divide Dockerfile to various containers in selkies-vdi HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from selkies-gstreamer.