Page 1 of 1

The keyboard typing rate

Posted: Mon Jul 19, 2004 1:41 am
by ManOfSteel
Hello,
How do you change the keyboard typing rate (what ports and what data must be sent to them)?
Thanks for any help.

Re:The keyboard typing rate

Posted: Mon Jul 19, 2004 2:01 am
by Brendan
Hi,
ManOfSteel wrote: How do you change the keyboard typing rate (what ports and what data must be sent to them)?
You'd send the command 0xF3 to the keyboard controller chip, followed by a byte containing the repeat rate and delay:

Code: Select all

   mov al,0xf3
   call sendData
   jc .exit
   mov al,[keydevArate]            ;al = default repeat rate and delay
   call sendData

Code: Select all

%define STATUSPORT   0x64
%define COMMANDPORT   0x64
%define DATAPORT   0x60

;Send data to controller or device A
;_______________________________________________________________________________

sendData:
   pushes ebx,ecx
   push eax
   mov ebx,[SIBtickHigh]
   mov ecx,[SIBtickOver]
   add ebx,1
   adc ecx,0
   OSCALL 0x39           ;Sleep for 1 mS

   mov ebx,[SIBtickHigh]
   mov ecx,[SIBtickOver]
   add ebx,100         ;100 mS timout
   adc ecx,0
.sd1   in al,STATUSPORT
   test al,controllerInputFull
   je .sd2
   cmp [SIBtickOver],ecx
   jb .sd1
   cmp [SIBtickHigh],ebx
   jbe .sd1
   pop eax
   pops ebx,ecx
   stc
   ret

.sd2   pop eax
   out DATAPORT,al
   pops ebx,ecx
   clc
   ret
The repeat rate and delay values are avaliable at:
http://panda.cs.ndsu.nodak.edu/%7Eachap ... board.html

The keyboard should send an "ACK" (0xFA) in response.


Cheers,

Brendan

Re: The keyboard typing rate

Posted: Wed Jul 22, 2020 7:21 am
by LukeyTheKid
For fellow searchers finding this page far in the future from 2004, the wiki now has these type rate and delay values as well. Command code 0xF3 still applies :)

https://wiki.osdev.org/PS/2_Keyboard#Commands