mirror of
https://github.com/robotn/gohook.git
synced 2025-05-31 06:37:55 +08:00
Fix Issue #60: add rawcode to key mapping for macOS
This commit is contained in:
parent
a8f8a8fb20
commit
03d0b73b54
@ -8,6 +8,7 @@ import "C"
|
||||
|
||||
import (
|
||||
"log"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"encoding/json"
|
||||
@ -25,7 +26,11 @@ func go_send(s *C.char) {
|
||||
|
||||
if out.Keychar != CharUndefined {
|
||||
lck.Lock()
|
||||
raw2key[out.Rawcode] = string([]rune{out.Keychar})
|
||||
if runtime.GOOS == "darwin" {
|
||||
rawToKeyDarwin[out.Rawcode] = string([]rune{out.Keychar})
|
||||
} else {
|
||||
raw2key[out.Rawcode] = string([]rune{out.Keychar})
|
||||
}
|
||||
lck.Unlock()
|
||||
}
|
||||
|
||||
|
7
hook.go
7
hook.go
@ -25,6 +25,7 @@ import "C"
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"sync"
|
||||
"time"
|
||||
"unsafe"
|
||||
@ -224,11 +225,17 @@ func RawcodetoKeychar(r uint16) string {
|
||||
lck.RLock()
|
||||
defer lck.RUnlock()
|
||||
|
||||
if runtime.GOOS == "darwin" {
|
||||
return rawToKeyDarwin[r]
|
||||
}
|
||||
return raw2key[r]
|
||||
}
|
||||
|
||||
// KeychartoRawcode key char to rawcode
|
||||
func KeychartoRawcode(kc string) uint16 {
|
||||
if runtime.GOOS == "darwin" {
|
||||
return keyToRawDarwin[kc]
|
||||
}
|
||||
return keytoraw[kc]
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package hook
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/vcaesar/tt"
|
||||
@ -16,7 +17,11 @@ func TestAdd(t *testing.T) {
|
||||
|
||||
func TestKey(t *testing.T) {
|
||||
k := RawcodetoKeychar(0)
|
||||
tt.Equal(t, "error", k)
|
||||
if runtime.GOOS == "darwin" {
|
||||
tt.Equal(t, "a", k)
|
||||
} else {
|
||||
tt.Equal(t, "error", k)
|
||||
}
|
||||
|
||||
r := KeychartoRawcode("error")
|
||||
tt.Equal(t, 0, r)
|
||||
|
210
tables.go
210
tables.go
@ -351,4 +351,214 @@ var (
|
||||
"toggle touchpad": 255,
|
||||
"hyper": 65517,
|
||||
}
|
||||
|
||||
rawToKeyDarwin = map[uint16]string{ //https://ritter.ist.psu.edu/projects/RUI/macosx/rui.c
|
||||
0: "a",
|
||||
1: "s",
|
||||
2: "d",
|
||||
3: "f",
|
||||
4: "h",
|
||||
5: "g",
|
||||
6: "z",
|
||||
7: "x",
|
||||
8: "c",
|
||||
9: "v",
|
||||
11: "b",
|
||||
12: "q",
|
||||
13: "w",
|
||||
14: "e",
|
||||
15: "r",
|
||||
16: "y",
|
||||
17: "t",
|
||||
18: "1",
|
||||
19: "2",
|
||||
20: "3",
|
||||
21: "4",
|
||||
22: "6",
|
||||
23: "5",
|
||||
24: "equal sign",
|
||||
25: "9",
|
||||
26: "7",
|
||||
27: "dash",
|
||||
28: "8",
|
||||
29: "0",
|
||||
30: "close bracket / å",
|
||||
31: "o",
|
||||
32: "u",
|
||||
33: "open bracket",
|
||||
34: "i",
|
||||
35: "p",
|
||||
36: "enter",
|
||||
37: "l",
|
||||
38: "j",
|
||||
39: "single quote / ø / ä",
|
||||
40: "k",
|
||||
41: "semi-colon / ñ",
|
||||
42: "back slash",
|
||||
43: "comma",
|
||||
44: "forward slash / ç",
|
||||
45: "n",
|
||||
46: "m",
|
||||
47: "period",
|
||||
48: "tab",
|
||||
49: "spacebar",
|
||||
50: "`",
|
||||
51: "backspace",
|
||||
53: "escape",
|
||||
54: "apps", // right command
|
||||
55: "l-super", // left command
|
||||
56: "shift",
|
||||
57: "caps lock",
|
||||
58: "alt", // left option
|
||||
59: "control",
|
||||
61: "r-alt", // undefined in `keytoraw` map, right option
|
||||
65: "decimal point",
|
||||
67: "multiply",
|
||||
69: "add",
|
||||
71: "clear",
|
||||
75: "divide",
|
||||
76: "numpad enter", // undefined in `keytoraw` map
|
||||
78: "subtract",
|
||||
82: "numpad 0",
|
||||
83: "numpad 1",
|
||||
84: "numpad 2",
|
||||
85: "numpad 3",
|
||||
86: "numpad 4",
|
||||
87: "numpad 5",
|
||||
88: "numpad 6",
|
||||
89: "numpad 7",
|
||||
91: "numpad 8",
|
||||
92: "numpad 9",
|
||||
96: "f5",
|
||||
97: "f6",
|
||||
98: "f7",
|
||||
99: "f3",
|
||||
100: "f8",
|
||||
101: "f9",
|
||||
103: "f11",
|
||||
105: "f13",
|
||||
107: "f14",
|
||||
109: "f10",
|
||||
111: "f12",
|
||||
113: "f15",
|
||||
114: "insert",
|
||||
115: "home",
|
||||
116: "page up",
|
||||
117: "delete",
|
||||
118: "f4",
|
||||
119: "end",
|
||||
120: "f2",
|
||||
121: "page down",
|
||||
122: "f1",
|
||||
123: "left arrow",
|
||||
124: "right arrow",
|
||||
125: "down arrow",
|
||||
126: "up arrow",
|
||||
179: "fn", // undefined in `keytoraw` map
|
||||
}
|
||||
|
||||
keyToRawDarwin = map[string]uint16{
|
||||
"a": 0,
|
||||
"s": 1,
|
||||
"d": 2,
|
||||
"f": 3,
|
||||
"h": 4,
|
||||
"g": 5,
|
||||
"z": 6,
|
||||
"x": 7,
|
||||
"c": 8,
|
||||
"v": 9,
|
||||
"b": 11,
|
||||
"q": 12,
|
||||
"w": 13,
|
||||
"e": 14,
|
||||
"r": 15,
|
||||
"y": 16,
|
||||
"t": 17,
|
||||
"1": 18,
|
||||
"2": 19,
|
||||
"3": 20,
|
||||
"4": 21,
|
||||
"6": 22,
|
||||
"5": 23,
|
||||
"equal sign": 24,
|
||||
"9": 25,
|
||||
"7": 26,
|
||||
"dash": 27,
|
||||
"8": 28,
|
||||
"0": 29,
|
||||
"close bracket / å": 30,
|
||||
"o": 31,
|
||||
"u": 32,
|
||||
"open bracket": 33,
|
||||
"i": 34,
|
||||
"p": 35,
|
||||
"enter": 36,
|
||||
"l": 37,
|
||||
"j": 38,
|
||||
"single quote / ø / ä": 39,
|
||||
"k": 40,
|
||||
"semi-colon / ñ": 41,
|
||||
"back slash": 42,
|
||||
"comma": 43,
|
||||
"forward slash / ç": 44,
|
||||
"n": 45,
|
||||
"m": 46,
|
||||
"period": 47,
|
||||
"tab": 48,
|
||||
"spacebar": 49,
|
||||
"`": 50,
|
||||
"backspace": 51,
|
||||
"escape": 53,
|
||||
"apps": 54, // right command
|
||||
"l-super": 55, // left command
|
||||
"shift": 56,
|
||||
"caps lock": 57,
|
||||
"alt": 58, // left option
|
||||
"control": 59,
|
||||
"r-alt": 61, // undefined in `keytoraw` map, right option
|
||||
"decimal point": 65,
|
||||
"multiply": 67,
|
||||
"add": 69,
|
||||
"clear": 71,
|
||||
"divide": 75,
|
||||
"numpad enter": 76, // undefined in `keytoraw` map
|
||||
"subtract": 78,
|
||||
"numpad 0": 82,
|
||||
"numpad 1": 83,
|
||||
"numpad 2": 84,
|
||||
"numpad 3": 85,
|
||||
"numpad 4": 86,
|
||||
"numpad 5": 87,
|
||||
"numpad 6": 88,
|
||||
"numpad 7": 89,
|
||||
"numpad 8": 91,
|
||||
"numpad 9": 92,
|
||||
"f5": 96,
|
||||
"f6": 97,
|
||||
"f7": 98,
|
||||
"f3": 99,
|
||||
"f8": 100,
|
||||
"f9": 101,
|
||||
"f11": 103,
|
||||
"f13": 105,
|
||||
"f14": 107,
|
||||
"f10": 109,
|
||||
"f12": 111,
|
||||
"f15": 113,
|
||||
"insert": 114,
|
||||
"home": 115,
|
||||
"page up": 116,
|
||||
"delete": 117,
|
||||
"f4": 118,
|
||||
"end": 119,
|
||||
"f2": 120,
|
||||
"page down": 121,
|
||||
"f1": 122,
|
||||
"left arrow": 123,
|
||||
"right arrow": 124,
|
||||
"down arrow": 125,
|
||||
"up arrow": 126,
|
||||
"fn": 179, // undefined in `keytoraw` map
|
||||
}
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user