mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-21 08:53:20 +03:00
fix most international keybindings
This commit is contained in:
@@ -3,6 +3,8 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input
|
* https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input
|
||||||
|
* https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf
|
||||||
|
* https://kbd-project.org/docs/scancodes/scancodes-1.html
|
||||||
*/
|
*/
|
||||||
#[repr(u32)]
|
#[repr(u32)]
|
||||||
#[derive(Debug, Clone, Copy, TryFromPrimitive)]
|
#[derive(Debug, Clone, Copy, TryFromPrimitive)]
|
||||||
@@ -120,15 +122,15 @@ pub enum Windows {
|
|||||||
KeyF21 = 0x006C,
|
KeyF21 = 0x006C,
|
||||||
KeyF22 = 0x006D,
|
KeyF22 = 0x006D,
|
||||||
KeyF23 = 0x006E,
|
KeyF23 = 0x006E,
|
||||||
KeyF24 = 0x0076,
|
KeyF24 = 0x0076, // KeyLANG5
|
||||||
KeypadComma = 0x007E,
|
KeypadComma = 0x007E,
|
||||||
KeyInternational1 = 0x0073,
|
KeyInternational1 = 0x0073,
|
||||||
KeyInternational2 = 0x0070,
|
KeyInternational2 = 0x0070,
|
||||||
KeyInternational3 = 0x007D,
|
KeyInternational3 = 0x007D, // typo in doc -> its Int'l 3 not Int'l 2
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
KeyInternational4 = 0x0079, // FIXME unused
|
KeyInternational4 = 0x0079,
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
KeyInternational5 = 0x007B, // FIXME unused
|
KeyInternational5 = 0x007B,
|
||||||
// KeyInternational6 = 0x005C,
|
// KeyInternational6 = 0x005C,
|
||||||
KeyLANG1 = 0x0072,
|
KeyLANG1 = 0x0072,
|
||||||
KeyLANG2 = 0x0071,
|
KeyLANG2 = 0x0071,
|
||||||
@@ -293,7 +295,7 @@ pub enum Linux {
|
|||||||
KeyPause = 119,
|
KeyPause = 119,
|
||||||
KeyScale = 120, /* AL Compiz Scale (Expose) */
|
KeyScale = 120, /* AL Compiz Scale (Expose) */
|
||||||
KeyKpcomma = 121,
|
KeyKpcomma = 121,
|
||||||
KeyHangeul = 122,
|
KeyHanguel = 122,
|
||||||
// KEY_HANGUEL = KeyHangeul,
|
// KEY_HANGUEL = KeyHangeul,
|
||||||
KeyHanja = 123,
|
KeyHanja = 123,
|
||||||
KeyYen = 124,
|
KeyYen = 124,
|
||||||
@@ -518,16 +520,16 @@ impl TryFrom<Linux> for Windows {
|
|||||||
Linux::KeyKp3 => Ok(Self::Keypad3PageDn),
|
Linux::KeyKp3 => Ok(Self::Keypad3PageDn),
|
||||||
Linux::KeyKp0 => Ok(Self::Keypad0Insert),
|
Linux::KeyKp0 => Ok(Self::Keypad0Insert),
|
||||||
Linux::KeyKpDot => Ok(Self::KeypadDot),
|
Linux::KeyKpDot => Ok(Self::KeypadDot),
|
||||||
Linux::KeyZenkakuhankaku => Ok(Self::KeyLANG1), // TODO unsure
|
Linux::KeyZenkakuhankaku => Ok(Self::KeyF24), // KeyLANG5
|
||||||
Linux::Key102nd => Ok(Self::KeyNonUSSlashBar), // TODO unsure
|
Linux::Key102nd => Ok(Self::KeyNonUSSlashBar), // TODO unsure
|
||||||
Linux::KeyF11 => Ok(Self::KeyF11),
|
Linux::KeyF11 => Ok(Self::KeyF11),
|
||||||
Linux::KeyF12 => Ok(Self::KeyF12),
|
Linux::KeyF12 => Ok(Self::KeyF12),
|
||||||
Linux::KeyRo => Ok(Self::ErrorRollOver), // TODO unsure
|
Linux::KeyRo => Ok(Self::KeyInternational1),
|
||||||
Linux::KeyKatakana => Ok(Self::KeyLANG1), // TODO unsure
|
Linux::KeyKatakana => Ok(Self::KeyLANG3),
|
||||||
Linux::KeyHiragana => Ok(Self::KeyLANG2), // TODO unsure
|
Linux::KeyHiragana => Ok(Self::KeyLANG4),
|
||||||
Linux::KeyHenkan => Ok(Self::KeyLANG3), // TODO unsure
|
Linux::KeyHenkan => Ok(Self::KeyInternational4),
|
||||||
Linux::KeyKatakanahiragana => Ok(Self::KeyLANG4), // TODO unsure
|
Linux::KeyKatakanahiragana => Ok(Self::KeyInternational2),
|
||||||
Linux::KeyMuhenkan => Ok(Self::KeyLANG4), // TODO unsure
|
Linux::KeyMuhenkan => Ok(Self::KeyInternational5),
|
||||||
Linux::KeyKpJpComma => Ok(Self::KeypadComma),
|
Linux::KeyKpJpComma => Ok(Self::KeypadComma),
|
||||||
Linux::KeyKpEnter => Ok(Self::KeypadEnter),
|
Linux::KeyKpEnter => Ok(Self::KeypadEnter),
|
||||||
Linux::KeyRightCtrl => Ok(Self::KeyRightCtrl),
|
Linux::KeyRightCtrl => Ok(Self::KeyRightCtrl),
|
||||||
@@ -555,9 +557,9 @@ impl TryFrom<Linux> for Windows {
|
|||||||
Linux::KeyPause => Ok(Self::KeyPause),
|
Linux::KeyPause => Ok(Self::KeyPause),
|
||||||
Linux::KeyScale => Err(()), // TODO
|
Linux::KeyScale => Err(()), // TODO
|
||||||
Linux::KeyKpcomma => Ok(Self::KeypadComma),
|
Linux::KeyKpcomma => Ok(Self::KeypadComma),
|
||||||
Linux::KeyHangeul => Ok(Self::KeyInternational1), // TODO unsure
|
Linux::KeyHanguel => Ok(Self::KeyLANG1), // FIXME should be 00F2?
|
||||||
Linux::KeyHanja => Ok(Self::KeyInternational2), // TODO unsure
|
Linux::KeyHanja => Ok(Self::KeyLANG2), // FIXME should be 00F1?
|
||||||
Linux::KeyYen => Ok(Self::KeyInternational3), // TODO unsure
|
Linux::KeyYen => Ok(Self::KeyInternational3),
|
||||||
Linux::KeyLeftMeta => Ok(Self::KeyLeftGUI),
|
Linux::KeyLeftMeta => Ok(Self::KeyLeftGUI),
|
||||||
Linux::KeyRightmeta => Ok(Self::KeyRightGUI),
|
Linux::KeyRightmeta => Ok(Self::KeyRightGUI),
|
||||||
Linux::KeyCompose => Ok(Self::KeyApplication),
|
Linux::KeyCompose => Ok(Self::KeyApplication),
|
||||||
@@ -807,7 +809,7 @@ impl TryFrom<Windows> for Linux {
|
|||||||
Windows::KeyF23 => Ok(Self::KeyF23),
|
Windows::KeyF23 => Ok(Self::KeyF23),
|
||||||
Windows::KeyF24 => Ok(Self::KeyF24),
|
Windows::KeyF24 => Ok(Self::KeyF24),
|
||||||
Windows::KeypadComma => Ok(Self::KeyKpcomma),
|
Windows::KeypadComma => Ok(Self::KeyKpcomma),
|
||||||
Windows::KeyInternational1 => Ok(Self::KeyHangeul),
|
Windows::KeyInternational1 => Ok(Self::KeyHanguel),
|
||||||
Windows::KeyInternational2 => Ok(Self::KeyHanja),
|
Windows::KeyInternational2 => Ok(Self::KeyHanja),
|
||||||
Windows::KeyInternational3 => Ok(Self::KeyYen),
|
Windows::KeyInternational3 => Ok(Self::KeyYen),
|
||||||
Windows::KeyInternational4 => Err(()),
|
Windows::KeyInternational4 => Err(()),
|
||||||
|
|||||||
Reference in New Issue
Block a user