workaround for #45.

This commit is contained in:
m1k1o 2021-04-07 22:19:50 +02:00
parent 89dd22727c
commit 1a09442f26
4 changed files with 9 additions and 24 deletions

View File

@ -2,6 +2,7 @@ package remote
import ( import (
"fmt" "fmt"
"os/exec"
"time" "time"
"github.com/kataras/go-events" "github.com/kataras/go-events"
@ -244,7 +245,14 @@ func (manager *RemoteManager) GetScreenSize() *types.ScreenSize {
} }
func (manager *RemoteManager) SetKeyboardLayout(layout string) { func (manager *RemoteManager) SetKeyboardLayout(layout string) {
xorg.SetKeyboardLayout(layout) // Workaround for https://github.com/m1k1o/neko/issues/45
// When pressing `shift` + `,` instead of `<` comes `>`.
variant := ""
if layout == "us" {
variant = "intl"
}
exec.Command("setxkbmap", layout, variant).Run()
} }
func (manager *RemoteManager) SetKeyboardModifiers(NumLock int, CapsLock int, ScrollLock int) { func (manager *RemoteManager) SetKeyboardModifiers(NumLock int, CapsLock int, ScrollLock int) {

View File

@ -166,13 +166,6 @@ short XGetScreenRate() {
return XRRConfigCurrentRate(conf); return XRRConfigCurrentRate(conf);
} }
void SetKeyboardLayout(char *layout) {
// TOOD: refactor, use native API.
char cmd[13] = "setxkbmap ";
strncat(cmd, layout, 2);
int r = system(cmd);
}
void SetKeyboardModifiers(int num_lock, int caps_lock, int scroll_lock) { void SetKeyboardModifiers(int num_lock, int caps_lock, int scroll_lock) {
Display *display = getXDisplay(); Display *display = getXDisplay();

View File

@ -10,7 +10,6 @@ import "C"
import ( import (
"fmt" "fmt"
"regexp"
"sync" "sync"
"time" "time"
"unsafe" "unsafe"
@ -211,20 +210,6 @@ func GetScreenSize() *types.ScreenSize {
return nil return nil
} }
func SetKeyboardLayout(layout string) {
mu.Lock()
defer mu.Unlock()
if !regexp.MustCompile(`^[a-zA-Z]+$`).MatchString(layout) {
return
}
layoutUnsafe := C.CString(layout)
defer C.free(unsafe.Pointer(layoutUnsafe))
C.SetKeyboardLayout(layoutUnsafe)
}
func SetKeyboardModifiers(num_lock int, caps_lock int, scroll_lock int) { func SetKeyboardModifiers(num_lock int, caps_lock int, scroll_lock int) {
mu.Lock() mu.Lock()
defer mu.Unlock() defer mu.Unlock()

View File

@ -40,7 +40,6 @@
void XDisplayClose(void); void XDisplayClose(void);
void XDisplaySet(char *input); void XDisplaySet(char *input);
void SetKeyboardLayout(char *layout);
void SetKeyboardModifiers(int num_lock, int caps_lock, int scroll_lock); void SetKeyboardModifiers(int num_lock, int caps_lock, int scroll_lock);
#endif #endif