[mac] usb key code 활용 맥에서 키보드 매핑





💡 팁 Key Mapping을 통해 볼륨조절도 가능합니다.












1. USB키보드의 Key Code

  • USB 키보드는 84키, 101키 104키 등이 있고 널리 사용 되는 것은 104키 키보드 입니다. 키의 개 수는 다르지만 키보드에 표기되어 있는 문자가 OS에서 동일하게 인식되기 위해서 각각의 키들은 고유한 Key Code 를 가지고 있습니다.
  • 영문 키보드를 기준으로 본다면, 알파넷  A 의 Key Code는 십진수로 4, Hex코드로 04입니다. Spacebar는 십진수 44, Hex코드 2C를 가지고 있습니다.
  • 물리적 키가 OS로 보내는 Key Code를 다른 Key Code로 교체해서 OS에서 물리적 키에 원하는 Key Code를 부여할 수 있습니다.
    • 예를 들어, 오른쪽 Alt 키에 대부분의 키보드에 실제로 존재하지 않는 F12~ 이상의 Key Code를 부여한 후 맥 OS에서 입력도구 전환 단축키로 할당하는 것이 가능합니다.
    • 또한, USB Key Codes에는 볼륨조절, 복사, 붙여넣기 등의 Key Code 가 존재하기에 다향한 기능을 키보드에 부여할 수 있습니다.
  • 맥 OS에서 키 매핑은 hidutil 을 통해 가능합니다. 
    • 또는 plist 파일을 생성하여 LaunchAgents 폴더에 넣는 방법도 있습니다.
    • plist 생성은 '이곳'을 참고해주세요. 
  
 


2. 키보드 매핑을 통한 단축키 활용

  • 각각의 키들은 맥OS에 내장되어 있는 'hidutil' the command-line tool을 통해 재매핑 될 수 있습니다. 
  • 매핑시 키 값은  0x700000000 형태의 hex 값을 부여해 주어야 합니다.  하단의 표에서 찾아볼 수 있는 hex 값으로 예를 들어 본다면 F3 키는 hex 값이 3C 이니 매핑 키 값은 0x70000003C 가 됩니다.
  • hidutil 의 키매핑 명령어는 hidutil property --set {매핑키 배열} 입니다.
    • 매핑키 배열은 [ ] 로 감싸고 여러 개라면 ,(comma) 로 구분합니다.
    • 필수 키값은 원래 Key Code를 나타내는 HIDKeyboardModifierMappingSrc 와 대체할 Key Code를 나타내는 HIDKeyboardModifierMappingDst 입니다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      $ hidutil property --set 
          '{
                  "UserKeyMapping":                
                          [
                              {
                                  "HIDKeyboardModifierMappingSrc":hex value1,
                                  "HIDKeyboardModifierMappingDst":hex value2
                              },
                              {
                                  "HIDKeyboardModifierMappingSrc":hex value1, 
                                  "HIDKeyboardModifierMappingDst":hex value2 
                              }
                          ]
          }'
       
      cs
       
  • F3번은 볼륨 내리기, F4번은 볼륨 올리기, 오른쪽 Alt키는 F18번 키를 할당하는 명령어는 아래와 같습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ hidutil property --set '{
                "UserKeyMapping":                
                        [
                            {
                                "HIDKeyboardModifierMappingSrc": 0x7000000E6,
                                "HIDKeyboardModifierMappingDst": 0x70000006D
                            },
                            {
                                "HIDKeyboardModifierMappingSrc": 0x70000003D,
                                "HIDKeyboardModifierMappingDst": 0x700000080
                            }
                            ,
                            {
                                "HIDKeyboardModifierMappingSrc": 0x70000003C,
                                "HIDKeyboardModifierMappingDst": 0x700000081
                            }
                        ]
                }'
    cs
    • 사용된 키값은 Keyboard F3 0x70000003C → Keyboard Volume Down 0x700000081, 
      Keyboard F4 0x70000003D → Keyboard Volume Up 0x700000080, 
      Keyboard Right Alt 0x7000000E6 → Keyboard F18 0x70000006D 입니다.
  • 오른쪽 Alt키를 F18에 매핑한 이유는 아래 게시글에서 확인해주세요.
                                         ↓ 
    💡 [mac] 오른쪽 Alt 키를 한영키로 사용하기
    •                        
  
 



3. Automator를 통한 응용프로그램 제작

  • hidutil 명령어를 Automator 로 응용프로그램으로 만들겠습니다. OS를 재설치하더라고 응용프로그램만 가지고 있다면 본인의 키매핑을 유지할 수 있습니다.
  • Automator 어플리케이션을 실행 > 응용프로그램 선택

  • [보관함] > [유틸리티] > [쉘 스크립트 실행] 선택


  • [스크립트 작성] > [실행] > [결과 확인]
    • 2번 내용을 참고하여 스크립트를 작성합니다.

  • 우측 상단 실행을 눌러 하단 로그 결과를 확인합니다.




  • 파일 형식을 응용프로그램으로 저장합니다.




  
 



4. 로그인 항목에 등록하여 부팅시 자동실행하기

  • [시스템 환경설정] > [사용자 및 그룹] 을 선택합니다.
  • 사용자 선택 > [로그인 항목] > 하단 + 버튼 클릭
  • 3번에서 저장한 응용프로그램을 선택하고 추가를 누릅니다.
  
 



[참고] Keyboard/Keypad의 Key Codes

   

(Dec)

(Hex)

Usage Name

Position

0

00

Reserved (no event indicated)9

N/A

1

01

Keyboard ErrorRoIIOver>

N/A

2

02

Keyboard POSTFaiI

N/A

3

03

Keyboard ErrorUndefined>

N/A

4

04

Keyboard a and A4

31

5

05

Keyboard b and B

50

6

06

Keyboard c and C4

48

7

07

Keyboard d and D

33

8

08

Keyboard e and E

19

9

09

Keyboard f and F

34

10

0A

Keyboard g and G

35

11

0B

Keyboard h and H

36

12

0C

Keyboard i and I

24

13

0D

Keyboard j and J

37

14

0E

Keyboard k and K

38

15

OF

Keyboard I and L

39

16

10

Keyboard m and M4

52

17

11

Keyboard n and N

51

18

12

Keyboard o and

25

19

13

Keyboard p and   4

26

20

14

Keyboard q and Q4

17

21

15

Keyboard r and R

20

22

16

Keyboard s and S4

32

23

17

Keyboard t and T

21

24

18

Keyboard u and U

23

25

19

Keyboard v and V

49

26

1A

Keyboard w and W4

18

27

1B

Keyboard x and X4

47

28

1C

Keyboard y and   4

22

29

1D

Keyboard z and Z4

46

30

1E

Keyboard 1 and !4

2

31

1F

Keyboard 2 and @4

3

32

20

Keyboard 3 and #4

4

33

21

Keyboard 4 and $4

5

34

22

Keyboard 5 and %4

6

35

23

Keyboard 6 and ^4

7

36

24

Keyboard 7 and @4

8

37

25

Keyboard 8 and ”4

9

38

26

Keyboard 9 and (4

10

39

27

Keyboard 0 and )4

11

40

28

Keyboard Return (ENTER)5

43

41

29

Keyboard ESCAPE

110

42

2A

Keyboard DELETE (Backspace )13

15

43

2B

Keyboard Tab

16

44

2C

Keyboard Spacebar

61

45

2D

Keyboard - and (underscore )4

12

46

2E

Keyboard = and +4

13

47

2F

Keyboard [ and (4

27

48

30

Keyboard ] and )4

28

49

31

Keyboard \ and I

29

50

32

Keyboard Non-US # and -2

42

51

33

Keyboard ; and -4

40

52

34

Keyboard   and “4

41

53

35

Keyboard Grave Accent and Tilde4

1

54

36

Keyboard, and <4

53

55

37

Keyboard . and >4

54

56

38

Keyboard / and '74

55

57

39

Keyboard Caps Lock11

30

58

3A

Keyboard F1

112

59

3B

Keyboard F2

113

60

3C

Keyboard F3

114

61

3D

Keyboard F4

115

62

3E

Keyboard F5

116

63

3F

Keyboard F6

117

64

40

Keyboard F7

118

65

41

Keyboard F8

119

66

42

Keyboard F9

120

67

43

Keyboard F10

121

68

44

Keyboard F11

122

69

45

Keyboard F12

123

70

46

Keyboard PrintScreen1

124

71

47

Keyboard Scroll Lock11

125

72

48

Keyboard Pause1

126

73

49

Keyboard Insept1

75

74

4A

Keyboard Home1

80

75

4B

Keyboard PageUp1

85

76

4C

Keyboard Delete Forward1;14

76

77

4D

Keyboard End1

81

78

4E

Keyboard PageDown1

86

79

4F

Keyboard RightArrow1

89

80

50

Keyboard LeftArrow1

79

81

51

Keyboard DownArrow 1

84

82

52

Keyboard UpArrow1

83

83

53

Keypad Num Lock and CIear11

90

84

54

Keypad /1

95

85

55

Keypad *

100

86

56

Keypad -

105

87

57

Keypad +

106

88

58

Keypad ENTERS

108

89

59

Keypad 1 and End

93

90

5A

Keypad 2 and Down Arrow

98

91

5B

Keypad 3 and PageDn

103

92

5C

Keypad 4 and Left Arrow

92

93

5D

Keypad 5

97

94

5E

Keypad 6 and Right Arrow

102

95

5F

Keypad 7 and Home

91

96

60

Keypad 8 and Up Arrow

96

97

61

Keypad 9 and PageUp

101

98

62

Keypad 0 and Insert

99

99

63

Keypad . and Delete

104

100

64

Keyboard Non-US \ and I3;6

45

101

65

Keyboard Application10

129

102

66

Keyboard Power

 

103

67

Keypad =

 

104

68

Keyboard F13

 

105

69

Keyboard F14

 

106

6A

Keyboard F15

 

107

6B

Keyboard F16

 

108

6C

Keyboard F17

 

109

6D

Keyboard F18

 

110

6E

Keyboard F19

 

111

6F

Keyboard F20

 

112

70

Keyboard F21

 

113

71

Keyboard F22

 

114

72

Keyboard F23

 

115

73

Keyboard F24

 

116

74

Keyboard Execute

 

117

75

Keyboard Help

 

118

76

Keyboard Menu

 

119

77

Keyboard Select

 

120

78

Keyboard Stop

 

121

79

Keyboard Again

 

122

7A

Keyboard Undo

 

123

7B

Keyboard Cut

 

124

7C

Keyboard Copy

 

125

7D

Keyboard Paste

 

126

7E

Keyboard Find

 

127

7F

Keyboard Mute

 

128

80

Keyboard Volume Up

 

129

81

Keyboard Volume Down

 

130

82

Keyboard Locking Caps Lock12

 

131

83

Keyboard Locking Num Lock12

 

132

84

Keyboard Locking Scroll Lock12

 

133

85

Keypad Comma27

107

134

86

Keypad Equal Sign29

 

135

87

Keyboard InternationaI115,28

56

136

88

Keyboard International216

 

137

89

Keyboard International317

 

138

8A

Keyboard International418

 

139

8B

Keyboard International519

 

140

8C

Keyboard International620

 

141

8D

Keyboard International721

 

142

8E

Keyboard International822

 

143

8F

Keyboard International922

 

144

90

Keyboard LANG125

 

145

91

Keyboard LANG226

 

146

92

Keyboard LANG330

 

147

93

Keyboard LANG431

 

148

94

Keyboard LANG532

 

149

95

Keyboard LANG68

 

150

96

Keyboard LANG78

 

151

97

Keyboard LANG88

 

152

98

Keyboard LANG98

 

153

99

Keyboard Alternate Erase7

 

154

9A

Keyboard SysReq/Attention1

 

155

9B

Keyboard Cancel

 

156

9C

Keyboard Clear

 

157

9D

Keyboard Prior

 

158

9E

Keyboard Return

 

159

9F

Keyboard Separator

 

160

A0

Keyboard Out

 

161

A1

Keyboard Oper

 

162

A2

Keyboard Clear/Again

 

163

A3

Keyboard CrSeI/Props

 

164

A4

Keyboard ExSeI

 

165-175

AS-AF

Reserved

 

176

B0

Keypad 00

 

177

B1

Keypad 000

 

178

B2

Thousands Separator 33

 

179

B3

Decimal Separator 33

 

180

B4

Currency Unit 34

 

181

B5

Currency Sub-unit 34

 

182

B6

Keypad (

 

183

B7

Keypad )

 

184

B8

Keypad {

 

185

B9

Keypad )

 

186

BA

Keypad Tab

 

187

BB

Keypad Backspace

 

188

BC

Keypad A

 

189

BD

Keypad B

 

190

BE

Keypad C

 

191

BF

Keypad D

 

192

C0

Keypad E

 

193

C1

Keypad F

 

194

C2

Keypad XOR

 

195

C3

Keypad ^

 

196

C4

Keypad %

 

197

C5

Keypad <

 

198

C6

Keypad >

 

199

C7

Keypad &

 

200

C8

Keypad &&

 

201

C9

Keypad I

 

202

CA

Keypad II

 

203

CB

Keypad :

 

204

CC

Keypad #

 

205

CD

Keypad Space

 

206

CE

Keypad @

 

207

CF

Keypad !

 

208

D0

Keypad Memory Store

 

209

D1

Keypad Memory Recall

 

210

D2

Keypad Memory Clear

 

211

D3

Keypad Memory Add

 

212

D4

Keypad Memory Subtract

 

213

D5

Keypad Memory Multiply

 

214

D6

Keypad Memory Divide

 

215

D7

Keypad +/-

 

216

D8

Keypad Clear

 

217

D9

Keypad Clear Entry

 

218

DA

Keypad Binary

 

219

DB

Keypad Octal

 

220

DC

Keypad Decimal

 

221

DD

Keypad Hexadecimal

 

222-223

DE-DF

Reserved

 

224

E0

Keyboard LeftControl

58

225

E1

Keyboard LeftShift

44

226

E2

Keyboard LeftAlt

60

227

E3

Keyboard Left GUI10;23

127

228

E4

Keyboard RightControl

64

229

E5

Keyboard RightShift

57

230

E6

Keyboard RightAlt

62

231

E7

Keyboard Right GUI10;24

128

232-65535

E8-FFFF

Reserved

 


   








댓글 쓰기

0 댓글