-
Notifications
You must be signed in to change notification settings - Fork 155
Overhaul Keyboard Functionality (For multiple keyboard layouts, and other functionality) #116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
Store is functioning as expected, adding new layouts should be trivial and easily scalable. Implementation is different for each function that uses the keyboard (PasteModal vs Typing in the WebRTC window) these will all require their own testing.
Alters ActionBar.tsx to make the CTRL+ALT+DEL button in the Action Bar PR work again with layered with jetkvm#116 - not pulling into the PR until jetkvm#116 has been integrated, but the my PR will probably just be dropped anyway.
Please include German Keyboard Layout |
…ted settings.tsx to set the keyboard layout properly.
I have found further issues with the way that keyboard functionality is implemented, therefor the scope of work on this PR has been expanded. I am working on this when I have time, thank you for everyone's continued patience. |
This PR will now also resolve #125 |
…teModal to add more clarity to error message. Begin working on key remapping in WebRTC (working to a reasonable degree).
Thank you for your help on this, I can test French keyboard if / when needed :) |
… my changes (YAY!). Also spent 4 hours troubleshooting to find out I didn't realise how useCallback works... :/ Anway, not much longer before work on just the mappings can begin.
I know this may have been referenced, but I have a number of Hyprland systems I would love to use the JetKVM for but being able to use win/hyper key without the OS taking over would be immensely helpful, I would be happy to help test if you get to a testing phase, I might also be able to pitch in if I can find the time as well, Good Luck. Adding an escape sequence in full screen to exit and send all keystrokes in fullscreen mode to the JetKVM might be a solution. say ctrl+alt+esc to exit fullscreen or the overlay exit button and use current system in windowed mode. |
Yes, working on implementing the Keyboard Web API which should resolve this. the problem is actually getting the browser to capture the keys, by default they are passed straight to the OS and the browser never sees them, which is why currently they don't function |
Please add support for Norwegian Bokmål: |
Alters ActionBar.tsx to make the CTRL+ALT+DEL button in the Action Bar PR work again with layered with jetkvm#116 - not pulling into the PR until jetkvm#116 has been integrated, but the my PR will probably just be dropped anyway.
Alters ActionBar.tsx to make the CTRL+ALT+DEL button in the Action Bar PR work again with layered with jetkvm#116 - not pulling into the PR until jetkvm#116 has been integrated, but the my PR will probably just be dropped anyway.
Just wanted to post an update, to let everyone know I haven't abandoned this, just difficult to find the time to work on it currently. |
Never worry about this, we're all incredibly thankful for the time you do spend on it. |
…dded functionality to disable keyboard mapping.
I agree. Once this is done it will provide a good pattern for adding more! |
…gs to new settings page, update PasteModal to use new keyboard implemention, dropped spanish mappings.
A very short window of time opened up for me this weekend, so I have completed the following:
I have tested my changes as much as I can today, and briefly reviewed all my code. I believe the PR is now ready for reviewing/merging. Any issues, let me know. Thank you :) |
Please add swedish support. |
I will not be including any additional layouts in this PR. |
@adamshiervani This is now ready for review |
I purchased 3 JetKVM, because they seemed the ideal way to access servers from everywhere – I even intended to purchase some more. However non working keyboard mappings are a dealbreaker! The keyboard of my notebook is Swissgerman – it's layout is pretty far away from a US keyboard. In fact so far away that any real world usage is nearly impossible. And I can simply not carry a US English keyboard along every day only for that usage... In particular any process where passwords are needed will be practically impossible anyway: as I understand it, this would not even be solved if an US English keyboard would be plugged in. Who would be able to type in a strong password like 'xT<þRÒ%UºÜ|<HtDlïuÖ§Ò5K'`¹çY6º' by means of an US keyboard and the Alt-key? I would gladly help to supply needed information and testing. However as this problem seems to exist for any non US keyboard I do think there needs to be a global solution that allows for adaptation of foreign keyboards without manual adaptation for each keyboard! In my opinion this issue is not solved as long as we do not have a solution for all keyboards! |
@TerraD As far as I know a global solution is not possible. PiKVM also uses keyboard mappings like in this PR. Adding keyboard layouts is trivial and somebody could easily spend time adding most used layouts, I just don't have the time. |
Keep calm dude you bought into a Kickstarter and open source projet, comments like that feel entitled and are neither productive nor well received I believe. |
By the way could you explain somewhere how to add a mapping (if this hasn't
been done already)? I would gladly help for french keyboards but I have no
idea what to do and I'm not a dev, just an Ops.
Le mer. 30 avr. 2025, 17:48, toxic0berliner ***@***.***> a
écrit :
… *toxic0berliner* left a comment (jetkvm/kvm#116)
<#116 (comment)>
Keep calm dude you bought into a Kickstarter and open source projet,
comments like that feel entitled and are neither productive nor well
received I believe.
Thanks William for the work I hope this gets reviewed quickly so other
less talented people like myself can start scratching at it to add new and
more layouts like FR for my use case 😉
—
Reply to this email directly, view it on GitHub
<#116 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AEWMGLJC65IF6IOLUJWKKC324DWEZAVCNFSM6AAAAABWEC5Y4KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDQNBSGQ2DQNJXGU>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Hi @williamjohnstone, I am happy to volunteer as the contributor, maintainer and tester for the What's the best way to support? Should I create and provide a |
@williamjohnstone apologies, I just saw your earlier note on:
Then I will wait for your PR to be merged in an create a new PR for |
{ value: "en-US", label: "US" }, | ||
{ value: "en-GB", label: "UK" }, | ||
{ value: "en-GB_apple", label: "UK (Apple)" }, | ||
{ value: "de_DE", label: "German (T1)" }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should be value: "de-DE"
to match the value in ui/src/keyboardMappings/KeyboardLayouts.ts
@@ -0,0 +1,218 @@ | |||
import { keysUKApple, charsUKApple, modifiersUKApple } from './layouts/uk_apple'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keys and modifiers correspond to definitions in the Linux USB HID gadget driver and are not language-dependent. These definitions could probably be factored out for easier maintenance.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is really huge and high-risk. Can we split this up into smaller more mergeable increments?
var removeCurrentKey = false; | ||
|
||
// Shift Handling | ||
if (mappedModifiers.shift && (e.code === "ShiftLeft" || e.code === "ShiftRight")) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't this conflate left and right shift keys such that if I press left,, hold, press right, release (left or right), then we still have a physical shift key down, but the shift state says we are not shifted... so we're wrong... and then we release the other (right or left) and now we have no physical shift keys down, but the shift state is now shifted... so we're even wronger...
It might be pretentious of me to make recommendations, but as I had the ambition of providing a keyboard layout on top of this PR, I had a deeper look at the code and will go ahead to suggest a split into:
Running the branch on my machine, I've had the high-level impression that there was something counter-intuitive around the key code remapping, where key strokes I entered on my physical keyboard ended up being remapped. But I couldn't quite pin-point on where these changes occurred in the code. This might be an unintended side effect from the interplay between the modules and something to review. My setup and result:
Expected value: The virtual keyboard in JetKVM still needs a lot of improvement and that remains an open topic. There needs to be changes in terms of:
Supporting multiple keyboard layouts in the virtual keyboard is completely different code from supporting multiple keyboard layouts in the paste text box (#405), i.e. this can be factored out and built on top of #116 and would be beneficial to the community. Great work on this so far. |
Guess those things are subjective but it didn't look that huge to me. Maybe balance the risk against the current total absence of this feature that is highly requested... |
I was going back and forth, but ultimately decided to reply and hope I can objectively add some value to the conversation, on a topic that moves many people. I hope also the JetKVM community managers and everyone involved see it as value add. I'm just a user myself without any super powers and would like to see better keyboard layout support in JetKVM. But from a code point of view, we need to differentiate a few areas:
|
I in no way meant any offense, so sorry. My comment was more about teasing this into bite-sized parts that can more easily reviewed and merged. |
This is hugely important, we should solve these individually to minimize untoward risk. As for me, I am far more concerned with proper paste than anything else, but support fixing each issue... |
In my opinion, the JetKVM should not have been released without this. It is such an essential feature that it should be part of the minimum viable product. I also purchased 3 JetKVMs on Kickstarter, the lack of keyboard layout support has made them unusable for me and as a result they have been sitting in a box. The fact that this feature is still missing months after release is making me lose confidence over the future of this product. I'm very glad to all the contributors who are volunteering to this feature. However, this is really something that should have been present from the beggining or at least heavily prioritized by the JetKVM team. |
Ideally the PR can be safely flighted perhaps to canary users. Stability is key now that’s folks are using this I’ll be turning off auto updates as I agree with the pushback on the breadth of this change |
Hi all, Thanks for all of the input, just wanted to add some thoughts:
Hopefully someone can build on what I've started but for the time being, I won't be working on this anymore, especially not for it just to be ignored by the maintainers. |
This PR is to introduce functionality for different keyboard mappings.
If you would like your mapping to be included in the initial PR, let me know and I will try my best.
Fixes #30