workaround for #45.
This commit is contained in:
parent
89dd22727c
commit
1a09442f26
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user