Hi everybody, 
I would like to know what things are happening in the background when I change 
keyboard layout in FreeDOS. 

Normally, each time I press a key int 09 is called as a consequence of irq 1 
and int 09 calls int 15h/4Fh, which has no effect when no layout is installed. 
So, if it is called sets carry flag on return when nothing changed. I read the 
source of keyb.com (I noticed, I had become quite rusty with Pascal) and found 
out it hooks to int 15h in order to take possession of 4Fh function. It 
additionally hooks to int 2Fh as well as int 16h. From my understanding, 
hooking to 2Fh is just for 0AD80h function (keyb.com installation check), 
please correct me if I am wrong. I did not understand why int 16h is changed. 

After installing new layout and calling int 15h/4Fh manually, causes correct 
scan code / ascii code pair is enqueued into the keyboard buffer and carry flag 
isn't set because something is changed this time. In short, this function is 
responsible for changing keyboard layout, obviously. But how? I mean, how do 
keyb.com know where exactly code page is in memory. And how does this whole 
mechanism work? (In case it is long to explain, please point me a document for 
that if possible). 

Any help would be appreciated. 

Kind regards,
Bora Akaydin
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to