Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
896cdc7b
Commit
896cdc7b
authored
Jul 19, 2006
by
Dmitry Torokhov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Input: keyboard - simplify emulate_raw() implementation
Signed-off-by:
Dmitry Torokhov
<
dtor@mail.ru
>
parent
2b192908
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
17 deletions
+34
-17
drivers/char/keyboard.c
drivers/char/keyboard.c
+34
-17
No files found.
drivers/char/keyboard.c
View file @
896cdc7b
...
...
@@ -1025,7 +1025,7 @@ static const unsigned short x86_keycodes[256] =
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
,
118
,
86
,
87
,
88
,
115
,
120
,
119
,
121
,
112
,
123
,
92
,
284
,
285
,
309
,
298
,
312
,
91
,
327
,
328
,
329
,
331
,
333
,
335
,
336
,
337
,
338
,
339
,
284
,
285
,
309
,
0
,
312
,
91
,
327
,
328
,
329
,
331
,
333
,
335
,
336
,
337
,
338
,
339
,
367
,
288
,
302
,
304
,
350
,
89
,
334
,
326
,
267
,
126
,
268
,
269
,
125
,
347
,
348
,
349
,
360
,
261
,
262
,
263
,
268
,
376
,
100
,
101
,
321
,
316
,
373
,
286
,
289
,
102
,
351
,
355
,
103
,
104
,
105
,
275
,
287
,
279
,
306
,
106
,
274
,
107
,
294
,
364
,
358
,
363
,
362
,
361
,
...
...
@@ -1047,38 +1047,55 @@ extern void sun_do_break(void);
static
int
emulate_raw
(
struct
vc_data
*
vc
,
unsigned
int
keycode
,
unsigned
char
up_flag
)
{
if
(
keycode
>
255
||
!
x86_keycodes
[
keycode
])
return
-
1
;
int
code
;
switch
(
keycode
)
{
case
KEY_PAUSE
:
put_queue
(
vc
,
0xe1
);
put_queue
(
vc
,
0x1d
|
up_flag
);
put_queue
(
vc
,
0x45
|
up_flag
);
return
0
;
break
;
case
KEY_HANGEUL
:
if
(
!
up_flag
)
put_queue
(
vc
,
0xf2
);
return
0
;
break
;
case
KEY_HANJA
:
if
(
!
up_flag
)
put_queue
(
vc
,
0xf1
);
return
0
;
}
break
;
if
(
keycode
==
KEY_SYSRQ
&&
sysrq_alt
)
{
case
KEY_SYSRQ
:
/*
* Real AT keyboards (that's what we're trying
* to emulate here emit 0xe0 0x2a 0xe0 0x37 when
* pressing PrtSc/SysRq alone, but simply 0x54
* when pressing Alt+PrtSc/SysRq.
*/
if
(
sysrq_alt
)
{
put_queue
(
vc
,
0x54
|
up_flag
);
return
0
;
}
else
{
put_queue
(
vc
,
0xe0
);
put_queue
(
vc
,
0x2a
|
up_flag
);
put_queue
(
vc
,
0xe0
);
put_queue
(
vc
,
0x37
|
up_flag
);
}
break
;
if
(
x86_keycodes
[
keycode
]
&
0x100
)
put_queue
(
vc
,
0xe0
);
default:
if
(
keycode
>
255
)
return
-
1
;
put_queue
(
vc
,
(
x86_keycodes
[
keycode
]
&
0x7f
)
|
up_flag
);
code
=
x86_keycodes
[
keycode
];
if
(
!
code
)
return
-
1
;
if
(
keycode
==
KEY_SYSRQ
)
{
if
(
code
&
0x100
)
put_queue
(
vc
,
0xe0
);
put_queue
(
vc
,
0x37
|
up_flag
);
put_queue
(
vc
,
(
code
&
0x7f
)
|
up_flag
);
break
;
}
return
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment