-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2022-05-03T19_09_41.942Z - Map scancodes to keycodes - ArchWiki.html
335 lines (303 loc) · 77 KB
/
2022-05-03T19_09_41.942Z - Map scancodes to keycodes - ArchWiki.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<!DOCTYPE html> <html class="client-js vector-animations-ready" lang=en dir=ltr style><!--
Page saved with SingleFile
url: https://wiki.archlinux.org/title/Map_scancodes_to_keycodes
saved date: Wed May 04 2022 00:39:41 GMT+0530 (India Standard Time)
--><meta charset=utf-8>
<title>Map scancodes to keycodes - ArchWiki</title>
<style>:root{--sf-img-8: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+Cgk8cGF0aCBmaWxsPSIjMzZiIiBkPSJNNS4wMDIgMS4wMWg3djdsLTItMi0zIDJ2LTFsMy0yLjI1IDEgMVYyLjAxaC0zLjc1bDEgMS0yLjI1IDNoLTFsMi0zeiIvPgoJPHBhdGggZmlsbD0iIzM2YiIgZD0iTTcuMDAyIDMuMDFoLTV2OGg4di01aC0xdjRoLTZ2LTZoNHoiLz4KCTxwYXRoIGZpbGw9IiMxNWE1ZWEiIGQ9Ik00LjA4MiA1LjUxYzAtLjYyMS42MjEtLjYyMS42MjEtLjYyMSAxLjg2NC42MjEgMy4xMDcgMS44NjQgMy43MjggMy43MjggMCAwIDAgLjYyMS0uNjIuNjIxLTEuMjQ1LTEuODY0LTEuODY2LTIuNDg1LTMuNzMtMy43Mjh6Ii8+Cjwvc3ZnPgo=")}.mw-ui-button{display:inline-block;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #a2a9b1;border-radius:2px;cursor:pointer;vertical-align:middle;font-family:inherit;font-size:1em;line-height:1.28571429em;text-align:center;-webkit-appearance:none}.mw-ui-button:not(.mw-ui-icon-element){min-height:32px;min-width:4em;max-width:28.75em;margin:0;padding:5px 12px}.mw-ui-button:not(:disabled){-webkit-transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms;transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms}.mw-ui-button:not(:disabled):visited{color:#202122}.mw-ui-button:not(:disabled):hover{background-color:#ffffff;color:#404244;border-color:#a2a9b1}.mw-ui-button:not(:disabled):focus{color:#202122;border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff;outline-width:0}.mw-ui-button:not(:disabled):active,.mw-ui-button:not(:disabled).is-on{background-color:#c8ccd1;color:#000000;border-color:#72777d;box-shadow:none}.mw-ui-button:disabled{background-color:#c8ccd1;color:#ffffff;border-color:#c8ccd1;cursor:default}.mw-ui-button.mw-ui-icon-element:not(.mw-ui-icon-with-label-desktop){color:transparent!important}.mw-ui-button.mw-ui-icon-element:not(.mw-ui-icon-with-label-desktop) span{display:block;position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}@media all and (max-width:1000px){.mw-ui-button.mw-ui-icon-element span{display:block;position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}}.mw-ui-button.mw-ui-quiet{background-color:transparent;color:#202122;border-color:transparent;font-weight:bold}.mw-ui-button.mw-ui-quiet:not(.mw-ui-icon-element),.mw-ui-button.mw-ui-quiet.mw-ui-progressive:not(.mw-ui-icon-element),.mw-ui-button.mw-ui-quiet.mw-ui-destructive:not(.mw-ui-icon-element){min-height:32px}input[type='checkbox']:hover+.mw-ui-button.mw-ui-quiet,input[type='checkbox']:hover+.mw-ui-button.mw-ui-quiet.mw-ui-progressive,input[type='checkbox']:hover+.mw-ui-button.mw-ui-quiet.mw-ui-destructive,.mw-ui-button.mw-ui-quiet:hover,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:hover,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:hover{background-color:rgba(0,24,73,0.02745098);color:#202122;border-color:transparent}input[type='checkbox']:focus+.mw-ui-button.mw-ui-quiet,input[type='checkbox']:focus+.mw-ui-button.mw-ui-quiet.mw-ui-progressive,input[type='checkbox']:focus+.mw-ui-button.mw-ui-quiet.mw-ui-destructive,.mw-ui-button.mw-ui-quiet:focus,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:focus,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:focus{color:#202122;border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff}input[type='checkbox']:active+.mw-ui-button.mw-ui-quiet,input[type='checkbox']:active+.mw-ui-button.mw-ui-quiet.mw-ui-progressive,input[type='checkbox']:active+.mw-ui-button.mw-ui-quiet.mw-ui-destructive,.mw-ui-button.mw-ui-quiet:active,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:active,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:active{background-color:rgba(0,36,73,0.08235294);color:#000000;border-color:#72777d;box-shadow:none}.mw-ui-button.mw-ui-quiet:disabled,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:disabled,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:disabled,.mw-ui-button.mw-ui-quiet:disabled:hover,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:disabled:hover,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:disabled:hover,.mw-ui-button.mw-ui-quiet:disabled:active,.mw-ui-button.mw-ui-quiet.mw-ui-progressive:disabled:active,.mw-ui-button.mw-ui-quiet.mw-ui-destructive:disabled:active{background-color:transparent;color:#72777d;border-color:transparent}a.mw-ui-button{text-decoration:none}a.mw-ui-button:hover,a.mw-ui-button:focus{text-decoration:none}.mw-ui-icon{font-size:initial;position:relative;display:inline-block;box-sizing:content-box!important;width:1.25em;height:1.25em;min-width:1.25em;min-height:1.25em;flex-basis:1.25em;vertical-align:middle;line-height:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-moz-appearance:none;-webkit-appearance:none;background-color:transparent;margin:0;padding:0}.mw-ui-icon:not(.mw-ui-button){border:0}.mw-ui-icon:before{content:'';display:block;width:100%;height:100%;min-width:1.25em;min-height:1.25em;background-repeat:no-repeat;background-size:1.25em 1.25em;background-position:center}.mw-ui-icon-element{border-radius:2px;padding:0.75em;-webkit-transition:background-color 100ms;transition:background-color 100ms}.mw-ui-icon-element:focus,.mw-ui-icon-element:active,.mw-ui-icon-element:visited{color:transparent}.mw-ui-icon-element:active{background-color:rgba(0,0,0,0.03)}@media (hover:hover){.mw-ui-icon-element:not(.disabled):hover{background-color:rgba(0,0,0,0.03)}}.mw-ui-icon-before{width:auto;max-width:100%}.mw-ui-icon-before:before{display:inline-block;font-size:initial;width:auto;min-width:1.25em;min-height:1.25em;margin-right:8px;vertical-align:middle}.mw-ui-icon-before span{vertical-align:middle}.mw-ui-icon-wikimedia-ellipsis:before{background-image:url(data:text/plain;base64,SW1hZ2UgZ2VuZXJhdGlvbiBmYWlsZWQ=);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj48dGl0bGU+ZWxsaXBzaXM8L3RpdGxlPjxnIGZpbGw9IiMwMDAiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjIiLz48Y2lyY2xlIGN4PSIzIiBjeT0iMTAiIHI9IjIiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjEwIiByPSIyIi8+PC9nPjwvc3ZnPgo=)}.mw-ui-icon-wikimedia-logIn:before{background-image:url(data:text/plain;base64,SW1hZ2UgZ2VuZXJhdGlvbiBmYWlsZWQ=);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj48dGl0bGU+bG9nIGluPC90aXRsZT48ZyBmaWxsPSIjMDAwIj48cGF0aCBkPSJNMSAxMXY2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMkgzYy0xLjEgMC0yIC45LTIgMnY2aDhWNWw0Ljc1IDVMOSAxNXYtNEgxeiIvPjwvZz48L3N2Zz4K)}body{margin:0}main{display:block}@supports (text-decoration:underline dotted){abbr[title]{border-bottom:0;text-decoration:underline dotted}}pre{font-family:monospace,monospace}input{margin:0}.toctogglecheckbox:checked~ul{display:none}@media screen{html,body{height:100%}:focus{outline-color:#3366cc}html{font-size:100%}html,body{font-family:sans-serif}ul{list-style-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1IiBoZWlnaHQ9IjEzIj4KCTxjaXJjbGUgY3g9IjIuNSIgY3k9IjkiIHI9IjIuNSIgZmlsbD0iIzIwMjEyMiIvPgo8L3N2Zz4K)}pre{line-height:1.3}.mw-jump-link:not(:focus){display:block;position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}.mw-body h1,.mw-body-content h2{margin-bottom:0.25em;padding:0;font-family:'Linux Libertine','Georgia','Times',serif;line-height:1.3}.mw-body h1:lang(ja),.mw-body-content h1:lang(ja),.mw-body-content h2:lang(ja),.mw-body h1:lang(he),.mw-body-content h1:lang(he),.mw-body-content h2:lang(he),.mw-body h1:lang(ko),.mw-body-content h1:lang(ko),.mw-body-content h2:lang(ko){font-family:sans-serif}.mw-body h1:lang(my),.mw-body-content h1:lang(my),.mw-body-content h2:lang(my){line-height:normal}.mw-body h1{font-size:1.8em}.vector-body{font-size:calc(1em * 0.875);line-height:1.6}.vector-body h2{margin-top:1em;font-size:1.5em}.vector-body h3{margin-top:0.3em;margin-bottom:0;padding-bottom:0;line-height:1.6}.vector-body h3{font-size:1.2em}.vector-body h3{font-weight:bold}.vector-body .toc h2{font-family:sans-serif;font-size:100%}.vector-body p{margin:0.5em 0}.mw-parser-output .external{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+Cgk8cGF0aCBmaWxsPSIjZmZmIiBzdHJva2U9IiMzNmMiIGQ9Ik0xLjUgNC41MThoNS45ODJWMTAuNUgxLjV6Ii8+Cgk8cGF0aCBmaWxsPSIjMzZjIiBkPSJNNS43NjUgMUgxMXY1LjM5TDkuNDI3IDcuOTM3bC0xLjMxLTEuMzFMNS4zOTMgOS4zNWwtMi42OS0yLjY4OCAyLjgxLTIuODA4TDQuMiAyLjU0NHoiLz4KCTxwYXRoIGZpbGw9IiNmZmYiIGQ9Im05Ljk5NSAyLjAwNC4wMjIgNC44ODVMOC4yIDUuMDcgNS4zMiA3Ljk1IDQuMDkgNi43MjNsMi44ODItMi44OC0xLjg1LTEuODUyeiIvPgo8L3N2Zz4K);background-position:center right;background-repeat:no-repeat;padding-right:13px}.mw-body .mw-indicators{font-size:0.875em;line-height:1.6;position:relative}#siteNotice{font-size:0.8em}.mw-portlet ul{list-style:none none;margin:0}.vector-menu-tabs{background-position:left bottom;float:left;height:2.5em;padding-left:1px}.vector-menu-tabs ul{float:left;height:100%;list-style:none none;margin:0;padding:0}.vector-menu-tabs li{background-image:linear-gradient(to top,#77c1f6 0,#e8f2f8 1px,#ffffff 100%);background-position:left bottom;background-repeat:repeat-x;float:left;display:block;height:100%;margin:0;padding:0;line-height:1.125em;white-space:nowrap}.vector-menu-tabs li a{background-position:right bottom;color:#0645ad;-moz-box-sizing:border-box;box-sizing:border-box;display:block;float:left;height:3.07692308em;position:relative;padding-top:1.25em;padding-left:8px;padding-right:8px;font-size:0.8125em;cursor:pointer}.vector-menu-tabs .selected{background:#ffffff}.vector-menu-tabs .selected a,.vector-menu-tabs .selected a:visited{color:#202122;text-decoration:none}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.vector-menu-dropdown{direction:ltr;float:left;cursor:pointer;position:relative;line-height:1.125em}.vector-menu-dropdown h3{color:#54595d;position:relative;display:block;-moz-box-sizing:border-box;box-sizing:border-box}.vector-menu-dropdown h3:after{content:'';background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDEyIDEyIj4KCTxwYXRoIGZpbGw9IiMyMDIxMjIiIGQ9Im0xMS4wNSAzLjk5Ni0uOTY1LTEuMDUzLTQuMDM1IDMuODYtMy45NDctMy44NkwxLjA1IDMuOTk2bDUgNSA1LTUiLz4KPC9zdmc+Cg==);background-position:100% 50%;background-repeat:no-repeat;position:absolute;top:0.76923077em;right:8px;bottom:0;width:1.23076923em;opacity:0.84}.vector-menu-dropdown h3:hover,.vector-menu-dropdown h3:focus{color:#202122}.vector-menu-dropdown h3:hover:after,.vector-menu-dropdown h3:focus:after{opacity:1}.vector-menu-dropdown .vector-menu-content{background-color:#ffffff;list-style:none none;min-width:100%;position:absolute;top:2.5em;left:-1px;margin:0;border:1px solid #a2a9b1;border-top-width:0;padding:0;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:left;opacity:0;visibility:hidden;-webkit-transition:opacity 100ms;transition:opacity 100ms;z-index:3}.vector-menu-dropdown .vector-menu-checkbox-expanded,.vector-menu-dropdown .vector-menu-checkbox-collapsed{position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;display:none}.vector-menu-dropdown .vector-menu-checkbox:checked+.vector-menu-heading .vector-menu-checkbox-expanded,.vector-menu-dropdown .vector-menu-checkbox:not(:checked)+.vector-menu-heading .vector-menu-checkbox-collapsed{display:inline}.vector-menu-dropdown .vector-menu-checkbox:checked~.vector-menu-content{opacity:1;visibility:visible}.vector-menu-dropdown ul{list-style:none}.vector-menu-tabs,.vector-menu-tabs a{background-image:linear-gradient(to bottom,rgba(167,215,249,0) 0,#a7d7f9 100%);background-repeat:no-repeat;background-size:1px 100%}.vector-menu-checkbox{cursor:pointer;position:absolute;top:0;left:0;z-index:1;opacity:0;width:100%;height:100%;margin:0;padding:0;display:none}:not(:checked)>.vector-menu-checkbox{display:block}.vector-menu-portal{margin:0 0.6em 0 0.7em;padding:0.25em 0;direction:ltr}.vector-menu-portal h3{display:block;background-image:linear-gradient(to right,rgba(200,204,209,0) 0,#c8ccd1 33%,#c8ccd1 66%,rgba(200,204,209,0) 100%);background-position:center bottom;background-repeat:no-repeat;background-size:100% 1px;color:#54595d;margin:0.5em 0 0 0.66666667em;border:0;padding:0.25em 0;font-size:0.75em;font-weight:normal;cursor:default}.vector-menu-portal .vector-menu-content{margin-left:0.5em;padding-top:0}.vector-menu-portal .vector-menu-content ul{list-style:none none;margin:0;padding-top:0.3em}.vector-menu-portal .vector-menu-content li{margin:0;padding:0.25em 0;font-size:0.75em;line-height:1.125em;word-wrap:break-word}.vector-menu-portal .vector-menu-content li a{color:#0645ad}.vector-menu-portal .vector-menu-content li a:visited{color:#0b0080}#p-search h3{display:block;position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}#simpleSearch{position:relative;height:100%}#searchInput{background-color:rgba(255,255,255,0.5);color:#000000;width:100%;height:2.15384615em;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #a2a9b1;border-radius:2px;padding:5px 2.15384615em 5px 0.4em;box-shadow:inset 0 0 0 1px transparent;font-family:inherit;font-size:0.8125em;direction:ltr;-webkit-transition:border-color 250ms,box-shadow 250ms;transition:border-color 250ms,box-shadow 250ms;-webkit-appearance:none;-moz-appearance:textfield}#simpleSearch:hover #searchInput{border-color:#72777d}#searchInput:focus,#simpleSearch:hover #searchInput:focus{outline:0;border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc}#searchInput::-webkit-input-placeholder{color:#72777d;opacity:1}#searchInput::placeholder{color:#72777d;opacity:1}#searchInput::-webkit-search-decoration,#searchInput::-webkit-search-cancel-button,#searchInput::-webkit-search-results-button,#searchInput::-webkit-search-results-decoration{display:none}#searchButton,#mw-searchButton{background-color:transparent;position:absolute;top:1px;bottom:1px;right:1px;min-width:28px;width:2.15384615em;border:0;padding:0;cursor:pointer;font-size:0.8125em;direction:ltr;text-indent:-99999px;white-space:nowrap;overflow:hidden;z-index:1}#searchButton{background:no-repeat center / 1.23076923em url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTx0aXRsZT4KCQlzZWFyY2gKCTwvdGl0bGU+Cgk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi4yIDEzLjZhNyA3IDAgMSAxIDEuNC0xLjRsNS40IDUuNC0xLjQgMS40LTUuNC01LjR6TTEzIDhBNSA1IDAgMSAxIDMgOGE1IDUgMCAwIDEgMTAgMHoiLz4KPC9zdmc+Cg==);opacity:0.67}.vector-search-box-collapses>div{display:none}.mw-footer{direction:ltr}.mw-footer ul{list-style:none none;margin:0;padding:0}.mw-footer li{color:#202122;margin:0;padding:0.5em 0;font-size:0.75em}#footer-info li{line-height:1.4}#footer-places li{float:left;margin-right:1em;line-height:2}}@media screen and (min-width:1000px){.vector-search-box-collapses>div{display:block}}@media screen{body{background-color:#f8f9fa;color:#202122;overflow-y:scroll}.mw-body{direction:ltr}.mw-body{border-top:1px solid #a7d7f9;margin-top:-1px;padding:1.25em 0.5em 1.5em}.mw-body .firstHeading{overflow:visible}.mw-header{min-height:3.125em;margin:0.625em 0 0.3125em;padding:0.125em 0;display:-ms-flexbox;display:flex;flex-wrap:nowrap;align-items:center;position:relative;z-index:4}#p-search{float:left;margin:0 0 0 2.85714286em;z-index:3;flex-grow:1}#p-search>div>#searchform{-moz-box-sizing:border-box;box-sizing:border-box;margin-left:0}.mw-body,#left-navigation,.mw-footer{margin-left:0}.mw-indicators{z-index:1}.vector-body{position:relative;z-index:0}#mw-navigation h2{position:absolute;top:-9999px}.mw-article-toolbar-container{max-width:60em;margin-left:auto;margin-right:auto}.mw-article-toolbar-container:after{clear:both;content:'';display:block}#left-navigation{float:left}#right-navigation{float:right}#right-navigation .vector-menu-content{left:auto;right:-1px}#mw-sidebar-button{float:left;margin-left:-0.75em;margin-right:0.75em}#mw-panel{background-image:linear-gradient(to bottom,#ffffff 0%,#f8f9fa 10%,#f8f9fa 90%,#ffffff 100%);position:absolute;left:-1.875em;width:11em;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px 0 40px 0.8125em;z-index:1}#p-namespaces{background-image:none;padding-left:0}.mw-footer{border-top:1px solid #a2a9b1;padding:0.75em}.mw-page-container{max-width:103.125em;min-height:100%;margin-left:auto;margin-right:auto;padding:0.05px 0.9375em;background-color:#ffffff}.skin--responsive .mw-page-container{min-width:auto}.mw-page-container-inner{position:relative}.mw-workspace-container{max-width:90em;margin-left:auto;margin-right:auto;position:relative}.mw-workspace-container.mw-footer-container{position:static}.mw-content-container{max-width:60em;margin-left:auto;margin-right:auto}.mw-footer-container{padding-top:50px;padding-bottom:82px}#mw-sidebar-checkbox:not(:checked)~.mw-workspace-container .mw-sidebar{-webkit-transform:translateX(-6.5625em);-ms-transform:translateX(-6.5625em);transform:translateX(-6.5625em)}@keyframes search-loader-progress-bar{0%{background-size:0 2px;background-position:-10% 0}30%{background-size:30% 2px;background-position:-10% 0}70%{background-size:30% 2px;background-position:110% 0}100%{background-size:0 2px;background-position:110% 0}}#p-search{font-size:calc(1em * 0.875)}#searchInput,#searchButton,#mw-searchButton{font-size:inherit}#searchInput{height:2.28571429em}#searchButton,#mw-searchButton{background-size:1.42857143em auto}.client-js .skin-vector-search-vue #searchInput{padding-left:2.57142857em;padding-right:8px}.client-js .skin-vector-search-vue #searchButton,.client-js .skin-vector-search-vue #mw-searchButton{pointer-events:none;right:auto;top:0;bottom:0;left:1px;width:2.57142857em}.client-js .skin-vector-search-vue .p-search--show-thumbnail #searchInput:focus,.client-js .skin-vector-search-vue .vector-search-box-show-thumbnail #searchInput:focus{position:relative;padding-left:calc(2.57142857em + 24px);width:calc(100% + 24px);left:calc(-1 * 24px)}.client-js .skin-vector-search-vue .p-search--show-thumbnail #searchInput:focus~#searchButton,.client-js .skin-vector-search-vue .vector-search-box-show-thumbnail #searchInput:focus~#searchButton,.client-js .skin-vector-search-vue .p-search--show-thumbnail #searchInput:focus~#mw-searchButton,.client-js .skin-vector-search-vue .vector-search-box-show-thumbnail #searchInput:focus~#mw-searchButton{left:-11px}#mw-panel{font-size:inherit}#mw-panel nav:first-child{background-image:none}#mw-panel nav:first-child h3{display:none}#mw-panel nav:first-child .vector-menu-content{margin-left:0.5em}.mw-checkbox-hack-button{display:inline-block;cursor:pointer}#mw-sidebar-button:before{opacity:0.67;background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E %3Ctitle%3E chevron %3C/title%3E %3Cpath d=%22m9 2 1.3 1.3L3.7 10l6.6 6.7L9 18l-8-8 8-8zm8.5 0L19 3.3 12.2 10l6.7 6.7-1.4 1.3-8-8 8-8z%22/%3E %3C/svg%3E")}#mw-sidebar-checkbox:not(:checked)~.mw-header #mw-sidebar-button:before{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E %3Ctitle%3E menu %3C/title%3E %3Cpath d=%22M1 3v2h18V3zm0 8h18V9H1zm0 6h18v-2H1z%22/%3E %3C/svg%3E")}#mw-sidebar-button:hover:before{opacity:1}#mw-sidebar-checkbox:not(:checked)~.mw-workspace-container .mw-sidebar{visibility:hidden;opacity:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.vector-animations-ready .mw-sidebar{-webkit-transition:transform 100ms ease-out,opacity 100ms ease-out,visibility 100ms ease-out;transition:transform 100ms ease-out,opacity 100ms ease-out,visibility 100ms ease-out}.vector-animations-ready #mw-sidebar-button{-webkit-transition:background-color 100ms,border-color 100ms,box-shadow 100ms;transition:background-color 100ms,border-color 100ms,box-shadow 100ms}.vector-user-links{display:flex;align-items:center;position:relative;justify-content:flex-end;flex-shrink:1}.vector-user-links .vector-user-menu-more{font-size:0.875em}.vector-user-links .vector-user-menu-more .vector-menu-content-list{display:flex;align-items:center}.vector-user-links .vector-user-menu-more .vector-menu-content-list li{margin:0;white-space:nowrap}.vector-user-links .vector-user-menu-more .vector-menu-content-list li a{color:#202122;text-decoration:none}.vector-user-links .vector-user-menu-more .vector-menu-content-list li.user-links-collapsible-item{display:none}.vector-user-links .vector-user-menu-more .mw-ui-button{display:flex;align-items:center}.vector-user-links .vector-user-menu.emptyPortlet{display:block}.vector-user-links .vector-user-menu .vector-menu-heading.mw-ui-icon>span{color:transparent}.vector-user-links .vector-user-menu .vector-menu-content{min-width:200px;max-width:21.875em;top:100%;left:unset;right:0;border-top-width:1px;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,0.25)}.vector-user-links .vector-user-menu .vector-menu-content-item{min-height:2em;display:flex;align-items:center;padding:0 12px;color:#202122;text-decoration:none}.vector-user-links .vector-user-menu .vector-menu-content-item span{font-size:0.875em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:initial}.vector-user-links .vector-user-menu li>a:hover,.vector-user-links .vector-user-menu .vector-menu-content-item:hover,.vector-user-links .vector-user-menu .mw-list-item>a:hover{background-color:#f6f6f6}.vector-user-links .vector-user-menu .vector-menu-content-item-login{border-bottom:1px solid #a2a9b1}.vector-user-links .vector-user-menu .vector-user-menu-anon-editor{padding:4px 12px;color:#54595d;font-size:0.875em}.vector-user-links .vector-user-menu .vector-user-menu-anon-editor p{margin:0}.vector-user-links .vector-user-menu .vector-user-menu-anon-editor a:before{content:'(';color:#54595d}.vector-user-links .vector-user-menu .vector-user-menu-anon-editor a:after{content:')';color:#54595d}.vector-user-links .vector-user-menu-logged-out h3:before{height:100%}.vector-user-links .vector-user-menu-logged-out h3:after{content:none}}@media screen and (min-width:106.875em){.mw-page-container{border-left:1px solid #f8f9fa;border-right:1px solid #f8f9fa}}@media screen and (max-width:86.75em){.mw-checkbox-hack-checkbox:checked~.mw-workspace-container .mw-content-container,.mw-checkbox-hack-checkbox:checked~.mw-workspace-container .mw-article-toolbar-container{margin-left:11.5em}.vector-animations-ready .mw-sidebar{-webkit-transition:none;transition:none}}@media screen and (min-width:93.75em){#mw-panel{background:#ffffff;border-right:1px solid #f8f9fa}}@media screen and (min-width:1000px){#p-search{margin:0 12px 0 2.85714286em;width:20vw;max-width:100%;min-width:25em;flex-basis:10.71428571em;flex-grow:1}#p-search>div>#searchform{max-width:35.71428571em}.mw-page-container{padding-left:1.875em;padding-right:1.875em}}@media screen and (max-width:720px){.mw-checkbox-hack-checkbox:checked~.mw-workspace-container #mw-panel{width:100%;position:relative;left:0}.mw-checkbox-hack-checkbox:checked~.mw-workspace-container .mw-content-container,.mw-checkbox-hack-checkbox:checked~.mw-workspace-container .mw-article-toolbar-container{margin-left:0!important}}@media screen and (max-width:720px){.vector-animations-ready .mw-sidebar{transition:none}}@media screen and (min-width:720px){.vector-user-links .vector-user-menu-more .vector-menu-content-list li.user-links-collapsible-item{display:block}}@media screen{.mw-parser-output a.extiw:visited,.mw-parser-output a.external:visited{color:#663366}.mw-parser-output a.extiw:active,.mw-parser-output a.external:active{color:#bb6633}.plainlinks a.external{background:none!important;padding:0!important}.mw-parser-output a.external{background-image:var(--sf-img-8);background-position:center right;background-repeat:no-repeat;padding-right:13px}.mw-parser-output a.external{color:#36b}.mw-body-content:after{clear:both;content:'';display:block}#siteNotice{position:relative;text-align:center;margin:0}#contentSub,#contentSub2{font-size:84%;line-height:1.2em;margin:0 0 1.4em 1em;color:#54595d;width:auto}.emptyPortlet{display:none}.mw-indicators{float:right}#catlinks{text-align:left}.catlinks{border:1px solid #a2a9b1;background-color:#f8f9fa;padding:5px;margin-top:1em;clear:both}.catlinks ul{display:inline;margin:0;padding:0;list-style:none}.catlinks li{display:inline-block;line-height:1.25em;border-left:1px solid #a2a9b1;margin:0.125em 0;padding:0 0.5em}.catlinks li:first-child{padding-left:0.25em;border-left:0}a{text-decoration:none;color:#0645ad;background:none}a:not([href]){cursor:pointer}a:visited{color:#0b0080}a:active{color:#faa700}a:hover,a:focus{text-decoration:underline}a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}h1,h2,h3{color:#000;margin:0;padding-top:0.5em;padding-bottom:0.17em;overflow:hidden}h1,h2{margin-bottom:0.6em;border-bottom:1px solid #a2a9b1}h3{margin-bottom:0.3em}h1{font-size:188%;font-weight:normal}h2{font-size:150%;font-weight:normal}h3{font-size:128%}p{margin:0.4em 0 0.5em 0}ul{margin:0.3em 0 0 1.6em;padding:0}li{margin-bottom:0.1em}pre,code{font-family:monospace,monospace}pre,code{background-color:#f8f9fa;color:#000;border:1px solid #eaecf0}code{border-radius:2px;padding:1px 4px}pre{padding:1em;white-space:pre-wrap;overflow-x:hidden;word-wrap:break-word}form{border:0;margin:0}@counter-style meetei{system:numeric;symbols:'\ABF0' '\ABF1' '\ABF2' '\ABF3' '\ABF4' '\ABF5' '\ABF6' '\ABF7' '\ABF8' '\ABF9';suffix:') '}@counter-style santali{system:numeric;symbols:'\1C50' '\1C51' '\1C52' '\1C53' '\1C54' '\1C55' '\1C56' '\1C57' '\1C58' '\1C59'}.mw-content-ltr ul{margin:0.3em 0 0 1.6em;padding:0}h1:lang(anp),h1:lang(as),h1:lang(bh),h1:lang(bho),h1:lang(bn),h1:lang(gu),h1:lang(hi),h1:lang(kn),h1:lang(ks),h1:lang(ml),h1:lang(mr),h1:lang(my),h1:lang(mai),h1:lang(ne),h1:lang(new),h1:lang(or),h1:lang(pa),h1:lang(pi),h1:lang(sa),h1:lang(ta),h1:lang(te){line-height:1.6em!important}h2:lang(anp),h3:lang(anp),h4:lang(anp),h5:lang(anp),h6:lang(anp),h2:lang(as),h3:lang(as),h4:lang(as),h5:lang(as),h6:lang(as),h2:lang(bho),h3:lang(bho),h4:lang(bho),h5:lang(bho),h6:lang(bho),h2:lang(bh),h3:lang(bh),h4:lang(bh),h5:lang(bh),h6:lang(bh),h2:lang(bn),h3:lang(bn),h4:lang(bn),h5:lang(bn),h6:lang(bn),h2:lang(gu),h3:lang(gu),h4:lang(gu),h5:lang(gu),h6:lang(gu),h2:lang(hi),h3:lang(hi),h4:lang(hi),h5:lang(hi),h6:lang(hi),h2:lang(kn),h3:lang(kn),h4:lang(kn),h5:lang(kn),h6:lang(kn),h2:lang(ks),h3:lang(ks),h4:lang(ks),h5:lang(ks),h6:lang(ks),h2:lang(ml),h3:lang(ml),h4:lang(ml),h5:lang(ml),h6:lang(ml),h2:lang(mr),h3:lang(mr),h4:lang(mr),h5:lang(mr),h6:lang(mr),h2:lang(my),h3:lang(my),h4:lang(my),h5:lang(my),h6:lang(my),h2:lang(mai),h3:lang(mai),h4:lang(mai),h5:lang(mai),h6:lang(mai),h2:lang(ne),h3:lang(ne),h4:lang(ne),h5:lang(ne),h6:lang(ne),h2:lang(new),h3:lang(new),h4:lang(new),h5:lang(new),h6:lang(new),h2:lang(or),h3:lang(or),h4:lang(or),h5:lang(or),h6:lang(or),h2:lang(pa),h3:lang(pa),h4:lang(pa),h5:lang(pa),h6:lang(pa),h2:lang(pi),h3:lang(pi),h4:lang(pi),h5:lang(pi),h6:lang(pi),h2:lang(sa),h3:lang(sa),h4:lang(sa),h5:lang(sa),h6:lang(sa),h2:lang(ta),h3:lang(ta),h4:lang(ta),h5:lang(ta),h6:lang(ta),h2:lang(te),h3:lang(te),h4:lang(te),h5:lang(te),h6:lang(te){line-height:1.4em}h2:lang(th){line-height:1.6}.toc{border:1px solid #a2a9b1;background-color:#f8f9fa;font-size:95%}.toc{display:table;padding:7px}.toc h2{display:inline;border:0;padding:0;font-size:100%;font-weight:bold}.toc .toctitle{text-align:center}.toc ul{list-style:none;margin:0.3em 0;padding:0}.tocnumber,.toctext{display:table-cell;text-decoration:inherit}.tocnumber{color:#202122}.mw-content-ltr .tocnumber{padding-left:0;padding-right:0.5em}.toctogglecheckbox{display:inline!important;position:absolute;opacity:0;z-index:-1}.toctogglespan{font-size:94%}.toctogglespan:before{content:' ['}.toctogglespan:after{content:']'}.toctogglelabel{cursor:pointer;color:#0645ad}.toctogglelabel:hover{text-decoration:underline}.toctogglecheckbox:focus+.toctitle .toctogglelabel{text-decoration:underline;outline:dotted 1px;outline:auto -webkit-focus-ring-color}.toctogglecheckbox:checked+.toctitle .toctogglelabel:after{content:'show'}.toctogglecheckbox:not(:checked)+.toctitle .toctogglelabel:after{content:'hide'}.toc .toctitle{direction:ltr}.mw-content-ltr .toc ul{text-align:left}.mw-content-ltr .toc ul ul{margin:0 0 0 2em}}#archnavbar{height:40px!important;padding:10px 15px!important;background:#333!important;border-bottom:5px #08c solid!important}#archnavbarlogo{float:left!important;margin:0!important;padding:0!important;height:40px!important;width:190px!important}html>body #archnavbarlogo{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEiIHdpZHRoPSI2MDAiIGhlaWdodD0iMTI2Ij48cGF0aCBkPSJNMTU5LjU2OCAzNC40MjdjLTguODktLjAxNC0xNi4yNjcgMS44MDktMTkuMTIgMi44MDNsLTIuOTM3IDE1Ljg1N2MtLjAwNy4wNTggMTQuNjE3LTMuOSAyMS4wNTktMy42NjcgMTAuNjY1LjM4MyAxMS42NDYgNC4wNzYgMTEuNDYgOS4wNi4xODIuMjkyLTIuNzUyLTQuNTAzLTExLjk3OS00LjY2NC0xMS42NC0uMi0yOC4wNjkgNC4xMjItMjguMDQ2IDIxLjY5Mi0uMzE0IDE5Ljc2NSAxNC43NjQgMjUuNTc5IDI1LjAzMiAyNS42ODYgOS4yMzItLjE2OCAxMy41NjMtMy40OTYgMTUuOTM0LTUuMjggMy4xMTUtMy4yNTcgNi42NzktNi41MzIgMTAuMDc4LTEwLjQ2Mi0zLjIxNiA1Ljg0NC02LjAwNSA5Ljg4NC04LjkwNyAxMi45Nzd2Mi42MTFsMTQuMDMzLTIuMzYxLjA5Ni0zOC4xNDRjLS4xNDMtNS4zOTkgMy4wOTYtMjYuMDU3LTI2LjcwMy0yNi4xMDh6bS0yLjAxNiAzMy4yMWM1LjgxNy4wOCAxMi40ODggMi45NDggMTIuNDk3IDkuODQ5LjAzIDYuMjc3LTcuODYzIDkuNjUxLTEyLjk5NiA5LjU5OC01LjEzNS0uMDUzLTExLjk0OS00LjAzNi0xMS45NzktMTAuMTU1LjA5OS01LjQ3IDYuNDI2LTkuNDMyIDEyLjQ3OC05LjI5MXptMzcuOTcyLTI5LjY4NWwtLjA5NSA2My4xNjYgMTYuMzQ4LTMuMTUuMDI3LTM1LjgxNGMuMDA0LTUuMzMzIDcuNjItMTEuNTY0IDE3LjE3OC0xMS40NjQgMi4wMjgtMy42NyA1Ljg0LTEzLjA1IDYuNzctMTUuMTgzLTIxLjM1MS0uMDUxLTIxLjYyMyA2LjEzNy0yNS4zMzYgOS4xOC0uMDQtNS44MDYtLjAxMy05LjI5Mi0uMDEzLTkuMjkybC0xNC44NzkgMi41NTd6bTkyLjAwMiA4LjI5MmMtLjE1OC0uMDc0LTguNTI2LTkuNzg4LTI1LjM1LTkuODY0LTE1Ljc1OC0uMjYyLTMzLjQzMyA1Ljg0Ny0zMy43MTYgMzIuMjcuMTM4IDIzLjIzMiAxNi45NzkgMzIuMzExIDMzLjgwNSAzMi40ODggMTguMDA3LjE4NyAyNS4xNzItMTEuMjYgMjUuNjAyLTExLjU0My0yLjE0OS0xLjg2My0xMC4xOTYtOS44MzctMTAuMTk2LTkuODM3cy01LjAyNyA3LjE1Ny0xNC43NzkgNy4yNDhjLTkuNzU1LjA5My0xOC4yMzQtNy41NC0xOC4zNTQtMTguMTg5LS4xMjUtMTAuNjUgNy43OTUtMTYuNDE5IDE4LjQyNy0xNi44ODUgOS4yMDUtLjAwMiAxNC41MTYgNS45NDMgMTQuNTE2IDUuOTQzem0yMC42MDYtMzAuMzk5bC0xNS40MzQgMy42MjguMTE1IDgyLjI3NyAxNS4yMDQtMi43NDUuMTcyLTM4LjcyYy4wMzMtNC4wNiA1Ljg3NC0xMC4yOTUgMTUuNjI2LTEwLjA5NyA5LjMyNS4wOTcgMTEuNDEgNi4yMTUgMTEuMzg0IDYuOTg4bC4yNjkgNDQuODI0IDE0Ljk5My0yLjY1LjA1Ny00Ny41M2MuMDk5LTQuNTc0LTEwLjAxOC0xNC4yMzMtMjYuMjgtMTQuMzAyLTcuNzI5LjAxMi0xMi4wMDkgMS43NjItMTQuMTg3IDMuMDUyLTMuNzI2IDIuODc5LTcuOTg1IDUuNjM3LTEyLjE3IDkuMTU3IDMuODY5LTQuOTcgNy4xMTctOC40MDcgMTAuMjktMTAuOTYxbC0uMDQtMjIuOTIxeiIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PHBhdGggZD0iTTM2MC4xMzYgMTcuMjE4bDYuOTYyLTEuNzQyLjMzIDgyLjk1LTcuMDc0IDEuMjA0em0xOC45MjggMjQuNzU3bDYuMTAxLTIuNzE2LjA1MiA1OS40NzgtNS44OTIgMS4yMTd6bS0xLjQ1LTIxLjQ0OGw0LjkyLTQuMDE1IDQuMDg2IDQuNTQ3LTQuOTIxIDQuMTIxem0xOS4wMjQgMjAuMzY1bDYuOTYyLTEuNDIxLjAzMyAxMi40MzRjLjAwMS41MzQgMy44MjMtMTMuODkgMjIuMjU4LTEzLjU3IDE3LjkuMSAyMC44MjcgMTMuOTU3IDIwLjczIDE3LjA2NGwuMjIxIDQzLjcyNS02LjEwMiAxLjMyNC0uMDM1LTQzLjE4OWMuMDctMS4yNjEtMi43OS0xMS45MjctMTUuNDM5LTExLjk2Ni0xMi42NDYtLjAzNy0yMS40MDkgOS4xODYtMjEuMzkzIDE1LjA3OGwuMSAzOC4wNDctNy4wNyAxLjg0N3ptMTEwLjk1NCA1OC41NDZsLTYuOTYyIDEuNDItLjAzMy0xMi40MzNjLS4wMDEtLjUzNC0zLjgyNSAxMy44OS0yMi4yNTggMTMuNTctMTcuOS0uMS0yMC44MjctMTMuOTU3LTIwLjczLTE3LjA2NGwtLjIyMS00My43MjUgNy4zOTctMS40OTQuMTE0IDQzLjE5Yy4wMDMgMS4xOCAxLjQxNiAxMi4wOTYgMTQuMDY1IDEyLjEzNSAxMi42NDYuMDM3IDIxLjUwNi03LjYxNiAyMS41NjktMTkuMTM5bC0uMDktMzQuMDc2IDYuODg1LTEuNzU3em0xMy42NDUtNTkuMDM3bC00Ljg4MiAzLjgyIDE4LjcxNyAyNC40OTQtMTkuOTYzIDI4LjMgNS4xNzkgMy44NDMgMTguNzY2LTI2LjI4IDE5LjM2OCAyNi45MDIgNC43OTEtMy44Mi0yMC43NTctMjguNzY1IDE2LjU2LTIzLjI2Mi01LjA5Mi00LjMwNS0xNS4wODUgMjEuNTI1ek02MS44OCAxLjc3OGMtNS4zODUgMTMuMjAzLTguNjMzIDIxLjgzOS0xNC42MjkgMzQuNjQ5IDMuNjc2IDMuODk2IDguMTg4IDguNDM0IDE1LjUxNiAxMy41NTktNy44NzgtMy4yNDItMTMuMjUyLTYuNDk3LTE3LjI2Ny05Ljg3NC03LjY3MyAxNi4wMTEtMTkuNjk1IDM4LjgxOC00NC4wOSA4Mi42NSAxOS4xNzQtMTEuMDY4IDM0LjAzNy0xNy44OTMgNDcuODg5LTIwLjQ5N2EzNS4xMDMgMzUuMTAzIDAgMCAxLS45MS04LjIxM2wuMDIzLS42MTRjLjMwNC0xMi4yODQgNi42OTQtMjEuNzMgMTQuMjY0LTIxLjA5IDcuNTcuNjQyIDEzLjQ1NCAxMS4xMjYgMTMuMTUgMjMuNDEtLjA1OCAyLjMxMi0uMzE5IDQuNTM2LS43NzQgNi41OTggMTMuNzAxIDIuNjggMjguNDA1IDkuNDg3IDQ3LjMyIDIwLjQwNy0zLjczLTYuODY2LTcuMDU5LTEzLjA1Ni0xMC4yMzgtMTguOTUtNS4wMDctMy44ODItMTAuMjMtOC45MzMtMjAuODg0LTE0LjQwMiA3LjMyMyAxLjkwMyAxMi41NjYgNC4wOTkgMTYuNjUzIDYuNTUyQzc1LjU4IDM1Ljc4NiA3Mi45NjMgMjcuNzkgNjEuODggMS43Nzh6IiBmaWxsPSIjMTc5M2QxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNTc2Ljc3MSA5My4yNjVWODAuNjAzaC00Ljczdi0xLjY5NWgxMS4zOHYxLjY5NWgtNC43NXYxMi42NjJoLTEuOW04LjYyOSAwVjc4LjkwOGgyLjg1OWwzLjM5OCAxMC4xNjZjLjMxNC45NDcuNTQyIDEuNjU1LjY4NiAyLjEyNS4xNjMtLjUyMi40MTgtMS4yOS43NjQtMi4zMDFsMy40MzctOS45OWgyLjU1NnYxNC4zNTdoLTEuODMxVjgxLjI1bC00LjE3MiAxMi4wMTZoLTEuNzE0bC00LjE1Mi0xMi4yMjJ2MTIuMjIyaC0xLjgzMiIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zaXplPSI4LjQ0MSIgZm9udC1mYW1pbHk9IkRlamFWdSBTYW5zIE1vbm8iIGZpbGw9ImdyYXkiLz48L3N2Zz4=) no-repeat!important;background-size:190px 40px!important}#archnavbarlogo p{margin:0!important;padding:0!important;text-indent:-9999px!important}#archnavbarlogo a{display:block!important;height:40px!important;width:190px!important}#archnavbar ul{display:inline!important;float:right!important;list-style:none!important;margin:0!important;padding:0!important}#archnavbar ul li{float:left!important;font-size:14px!important;font-family:sans-serif!important;line-height:45px!important;padding-right:15px!important;padding-left:15px!important}#archnavbar ul#archnavbarlist li a{color:#999;font-weight:bold!important;text-decoration:none!important}#archnavbar ul li a:hover{color:white!important;text-decoration:underline!important}#archnavbar ul li.anb-selected a{color:white!important}@media (max-width:600px){#anb-wiki{display:none}}@media (max-width:680px){html>body #archnavbarlogo{width:40px!important;margin-right:5px!important;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEyMDAiIHZlcnNpb249IjEiPjxwYXRoIGQ9Ik02MDAgMGMtNTMuNDE2IDEzMC45NjItODUuNjcxIDIxNi43NC0xNDUuMTQzIDM0My44MSAzNi40NjQgMzguNjUxIDgxLjIyIDgzLjQ0OSAxNTMuOTA1IDEzNC4yODUtNzguMTQ1LTMyLjE1Ni0xMzEuNDAzLTY0LjIxMy0xNzEuMjM4LTk3LjcxNEMzNjEuNDEgNTM5LjIgMjQxLjk4OSA3NjUuMTk0IDAgMTIwMGMxOTAuMTYxLTEwOS43ODQgMzM3LjY2NS0xNzcuMzk3IDQ3NS4wNDgtMjAzLjIzOC01Ljg5NS0yNS4zNjctOS4xOC01Mi44OTYtOC45NTMtODEuNTI0bC4xOS01LjkwNUM0NjkuMzA1IDc4Ny40OCA1MzIuNzIgNjkzLjYzOCA2MDcuODEgNzAwYzc1LjA4OSA2LjM2MiAxMzMuNDk0IDExMC41MjggMTMwLjQ3NiAyMzIuMzgxLS41NjggMjIuOTE2LTMuMTA1IDQ0Ljg4NS03LjYyIDY1LjMzM0M4NjYuNTI4IDEwMjQuMzI1IDEwMTIuNDYyIDEwOTEuNzMgMTIwMCAxMjAwYy0zNi45OTUtNjguMTExLTcwLjE4LTEyOS4zMzUtMTAxLjcxNC0xODcuODEtNDkuNjcyLTM4LjQ5OS0xMDEuMzY1LTg4LjYxMy0yMDcuMDQ4LTE0Mi44NTcgNzIuNjQgMTguODc1IDEyNC43OTMgNDAuNjEyIDE2NS4zMzMgNjQuOTUzQzczNS45NTIgMzM3LjM0OCA3MDkuOTQ4IDI1OC4wMTYgNjAwIDB6IiBmaWxsPSIjMTc5M2QxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=) no-repeat!important;background-size:40px 40px!important}#archnavbar ul{display:flex!important;justify-content:space-between;flex-wrap:nowrap;overflow:hidden;float:none!important}#archnavbar ul li{padding:0!important;float:none!important}}@media (max-width:845px){#anb-home{display:none}html>body #archnavbarlogo{padding-right:15px!important}#archnavbar{padding-left:5px!important;padding-right:5px!important}#archnavbar ul li{padding-left:5px!important;padding-right:5px!important}}body{background:#f6f9fc}#content{background:#ffffff;border:1px solid #cccccc}#content h1,#content h2,#content h3,#content pre,#content code{color:#222222}#content ul{list-style-image:none}#content pre:not([class*="CodeMirror"]){border:1px solid #bbccdd;overflow:auto;word-break:break-all;white-space:pre-wrap!important}#content pre:not([class*="CodeMirror"]),#content code{background-color:#ebf1f5;font-family:monospace,monospace}#content code{display:inline-block;padding:0 0.3em;border-width:0;border-radius:0}#footer{color:#333333}#toc{background-color:#f9faff;border:1px solid #d7dfe3}#bodyContent>div.mw-content-ltr a{font-weight:bold}#bodyContent #toc a{font-weight:normal}#content a:not(.new),header.mw-header li:not(.new) a:not(.new),#mw-navigation li:not(.new) a:not(.new),#mw-panel li:not(.new) a:not(.new),#column-one li:not(.new) a:not(.new),#footer a:not(.new){text-decoration:none;color:#0077bb!important}#content a:not(.new):hover,header.mw-header li:not(.new) a:not(.new):hover,#mw-navigation li:not(.new) a:not(.new):hover,#mw-panel li:not(.new) a:not(.new):hover,#column-one li:not(.new) a:not(.new):hover,#footer a:not(.new):hover{text-decoration:underline;background-color:transparent;color:#999999!important}#content a:active,header.mw-header li:not(.new) a:active,#mw-navigation li:not(.new) a:active,#mw-panel li:not(.new) a:active,#column-one li:not(.new) a:active,#footer a:active,#content a:focus,header.mw-header li:not(.new) a:focus,#mw-navigation li:not(.new) a:focus,#mw-panel li:not(.new) a:focus,#column-one li:not(.new) a:focus,#footer a:focus,#content a:active:hover,header.mw-header li:not(.new) a:active:hover,#mw-navigation li:not(.new) a:active:hover,#mw-panel li:not(.new) a:active:hover,#column-one li:not(.new) a:active:hover,#footer a:active:hover,#content a:focus:hover,header.mw-header li:not(.new) a:focus:hover,#mw-navigation li:not(.new) a:focus:hover,#mw-panel li:not(.new) a:focus:hover,#column-one li:not(.new) a:focus:hover,#footer a:focus:hover{color:#ee9900!important}#content a:not(.new):visited,#mw-panel li:not(.new) a:not(.new):visited,#p-navigation li:not(.new) a:not(.new):visited,#p-tb li:not(.new) a:not(.new):visited{color:#666666!important}.mw-body-content a.external{background:var(--sf-img-8) center right no-repeat;padding-right:13px}.mw-body h1,.mw-body-content h2{font-family:sans-serif}nav.vector-menu-tabs{padding-left:0}nav.vector-menu-tabs ul,nav.vector-menu-tabs ul li{background:none}nav.vector-menu-tabs li.selected{border:1px solid #cccccc;border-bottom-color:#ffffff;background-color:#ffffff}nav.vector-menu-tabs li.selected a{background:none!important}nav.vector-menu-tabs ul li{border:1px}body.skin-vector.skin--responsive nav.vector-menu-tabs li.selected{margin-top:-1px;border-bottom:none}body.skin-vector.skin--responsive li:not(:first-child).selected{margin-left:-1px}body.skin-vector.skin--responsive div.mw-page-container{background-color:#f6f9fc}body.skin-vector.skin--responsive div#mw-panel{background-image:none}</style>
<meta name=ResourceLoaderDynamicStyles content>
<style>pre{white-space:pre}span.archwiki-template-pkg,span.archwiki-template-man{font-family:monospace,monospace}div.archwiki-template-box{padding:5px;border:thin solid black;margin:0.5em 0;overflow:hidden}div.archwiki-template-box.archwiki-template-box-note{background-color:#ddf;border-color:#bbd}</style>
<meta name=generator content="MediaWiki 1.37.2">
<meta name=referrer content=no-referrer-when-downgrade>
<meta name=format-detection content="telephone=no">
<meta name=viewport content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=0.25, maximum-scale=5.0">
<link rel=search type=application/opensearchdescription+xml href=https://wiki.archlinux.org/opensearch_desc.php title="ArchWiki (en)">
<link rel=EditURI type=application/rsd+xml href="https://wiki.archlinux.org/api.php?action=rsd">
<link rel=license href=http://www.gnu.org/copyleft/fdl.html>
<link rel=alternate type=application/atom+xml title="ArchWiki Atom feed" href="https://wiki.archlinux.org/index.php?title=Special:RecentChanges&feed=atom">
<link rel="shortcut icon" href=data:image/vnd.microsoft.icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABvElEQVQ4jY2TP4gTQRTGfzM7ybp35mBX8LY4GxM5OI4UiqDWtoKIjWhl4QmmEQwIhzZaa3GLlYWgjViI+AcUrrASUYTbQ0UxepwpFj1EDCSXuLNj4QYSLxP8mnm8972P3wyMMMZgUxjF+ycLUjUW5l/YPMq6/VfnHCEmAGuAsBHsurG6QwiaRUeq2cCdfXy88nmUT9qSJ4tywVNyGxjVSbPzNp81wFNyt6cknpJ00uzk2Wfr/n8HHLrz4ajriFeuEsuekvS08Zu/eoujvFveYN+t98XAUw1jmEmN+ZEZfG2M8BzZKhVl+f6x8vexBIGn6hMFOeMqgTEEXZ2J39qwqbNSR5tLYwnmbr6b2hO4axvt1P/a6tHTw3SuI1pTrlNZPT33bSTBps7qb5K23/jZ7S8/AO72511tShud9MJIgjCKdwINYHs+e5TUqkfy2W3gVN5vA+WkVk3+Jbg8sAzwcKB+mp8G+ALUh64QRnEZOMOwPg3Ub/vEgAvcGwoArgKFvF4DrgEfBwKawHVgHagAy2EUnwAQ00sre4HXwBPgSlKrvmSMwig+CCwCh4F5Mb20chF4ntSq1h83JujAH3Eom+H9uAq8AAAAAElFTkSuQmCC><style>.sf-hidden{display:none!important}</style><link rel=canonical href=https://wiki.archlinux.org/title/Map_scancodes_to_keycodes><meta http-equiv=content-security-policy content="default-src 'none'; font-src 'self' data:; img-src 'self' data:; style-src 'unsafe-inline'; media-src 'self' data:; script-src 'unsafe-inline' data:;"></head>
<body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Map_scancodes_to_keycodes rootpage-Map_scancodes_to_keycodes skin-vector action-view skin--responsive skin-vector-search-vue" data-new-gr-c-s-check-loaded=14.1058.0 data-gr-ext-installed><div id=archnavbar class=noprint>
<div id=archnavbarlogo>
<p><a id=logo href=https://www.archlinux.org/></a></p>
</div>
<div id=archnavbarmenu>
<ul id=archnavbarlist>
<li id=anb-home><a href=https://www.archlinux.org/>Home</a></li> <li id=anb-packages><a href=https://www.archlinux.org/packages/>Packages</a></li> <li id=anb-forums><a href=https://bbs.archlinux.org/>Forums</a></li> <li id=anb-wiki class=anb-selected><a href=https://wiki.archlinux.org/>Wiki</a></li> <li id=anb-bugs><a href=https://bugs.archlinux.org/>Bugs</a></li> <li id=anb-security><a href=https://security.archlinux.org/>Security</a></li> <li id=anb-aur><a href=https://aur.archlinux.org/>AUR</a></li> <li id=anb-download><a href=https://www.archlinux.org/download/>Download</a></li> </ul>
</div>
</div>
<div class=mw-page-container>
<a class=mw-jump-link href=#content>Jump to content</a>
<div class=mw-page-container-inner>
<input type=checkbox id=mw-sidebar-checkbox class="mw-checkbox-hack-checkbox sf-hidden">
<header class=mw-header>
<label id=mw-sidebar-button class="mw-checkbox-hack-button mw-ui-icon mw-ui-button mw-ui-quiet mw-ui-icon-element" for=mw-sidebar-checkbox role=button aria-controls=mw-panel data-event-name=ui.sidebar tabindex=0 title="Main menu" aria-expanded=false>
Toggle sidebar
</label>
<a href=https://wiki.archlinux.org/title/Main_page class="mw-logo sf-hidden">
</a>
<div id=p-search role=search class="vector-search-box vector-search-box-collapses vector-search-box-show-thumbnail">
<div>
<h3>
<label for=searchInput>Search</label>
</h3>
<form action=/index.php id=searchform>
<div id=simpleSearch data-search-loc=header-moved>
<input type=search name=search placeholder="Search ArchWiki" autocapitalize=sentences accesskey=f id=searchInput autocomplete=off value>
<input type=submit name=fulltext value=Search title="Search the pages for this text" id=mw-searchButton class="searchButton mw-fallbackSearchButton">
<input type=submit name=go value=Go title="Go to a page with this exact name if it exists" id=searchButton class=searchButton>
</div>
</form>
</div>
<a href=https://wiki.archlinux.org/title/Special:Search class="mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-wikimedia-search search-toggle sf-hidden">
</a>
</div>
<div class=vector-user-links>
<nav id=p-personal-more class="mw-portlet mw-portlet-personal-more vector-menu vector-user-menu-more" aria-labelledby=p-personal-more-label role=navigation>
<h3 id=p-personal-more-label class="vector-menu-heading sf-hidden">
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list>
<li id=p-createaccount class=user-links-collapsible-item>
<a href="https://wiki.archlinux.org/index.php?title=Special:CreateAccount&returnto=Map+scancodes+to+keycodes" icon=userAvatar class="mw-ui-button mw-ui-quiet" title="You are encouraged to create an account and log in; however, it is not mandatory"><span>Create account</span></a>
</li>
</ul>
</div>
</nav>
<nav id=p-personal class="mw-portlet mw-portlet-personal emptyPortlet vector-user-menu vector-user-menu-logged-out vector-menu vector-menu-dropdown" aria-labelledby=p-personal-label role=navigation title="More options">
<input type=checkbox id=p-personal-checkbox role=button aria-haspopup=true data-event-name=ui.dropdown-p-personal class=vector-menu-checkbox aria-labelledby=p-personal-label>
<h3 id=p-personal-label class="vector-menu-heading mw-ui-button mw-ui-quiet mw-ui-icon mw-ui-icon-element mw-ui-icon-wikimedia-ellipsis"> <span>Personal tools</span>
<span class=vector-menu-checkbox-expanded>expanded</span>
<span class=vector-menu-checkbox-collapsed>collapsed</span>
</h3>
<div class=vector-menu-content>
<div class=vector-user-menu-create-account><a href="https://wiki.archlinux.org/index.php?title=Special:CreateAccount&returnto=Map+scancodes+to+keycodes" icon=userAvatar class="user-links-collapsible-item vector-menu-content-item mw-ui-icon mw-ui-icon-before mw-ui-icon-wikimedia-userAvatar sf-hidden" title="You are encouraged to create an account and log in; however, it is not mandatory"></a></div>
<div class=vector-user-menu-login><a href="https://wiki.archlinux.org/index.php?title=Special:UserLogin&returnto=Map+scancodes+to+keycodes" icon=logIn class="vector-menu-content-item vector-menu-content-item-login mw-ui-icon mw-ui-icon-before mw-ui-icon-wikimedia-logIn" title="You are encouraged to log in; however, it is not mandatory [alt-shift-o]" accesskey=o><span>Log in</span></a></div>
<div class=vector-user-menu-anon-editor>
<p>
Pages for logged out editors <a href=https://wiki.archlinux.org/title/Help:Introduction aria-label="Learn more about editing"><span>learn more</span></a>
</p>
</div>
<ul class=vector-menu-content-list></ul>
</div>
</nav>
</div>
</header>
<div class=mw-workspace-container>
<div id=mw-navigation>
<h2>Navigation menu</h2>
<div id=mw-panel class=mw-sidebar>
<nav id=p-navigation class="mw-portlet mw-portlet-navigation vector-menu vector-menu-portal portal" aria-labelledby=p-navigation-label role=navigation>
<h3 id=p-navigation-label class="vector-menu-heading sf-hidden">
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li id=n-mainpage-description class=mw-list-item><a href=https://wiki.archlinux.org/title/Main_page title="Visit the main page [alt-shift-z]" accesskey=z><span>Main page</span></a><li id=n-Table-of-contents class=mw-list-item><a href=https://wiki.archlinux.org/title/Table_of_contents><span>Table of contents</span></a><li id=n-portal class=mw-list-item><a href=https://wiki.archlinux.org/title/Getting_involved title="Various ways Archers can contribute to the community"><span>Getting involved</span></a><li id=n-currentevents class=mw-list-item><a href=https://wiki.archlinux.org/title/ArchWiki:News title="The latest lowdown on the wiki"><span>Wiki news</span></a><li id=n-randompage class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:Random title="Load a random page [alt-shift-x]" accesskey=x><span>Random page</span></a></ul>
</div>
</nav>
<nav id=p-Interaction class="mw-portlet mw-portlet-Interaction vector-menu vector-menu-portal portal" aria-labelledby=p-Interaction-label role=navigation>
<h3 id=p-Interaction-label class=vector-menu-heading> <span>Interaction</span>
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li id=n-help class=mw-list-item><a href=https://wiki.archlinux.org/title/Category:Help title="Wiki navigation, reading, and editing help"><span>Help</span></a><li id=n-Contributing class=mw-list-item><a href=https://wiki.archlinux.org/title/ArchWiki:Contributing><span>Contributing</span></a><li id=n-recentchanges class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:RecentChanges title="A list of recent changes in the wiki [alt-shift-r]" accesskey=r><span>Recent changes</span></a><li id=n-Recent-talks class=mw-list-item><a href="https://wiki.archlinux.org/index.php?title=Special:RecentChanges&namespace=all-discussions" rel=nofollow><span>Recent talks</span></a><li id=n-newpages class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:NewPages><span>New pages</span></a><li id=n-Statistics class=mw-list-item><a href=https://wiki.archlinux.org/title/ArchWiki:Statistics><span>Statistics</span></a><li id=n-Requests class=mw-list-item><a href=https://wiki.archlinux.org/title/ArchWiki_talk:Requests><span>Requests</span></a></ul>
</div>
</nav>
<nav id=p-tb class="mw-portlet mw-portlet-tb vector-menu vector-menu-portal portal" aria-labelledby=p-tb-label role=navigation>
<h3 id=p-tb-label class=vector-menu-heading> <span>Tools</span>
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li id=t-whatlinkshere class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:WhatLinksHere/Map_scancodes_to_keycodes title="A list of all wiki pages that link here [alt-shift-j]" accesskey=j><span>What links here</span></a><li id=t-recentchangeslinked class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:RecentChangesLinked/Map_scancodes_to_keycodes rel=nofollow title="Recent changes in pages linked from this page [alt-shift-k]" accesskey=k><span>Related changes</span></a><li id=t-specialpages class=mw-list-item><a href=https://wiki.archlinux.org/title/Special:SpecialPages title="A list of all special pages [alt-shift-q]" accesskey=q><span>Special pages</span></a><li id=t-print class=mw-list-item><a href=https://wiki.archlinux.org/title/Map_scancodes_to_keycodes rel=alternate title="Printable version of this page [alt-shift-p]" accesskey=p><span>Printable version</span></a><li id=t-permalink class=mw-list-item><a href="https://wiki.archlinux.org/index.php?title=Map_scancodes_to_keycodes&oldid=720825" title="Permanent link to this revision of the page"><span>Permanent link</span></a><li id=t-info class=mw-list-item><a href="https://wiki.archlinux.org/index.php?title=Map_scancodes_to_keycodes&action=info" title="More information about this page"><span>Page information</span></a></ul>
</div>
</nav>
<nav id=p-lang class="mw-portlet mw-portlet-lang vector-menu vector-menu-portal portal" aria-labelledby=p-lang-label role=navigation>
<h3 id=p-lang-label class=vector-menu-heading> <span>In other languages</span>
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li class="interlanguage-link interwiki-ja mw-list-item"><a href=https://wiki.archlinux.jp/index.php/%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%82%AD%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%83%9E%E3%83%83%E3%83%97 title="スキャンコードをキーコードにマップ – 日本語" lang=ja hreflang=ja class=interlanguage-link-target><span>日本語</span></a><li class="interlanguage-link interwiki-zh-hans mw-list-item"><a href=https://wiki.archlinux.org/title/Map_scancodes_to_keycodes_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) title="Map scancodes to keycodes – 中文(简体)" lang=zh-Hans hreflang=zh-Hans class=interlanguage-link-target><span>中文(简体)</span></a></ul>
</div>
</nav>
</div>
<div id=mw-head>
<div class=mw-article-toolbar-container>
<div id=left-navigation>
<nav id=p-namespaces class="mw-portlet mw-portlet-namespaces vector-menu vector-menu-tabs" aria-labelledby=p-namespaces-label role=navigation>
<h3 id=p-namespaces-label class="vector-menu-heading sf-hidden">
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li id=ca-nstab-main class="selected mw-list-item"><a href=https://wiki.archlinux.org/title/Map_scancodes_to_keycodes title="View the content page [alt-shift-c]" accesskey=c><span>Page</span></a><li id=ca-talk class=mw-list-item><a href=https://wiki.archlinux.org/title/Talk:Map_scancodes_to_keycodes rel=discussion title="Discussion about the content page [alt-shift-t]" accesskey=t><span>Discussion</span></a></ul>
</div>
</nav>
<nav id=p-variants class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown-noicon vector-menu vector-menu-dropdown sf-hidden" aria-labelledby=p-variants-label role=navigation>
</nav>
</div>
<div id=right-navigation>
<nav id=p-views class="mw-portlet mw-portlet-views vector-menu vector-menu-tabs" aria-labelledby=p-views-label role=navigation>
<h3 id=p-views-label class="vector-menu-heading sf-hidden">
</h3>
<div class=vector-menu-content>
<ul class=vector-menu-content-list><li id=ca-view class="selected mw-list-item collapsible"><a href=https://wiki.archlinux.org/title/Map_scancodes_to_keycodes><span>Read</span></a><li id=ca-viewsource class="mw-list-item collapsible"><a href="https://wiki.archlinux.org/index.php?title=Map_scancodes_to_keycodes&action=edit" title="This page is protected.
You can view its source [alt-shift-e]" accesskey=e><span>View source</span></a><li id=ca-history class="mw-list-item collapsible"><a href="https://wiki.archlinux.org/index.php?title=Map_scancodes_to_keycodes&action=history" title="Past revisions of this page [alt-shift-h]" accesskey=h><span>View history</span></a></ul>
</div>
</nav>
<nav id=p-cactions class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown-noicon vector-menu vector-menu-dropdown sf-hidden" aria-labelledby=p-cactions-label role=navigation title="More options">
</nav>
</div>
</div>
</div>
</div>
<div class=mw-content-container>
<main id=content class=mw-body role=main>
<a id=top></a>
<div id=siteNotice></div>
<div class=mw-indicators>
</div>
<h1 id=firstHeading class=firstHeading>Map scancodes to keycodes</h1>
<div id=bodyContent class=vector-body>
<div id=siteSub class="noprint sf-hidden">From ArchWiki</div>
<div id=contentSub></div>
<div id=contentSub2></div>
<div id=mw-content-text class="mw-body-content mw-content-ltr" lang=en dir=ltr><div class=mw-parser-output><p>This page assumes that you have read <a href=https://wiki.archlinux.org/title/Keyboard_input title="Keyboard input">Keyboard input</a>, which provides wider context.
<p>Mapping <i>scancodes</i> to <i>keycodes</i> is achieved in a layer lower than Xorg and Linux console, which means that changes to this mapping will be effective in both. <a rel=nofollow class="external autonumber" href=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/input-event-codes.h#n64>[1]</a><a rel=nofollow class="external autonumber" href=https://elixir.bootlin.com/linux/latest/A/ident/hid_keyboard>[2]</a><a rel=nofollow class="external autonumber" href=https://elixir.bootlin.com/linux/latest/A/ident/atkbd_set2_keycode>[3]</a>
<p>There are two ways of mapping <i>scancodes</i> to <i>keycodes</i>:
</p>
<ul><li>Using <a href=https://wiki.archlinux.org/title/Udev title=Udev>udev</a></li>
<li>Using <span class="plainlinks archwiki-template-man" title="$ man 8 setkeycodes"><a rel=nofollow class="external text" href=https://man.archlinux.org/man/setkeycodes.8>setkeycodes(8)</a></span></ul>
<p>The preferred method is to use <i>udev</i> because it uses hardware information (which is a quite reliable source) to choose the keyboard model in a database. It means that if your keyboard model has been found in the database, your keys are recognized <i>out of the box</i>.
</p>
<div id=toc class=toc role=navigation aria-labelledby=mw-toc-heading><input type=checkbox role=button id=toctogglecheckbox class=toctogglecheckbox style=display:none><div class=toctitle lang=en dir=ltr><h2 id=mw-toc-heading>Contents</h2><span class=toctogglespan><label class=toctogglelabel for=toctogglecheckbox></label></span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href=#Identifying_scancodes><span class=tocnumber>1</span> <span class=toctext>Identifying scancodes</span></a></li>
<li class="toclevel-1 tocsection-2"><a href=#Using_udev><span class=tocnumber>2</span> <span class=toctext>Using udev</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href=#Example_for_custom_hwdb><span class=tocnumber>2.1</span> <span class=toctext>Example for custom hwdb</span></a></li>
<li class="toclevel-2 tocsection-4"><a href=#Updating_the_Hardware_Database_Index><span class=tocnumber>2.2</span> <span class=toctext>Updating the Hardware Database Index</span></a></li>
<li class="toclevel-2 tocsection-5"><a href=#Reloading_the_Hardware_Database_Index><span class=tocnumber>2.3</span> <span class=toctext>Reloading the Hardware Database Index</span></a></li>
<li class="toclevel-2 tocsection-6"><a href=#Querying_the_database><span class=tocnumber>2.4</span> <span class=toctext>Querying the database</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-7"><a href=#Using_setkeycodes><span class=tocnumber>3</span> <span class=toctext>Using setkeycodes</span></a></li>
</ul>
</div>
<h2><span class=mw-headline id=Identifying_scancodes>Identifying scancodes</span></h2>
<p>You need to know the <i>scancodes</i> of keys you wish to remap. See <a href=https://wiki.archlinux.org/title/Keyboard_input#Identifying_scancodes title="Keyboard input">Keyboard input#Identifying scancodes</a> for details.
</p>
<h2><span class=mw-headline id=Using_udev>Using udev</span></h2>
<p><a href=https://wiki.archlinux.org/title/Udev title=Udev>udev</a> provides a builtin function called <i>hwdb</i> to maintain the hardware database index in <code>/etc/udev/hwdb.bin</code>. The database is compiled from files with <i>.hwdb</i> extension located in directories <code>/usr/lib/udev/hwdb.d/</code>, <code>/run/udev/hwdb.d/</code> and <code>/etc/udev/hwdb.d/</code>. The default <i>scancodes-to-keycodes</i> mapping file is <code>/usr/lib/udev/hwdb.d/60-keyboard.hwdb</code>. See <span class="plainlinks archwiki-template-man" title="$ man 7 hwdb"><a rel=nofollow class="external text" href=https://man.archlinux.org/man/hwdb.7>hwdb(7)</a></span> for details.
<p>The <i>.hwdb</i> file can apply key mappings to one or more keyboards based on hardware ID glob patterns. You may obtain device identification info by running <span class="plainlinks archwiki-template-man" title="$ man 1 evemu-describe"><a rel=nofollow class="external text" href=https://man.archlinux.org/man/evemu-describe.1>evemu-describe(1)</a></span> as the root user. This command is provided by the <span class="plainlinks archwiki-template-pkg"><a rel=nofollow class="external text" href="https://archlinux.org/packages/?name=evemu">evemu</a></span> package.
<p>The <code>evdev:</code> prefix is used to match hardware against a block of mappings. The following hardware matches are supported:
</p>
<ul><li>Generic input devices (also USB keyboards) identified by the usb kernel modalias: <pre>evdev:input:b<i><bus_id></i>v<i><vendor_id></i>p<i><product_id></i>e<i><version_id></i>-<i><modalias></i></pre> where <code><i><vendor_id></i></code>, <code><i><product_id></i></code> and <code><i><version_id></i></code> are the 4-digit hex uppercase vendor, product and version IDs (you can find those by running the <code>lsusb</code> command) and <code><i><modalias></i></code> is an arbitrary length input-modalias describing the device capabilities. <code><i><bus_id></i></code> is the 4-digit hex bus id and should be 0003 for usb devices. The possible <code><i><bus_id></i></code> values are defined in <code>/usr/include/linux/input.h</code> (you can run <code>awk '/BUS_/ {print $2, $3}' /usr/include/linux/input.h</code> to get a list).</li>
<li>AT keyboard DMI data matches: <pre>evdev:atkbd:dmi:bvn*:bvr*:bd*:svn<i><vendor></i>:pn<i><product></i>:pvr*</pre> where <code><i><vendor></i></code> and <code><i><product></i></code> are the firmware-provided strings exported by the kernel DMI modalias.</li>
<li>Input driver device name and DMI data match: <pre>evdev:name:<i><input device name></i>:dmi:bvn*:bvr*:bd*:svn<i><vendor></i>:pn*</pre> where <code><i><input_device_name></i></code> is the name device specified by the driver and <code><i><vendor></i></code> is the firmware-provided string exported by the kernel DMI modalias.</ul>
<p>The format of each line in the block body is <code>KEYBOARD_KEY_<i><scancode></i>=<i><keycode></i></code>. The value of <code><i><scancode></i></code> is hexadecimal, but without the leading <code>0x</code> (i.e. specify <code>a0</code> instead of <code>0xa0</code>), whereas the value of <code><i><keycode></i></code> is the lower-case keycode name string as listed in <code>/usr/include/linux/input-event-codes.h</code> (see the <code>KEY_<i><KEYCODE></i></code> variables), a sorted list is available at <a rel=nofollow class="external autonumber" href=https://hal.freedesktop.org/quirk/quirk-keymap-list.txt>[4]</a>. It is not possible to specify decimal value in <code><i><keycode></i></code>.
</p>
<h3><span class=mw-headline id=Example_for_custom_hwdb>Example for custom hwdb</span></h3>
<p>The example hwdb file will match all AT keyboards:
</p>
<pre style=margin-bottom:0;border-bottom:none;padding-bottom:0.8em>/etc/udev/hwdb.d/90-custom-keyboard.hwdb</pre>
<pre style=margin-top:0;border-top-style:dashed;padding-top:0.8em>evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_10=suspend
KEYBOARD_KEY_a0=search
</pre>
<p>Here is an example of rebinding modifiers on a laptop and USB keyboard:
</p>
<pre style=margin-bottom:0;border-bottom:none;padding-bottom:0.8em>/etc/udev/hwdb.d/10-my-modifiers.hwdb</pre>
<pre style=margin-top:0;border-top-style:dashed;padding-top:0.8em>evdev:input:b0003v05AFp8277* # was tested on Kensington Slim Type USB (with old ABI)
KEYBOARD_KEY_70039=leftalt # bind capslock to leftalt
KEYBOARD_KEY_700e2=leftctrl # bind leftalt to leftctrl
evdev:atkbd:dmi:* # built-in keyboard: match all AT keyboards for now
KEYBOARD_KEY_3a=leftalt # bind capslock to leftalt
KEYBOARD_KEY_38=leftctrl # bind leftalt to leftctrl
</pre>
<p>To block the <code>Sleep</code> key, bind it to the "reserved" keyword. Alternatively, you can use "unknown" to map it to the <code>NoSymbol</code> key. For example:
</p>
<pre style=margin-bottom:0;border-bottom:none;padding-bottom:0.8em>/etc/udev/hwdb.d/90-block-sleep.hwdb</pre>
<pre style=margin-top:0;border-top-style:dashed;padding-top:0.8em>evdev:input:b0003v03F0p020C* # hp 5308 keyboard controller
KEYBOARD_KEY_10082=reserved</pre>
<h3><span class=mw-headline id=Updating_the_Hardware_Database_Index>Updating the Hardware Database Index</span></h3>
<p>After changing the configuration files, the hardware database index, <code>hwdb.bin</code>, needs to be rebuilt.
</p>
<ul><li>Update <code>hwdb.bin</code> manually by running</ul>
<pre># systemd-hwdb update
</pre>
<ul><li>Update automatically on each reboot by commenting out <code>ConditionNeedsUpdate</code> in <code>systemd-hwdb-update.service</code> using a <a href=https://wiki.archlinux.org/title/Replacement_unit_file class=mw-redirect title="Replacement unit file">replacement unit file</a></ul>
<pre style=margin-bottom:0;border-bottom:none;padding-bottom:0.8em>/etc/systemd/system/systemd-hwdb-update.service</pre>
<pre style=margin-top:0;border-top-style:dashed;padding-top:0.8em># This file is part of systemd.
.
.
#ConditionNeedsUpdate=/etc
.
.
</pre>
<p>After <code>systemd-hwdb-update.service</code> finished loading <code>systemd-trigger.service</code> will reload the changes from
<code>hwdb.bin</code>.
</p>
<ul><li>Automatically after <a href=https://wiki.archlinux.org/title/Systemd title=Systemd>Systemd</a> upgrade.</ul>
<p>On each upgrade of <a href=https://wiki.archlinux.org/title/Systemd title=Systemd>Systemd</a>, the installation script rebuilds <code>hwdb.bin</code> by running <code>udevadm hwdb --update</code> as the root user, so we do not need to care about it.
</p>
<h3><span class=mw-headline id=Reloading_the_Hardware_Database_Index>Reloading the Hardware Database Index</span></h3>
<p>The kernel loads <code>hwdb.bin</code> as part of the boot process, rebooting the system will promise the loading of the updated <code>hwdb.bin</code>.
<p>With <code>udevadm</code> it is possible to load new key mapping from the updated <code>hwdb.bin</code> by running
</p>
<pre># udevadm trigger
</pre>
<p>Be aware that with <code>udevadm</code> only added or changed key mapping are loaded so if we delete a mapping from the configuration file, rebuild <code>hwdb.bin</code> and run <code>udevadm trigger</code> as the root user, then the deleted mapping still kept by the kernel, at least until a reboot.
</p>
<h3><span class=mw-headline id=Querying_the_database>Querying the database</span></h3>
<p>You can check that your configuration was loaded either by pressing keys, or by running <code>udevadm info</code>. For the USB keyboard in the above example, this outputs the mapping we configured as follows:
</p>
<pre># udevadm info /dev/input/by-path/*-usb-*-kbd | grep KEYBOARD_KEY
E: KEYBOARD_KEY_70039=leftalt
E: KEYBOARD_KEY_700e2=leftctrl
</pre>
<h2><span class=mw-headline id=Using_setkeycodes>Using setkeycodes</span></h2>
<p><i>setkeycodes</i> is a tool to load <i>scancodes</i>-to-<i>keycodes</i> mapping table into Linux kernel. Its usage is:
</p>
<pre># setkeycodes <i>scancode</i> <i>keycode</i> ...
</pre>
<p>It is possible to specify multiple pairs at once. <i>Scancodes</i> are given in hexadecimal, <i>keycodes</i> in decimal.
</p>
<div class="archwiki-template-box archwiki-template-box-note"><strong>Note:</strong> Apparently <i>setkeycodes</i> does not work with USB keyboards (Linux 3.14.44-1-lts):
<pre># setkeycodes 45 30 # bind NumLock (0x45) to KEY_A (30) on AT keyboard
(successful)
# setkeycodes 70053 30 # bind NumLock (0x70053) to KEY_A (30) on USB keyboard
KDSETKEYCODE: Invalid argument
failed to set scancode 620d3 to keycode 31
</pre>
</div>
<p>If using this simple command, changes will be lost after reboot. The changes can be made permanent by creating a new service:
</p>
<pre style=margin-bottom:0;border-bottom:none;padding-bottom:0.8em>/etc/systemd/system/setkeycodes.service</pre>
<pre style=margin-top:0;border-top-style:dashed;padding-top:0.8em>[Unit]
Description=Change keycodes at boot
[Service]
Type=oneshot
ExecStart=/usr/bin/setkeycodes [scancode] [keycode] [scancode] [keycode] [...]
[Install]
WantedBy=multi-user.target
</pre>
<p>and <a href=https://wiki.archlinux.org/title/Enabling class=mw-redirect title=Enabling>enabling</a> <code>setkeycodes.service</code>.
</p>
</div>
<div class="printfooter sf-hidden">Retrieved from ""</div></div>
<div id=catlinks class=catlinks data-mw=interface><div id=mw-normal-catlinks class=mw-normal-catlinks><a href=https://wiki.archlinux.org/title/Special:Categories title=Special:Categories>Category</a>: <ul><li><a href=https://wiki.archlinux.org/title/Category:Keyboard_configuration title="Category:Keyboard configuration">Keyboard configuration</a></ul></div></div>
</div>
</main>
</div>
</div>
<div class="mw-workspace-container mw-footer-container">
<div class=mw-content-container>
<footer id=footer class=mw-footer role=contentinfo>
<ul id=footer-info>
<li id=footer-info-lastmod> This page was last edited on 1 March 2022, at 03:31.</li>
<li id=footer-info-copyright>Content is available under <a class=external rel=nofollow href=http://www.gnu.org/copyleft/fdl.html>GNU Free Documentation License 1.3 or later</a> unless otherwise noted.</li>
</ul>
<ul id=footer-places>
<li id=footer-places-privacy><a href=https://terms.archlinux.org/docs/privacy-policy/ class=extiw title=archlinux-service-agreements:privacy-policy>Privacy policy</a></li>
<li id=footer-places-about><a href=https://wiki.archlinux.org/title/ArchWiki:About title=ArchWiki:About>About ArchWiki</a></li>
<li id=footer-places-disclaimer><a href=https://wiki.archlinux.org/title/ArchWiki:General_disclaimer title="ArchWiki:General disclaimer">Disclaimers</a></li>
</ul>
</footer>
</div>
</div>
</div>
</div>
<grammarly-desktop-integration data-grammarly-shadow-root=true><template shadowmode=open><style class=sf-hidden>div.grammarly-desktop-integration{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}div.grammarly-desktop-integration:before{content:attr(data-content)}</style><div aria-label=grammarly-integration role=group tabindex=-1 class=grammarly-desktop-integration data-content='{"mode":"full","isActive":true,"isUserDisabled":false}'></div></template></grammarly-desktop-integration><script data-template-shadow-root>(()=>{document.currentScript.remove();processNode(document);function processNode(node){node.querySelectorAll("template[shadowmode]").forEach(element=>{let shadowRoot = element.parentElement.shadowRoot;if (!shadowRoot) {try {shadowRoot=element.parentElement.attachShadow({mode:element.getAttribute("shadowmode"),delegatesFocus:Boolean(element.getAttribute("delegatesfocus"))});shadowRoot.innerHTML=element.innerHTML;element.remove()} catch (error) {} if (shadowRoot) {processNode(shadowRoot)}}})}})()</script></body><!-- Cached/compressed 20220503041648 --><script>document.currentScript.remove();!function(){"use strict";(t=>{const n="singlefile-infobar",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8H+DhhoQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJJJREFUOI3t070NRCEMA2CnYAOyDyPwpHj/Va7hJ3FzV7zy3ET5JIwoAF6Jk4wzAJAkzxAYG9YRTgB+24wBgKmfrGAKTcEfAY4KRlRoIeBTgKOCERVaCPgU4Khge2GqKOBTgKOCERVaAEC/4PNcnyoSWHpjqkhwKxbcig0Q6AorXYF/+A6eIYD1lVbwG/jdA6/kA2THRAURVubcAAAAAElFTkSuQmCC",o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8VC4EQ6QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJtJREFUOI3NkrsBgCAMRLFwBPdxBArcfxXFkO8rbKWAAJfHJ9faf9vuYX/749T5NmShm3bEwbe2SxeuM4+2oxDL1cDoKtVUjRy+tH78Cv2CS+wIiQNC1AEhk4AQeUTMWUJMfUJMSEJMSEY8kIx4IONroaYAimNxsXp1PA7PxwfVL8QnowwoVC0lig07wDDVUjAdbAnjwtow/z/bDW7eI4M2KruJAAAAAElFTkSuQmCC",i="SingleFile",A="single-file-ui-element",r="\n\t.infobar {\n\t\tbackground-color: #737373;\n\t\tcolor: white;\n\t\tdisplay: flex;\n\t\tposition: fixed;\n\t\ttop: 16px;\n\t\tright: 16px;\n\t\theight: auto;\n\t\twidth: auto;\n\t\tmin-height: 24px;\n\t\tmin-width: 24px;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tz-index: 2147483647;\n\t\tmargin: 0 0 0 16px;\n\t\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHADIRLMaOHwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAPUExURQAAAIqKioyNjY2OjvDw8L2y1DEAAAABdFJOUwBA5thmAAAAAWJLR0QB/wIt3gAAAGNJREFUSMdjYCAJsLi4OBCQx6/CBQwIGIDPCBcXAkYQUsACU+AwlBVQHg6Eg5pgZBGOboIJZugDFwRwoJECJCUOhJI1wZwzqmBUwagCuipgIqTABG9h7YIKaKGAURAFEF/6AQAO4HqSoDP8bgAAAABJRU5ErkJggg==);\n\t\tborder-radius: 16px;\n\t\tuser-select: none;\n\t\t-moz-user-select: none;\n\t\topacity: .7;\n\t\tcursor: pointer;\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t\tborder: 2px solid #eee;\n\t\tbackground-size: 70% 70%;\n\t\ttransition: all 250ms;\n\t\tfont-size: 13px;\n\t}\n\t.infobar:hover {\n\t\topacity: 1;\n\t}\n\t.infobar-open {\n\t\topacity: 1;\n\t\tbackground-color: #f9f9f9;\n\t\tcursor: auto;\n\t\tcolor: #2d2d2d;\n\t\tpadding-top: 2px;\n\t\tpadding-bottom: 2px;\n\t\tborder: 2px solid #878787;\n\t\tbackground-image: none;\n\t\tborder-radius: 8px;\n\t\tuser-select: initial;\n\t\t-moz-user-select: initial;\n\t}\n\t.infobar-close-button {\n\t\tdisplay: none;\n\t\topacity: .7;\n\t\tpadding-top: 4px;\n\t\tpadding-left: 8px;\n\t\tpadding-right: 8px;\n\t\tcursor: pointer;\n\t\ttransition: opacity 250ms;\n\t\theight: 16px;\n\t}\n\t.infobar-close-button:hover {\n\t\topacity: 1;\n\t}\n\t.infobar-content {\n\t\tdisplay: none;\n\t\tfont-family: Arial;\n\t\tfont-size: 14px;\n\t\tline-height: 22px;\n\t\tword-break: break-word;\n\t\twhite-space: pre-wrap;\n\t\tposition: relative;\n\t\ttop: 1px;\n\t\ttext-align: left;\n\t}\n\t.infobar-link {\n\t\tdisplay: none;\n\t\tpadding-left: 8px;\n\t\tpadding-right: 8px;\n\t\tline-height: 11px;\n\t\tcursor: pointer;\n\t\tuser-select: none;\n\t\toutline: 0;\n\t}\n\t.infobar-link-icon {\n\t\tpadding-top: 4px;\n\t\tpadding-left: 2px;\n\t\tcursor: pointer;\n\t\topacity: .7;\n\t\ttransition: opacity 250ms;\n\t\theight: 16px;\n\t}\n\t.infobar-link-icon:hover {\n\t\topacity: 1;\n\t}\n\t.infobar-open .infobar-close-button, .infobar-open .infobar-content, .infobar-open .infobar-link {\n\t\tdisplay: inline-block;\n\t}";let a=!0;const c=t.browser;async function s(){const t=document.evaluate("//comment()",document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);let s=t&&t.singleNodeValue;if(s&&((p=s).nodeType==Node.COMMENT_NODE&&p.textContent.includes(i))){const t=s.textContent.split("\n"),[,,i,p,...g]=t;if(i&&p){let t;t=c&&c.runtime&&c.runtime.sendMessage?await c.runtime.sendMessage({method:"tabs.getOptions",url:i}):{displayInfobar:!0},t.displayInfobar&&await async function(t,i,c){let s=document.querySelector(n);if(!s){if(t=t.split("url: ")[1],i=i.split("saved date: ")[1],c&&c.length>1){let t=c[0].split("info: ")[1].trim();for(let n=1;n<c.length-1;n++)t+="\n"+c[n].trim();c=t.trim()}else c=i;s=d(n,document.body),s.className=A;const p=await async function(t){if(t.attachShadow)return t.attachShadow({mode:"open"});{a=!1;const n=d("iframe",t);return n.style.setProperty("background-color","transparent","important"),n.style.setProperty("position","fixed","important"),n.style.setProperty("top",0,"important"),n.style.setProperty("right",0,"important"),n.style.setProperty("width","44px","important"),n.style.setProperty("height","48px","important"),n.style.setProperty("z-index",2147483647,"important"),new Promise((t=>{n.contentDocument.body.style.setProperty("margin",0),n.onload=()=>t(n.contentDocument.body)}))}}(s),g=document.createElement("style");g.textContent=r,p.appendChild(g);const u=document.createElement("div");u.classList.add("infobar"),p.appendChild(u);const h=document.createElement("img");h.classList.add("infobar-close-button"),u.appendChild(h),h.src=o,h.onclick=t=>{0===t.button&&s.remove()};const m=document.createElement("span");u.appendChild(m),m.classList.add("infobar-content"),m.textContent=c;const b=document.createElement("a");b.classList.add("infobar-link"),u.appendChild(b),b.target="_blank",b.rel="noopener noreferrer",b.title="Open source URL: "+t,b.href=t;const f=document.createElement("img");f.classList.add("infobar-link-icon"),b.appendChild(f),f.src=e,l(u),document.addEventListener("click",(t=>{if(0===t.button){let n=t.target;for(;n&&n!=s;)n=n.parentElement;n!=s&&l(u)}}))}}(i,p,g)}}var p}function l(t){if(t.classList.remove("infobar-open"),t.onclick=e=>{if(0===e.button)return function(t){a||document.querySelector(n).childNodes[0].contentWindow.getSelection().removeAllRanges();if(t.classList.add("infobar-open"),t.onclick=null,t.onmouseout=null,!a){const e=document.querySelector(n).childNodes[0];e.style.setProperty("width","100vw","important"),e.style.setProperty("height","100vh","important"),e.style.setProperty("width",t.getBoundingClientRect().width+33+"px","important"),e.style.setProperty("height",t.getBoundingClientRect().height+21+"px","important")}}(t),!1},!a){const t=document.querySelector(n).childNodes[0];t.style.setProperty("width","44px","important"),t.style.setProperty("height","48px","important")}}function d(t,n){const e=document.createElement(t);return n.appendChild(e),Array.from(getComputedStyle(e)).forEach((t=>e.style.setProperty(t,"initial","important"))),e}t.window==t.top&&("loading"==document.readyState?document.addEventListener("DOMContentLoaded",s,!1):s())})("object"==typeof globalThis?globalThis:window)}();</script>