ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.06.2025

Просмотров: 8301

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

© MCS Electronics, 1995-2007

The following tables lists all scan codes.

AT KEYBOARD SCANCODES

Table reprinted with permission of Adam Chapweske

http://panda.cs.ndsu.nodak.edu/~achapwes

KEY

MAKE

BREAK

KEY

MAKE

BREAK

KEY

MAKE

BREAK

A

1C

F0,1C

9

46

F0,46

[

54

FO,54

B

32

F0,32

`

0E

F0,0E

INSERT

E0,70

E0,F0,70

C

21

F0,21

-

4E

F0,4E

HOME

E0,6C

E0,F0,6C

D

23

F0,23

=

55

FO,55

PG UP

E0,7D

E0,F0,7D

E

24

F0,24

\

5D

F0,5D

DELETE

E0,71

E0,F0,71

F

2B

F0,2B

BKSP

66

F0,66

END

E0,69

E0,F0,69

G

34

F0,34

SPACE

29

F0,29

PG DN

E0,7A

E0,F0,7A

H

33

F0,33

TAB

0D

F0,0D

U ARROW

E0,75

E0,F0,75

I

43

F0,43

CAPS

58

F0,58

L ARROW

E0,6B

E0,F0,6B

J

3B

F0,3B

L SHFT

12

FO,12

D ARROW

E0,72

E0,F0,72

K

42

F0,42

L CTRL

14

FO,14

R ARROW

E0,74

E0,F0,74

L

4B

F0,4B

L GUI

E0,1F

E0,F0,1F

NUM

77

F0,77

M

3A

F0,3A

L ALT

11

F0,11

KP /

E0,4A

E0,F0,4A

N

31

F0,31

R SHFT

59

F0,59

KP *

7C

F0,7C

O

44

F0,44

R CTRL

E0,14

E0,F0,14

KP -

7B

F0,7B

P

4D

F0,4D

R GUI

E0,27

E0,F0,27

KP +

79

F0,79

Q

15

F0,15

R ALT

E0,11

E0,F0,11

KP EN

E0,5A

E0,F0,5A

R

2D

F0,2D

APPS

E0,2F

E0,F0,2F

KP .

71

F0,71

S

1B

F0,1B

ENTER

5A

F0,5A

KP 0

70

F0,70

T

2C

F0,2C

ESC

76

F0,76

KP 1

69

F0,69

U

3C

F0,3C

F1

05

F0,05

KP 2

72

F0,72

V

2A

F0,2A

F2

06

F0,06

KP 3

7A

F0,7A

W

1D

F0,1D

F3

04

F0,04

KP 4

6B

F0,6B

X

22

F0,22

F4

0C

F0,0C

KP 5

73

F0,73

Y

35

F0,35

F5

03

F0,03

KP 6

74

F0,74

Z

1A

F0,1A

F6

0B

F0,0B

KP 7

6C

F0,6C

0

45

F0,45

F7

83

F0,83

KP 8

75

F0,75

1

16

F0,16

F8

0A

F0,0A

KP 9

7D

F0,7D

2

1E

F0,1E

F9

01

F0,01

]

5B

F0,5B

3

26

F0,26

F10

09

F0,09

;

4C

F0,4C

4

25

F0,25

F11

78

F0,78

'

52

F0,52

5

2E

F0,2E

F12

07

F0,07

,

41

F0,41

6

36

F0,36

PRNT

E0,12,

E0,F0,

.

49

F0,49

SCRN

E0,7C

7C,E0,

F0,12

7

3D

F0,3D

SCROL

7E

F0,7E

/

4A

F0,4A

L

8

3E

F0,3E

PAUSE

E1,14,7

-NONE-

7,

E1,F0,14

page -637-


© MCS Electronics, 1995-2007

,

F0,77

ACPI Scan Codes

Key

Make Code

Break Code

Power

E0, 37

E0, F0, 37

Sleep

E0, 3F

E0, F0,

3F

Wake

E0, 5E

E0, F0,

5E

Windows Multimedia Scan Codes

Key

Make Code

Break Code

Next Track

E0, 4D

E0, F0, 4D

Previous Track

E0, 15

E0, F0, 15

Stop

E0, 3B

E0, F0, 3B

Play/Pause

E0, 34

E0, F0, 34

Mute

E0, 23

E0, F0, 23

Volume Up

E0, 32

E0, F0, 32

Volume Down

E0, 21

E0, F0, 21

Media Select

E0, 50

E0, F0, 50

E-Mail

E0, 48

E0, F0, 48

Calculator

E0, 2B

E0, F0, 2B

My Computer

E0, 40

E0, F0, 40

WWW Search

E0, 10

E0, F0, 10

WWW Home

E0, 3A

E0, F0, 3A

WWW Back

E0, 38

E0, F0, 38

WWW Forward

E0, 30

E0, F0, 30

WWW Stop

E0, 28

E0, F0, 28

WWW Refresh

E0, 20

E0, F0, 20

WWW Favorites

E0, 18

E0, F0, 18

To emulate volume up, the data line would look like this:

DATA 5 , &HE0, &H32, &HE0, &HF0 , &H32

^send 5 bytes

^volume up

page -638-


© MCS Electronics, 1995-2007

See also

CONFIG ATEMU

Example

'-----------------------------------------------------------------------------

------------

: ps2_kbdemul.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: PS2 AT Keyboard emulator

'micro

: 90S2313

'suited for demo

: no, ADD ON NEEDED

'commercial addon needed

: yes

'-----------------------------------------------------------------------------

------------

$regfile = "2313def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$hwstack = 32

' default use 32

for the hardware stack

' default use 10

$swstack = 10

for the SW stack

' default use 40

$framesize = 40

for the frame space

$lib "mcsbyteint.lbx"

' use optional lib

since we use only bytes

'configure PS2 AT pins

' you need to turn

Enable Interrupts

on interrupts yourself since an INT is used

Config Atemu = Int1 , Data = Pind.3 , Clock = Pinb.0

'

^------------------------

used interrupt

'

^-----------

pin connected to DATA

'

^--

pin connected to clock

'Note that the DATA must be connected to the used interrupt pin

Waitms 500

' optional delay

'rcall _AT_KBD_INIT

Print "Press t for test, and set focus to the editor window"

Dim Key2 As Byte , Key As Byte

Do

' get key from

Key2 = Waitkey()

terminal

Select Case Key2

Case "t" :

Waitms 1500

' send a scan code

Sendscankbd Mark

Case Else

End Select

Loop

Print Hex(key)

Mark:

' send mark

Data 12 , &H3A , &HF0 , &H3A , &H1C , &HF0 , &H1C , &H2D , &HF0 , &H2D , &H42

, &HF0 , &H42

'^ send 12 bytes

page -639-


© MCS Electronics, 1995-2007

'

m

a

r

k

SERIN

Action

Reads serial data from a dynamic software UART.

Syntax

SERIN var , bts , port , pin, baud , parity , dbits , sbits

Remarks

While the OPEN and CLOSE statements can be used for software UARTS, they do not permit to use the same pin for input and output. The settings used when opened the communication channel can also not be changed at run time.

The SERIN and SEROUT statements are dynamic software UART routines to performinput and output. You can use them on the same pin for example send some data with SEROUT and get back an answer using SERIN.

Since the SERIN and SEROUT routines can use any pin and can use different parameter values, the code size of these routines is larger.

Parameter Description

Var

A variable that will be assigned with the received data.

Bts

The number of bytes to receive. String variables will wait for a return (ASCII

13). There is no check if the variable you assign is big enough to hold the

result.

Port

The name of the port to use. This must be a letter like A for portA.

Pin

The pin number you want to use of the port. This must be in the range from

0-7.

Baud

The baud rate you want to use. For example 19200.

Parity

A number that codes the parity. 0= NONE, 1 = EVEN, 2 = ODD

Dbits

The number of data bits. Use 7 or 8.

Sbits

The number of stop bits. 1 to 2.

The use of SERIN will create an internal variable named ___SER_BAUD. This is a LONG variable. It is important that you specify the correct crystal value with $CRYSTAL so the correct calculation can be made for the specified baud rate.

Note that ___SER_BAUD will not hold the passed baud rate but will hold the bit delay used internal.

Since the SW UART is dynamic you can change all the params at run time. For example you can store the baud rate in a variable and pass this variable to the SERIN routine.

Your code could change the baud rate under user controlthis way.

It is important to realize that software timing is used for the bit timing. Any interrupt that occurs during SERIN or SEROUT will delay the transmission. Disable interrupts while you use SERIN or SEROUT.

page -640-