what happen if your change NOT by ~ ?
what happen if your change NOT by ~ ?
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Thanks mister_e & skimask for replying ...
I will try the ~ this morning see what happens.
Thank you !
Hi Mister_e & Skimask,
I thought i figured it out:
When googeling if found that the scancode for an "a" = 0x1C = 00011100, the key-scancode has to
be send LSB first resulting in 00111000.
Then i thought that the problem was the shiftout. I was sure that it had to be LSB first, clock idles high, because the clock is high to low. But a little experiment with setting this to 1 (Shift data out highest bit first. Clock idles low).Code:sendthis = %00111000 'LSB first "a" gosub calsub sendthis = %00001111 'LSB first 0xF0 'for release key gosub calsub sendthis = %00111000 'LSB first "a" gosub calsub goto start calsub: parity = ~(sendthis.0 ^^ sendthis.1 ^^ sendthis.2 ^^ sendthis.3 ^^ sendthis.4 ^^ sendthis.5 ^^ sendthis.6 ^^ sendthis.7) sendthis = sendthis << 1 'move over to insert start bit sendthis.0 = 0 'start bit sendthis.9 = parity sendthis.10 = 1 'stop bit shiftout kbddata,kbdclk,1,[sendthis\11] return
Resulted in a perfect "a" on the laptop sceen !!
But however, that was about the only character that i could generate, so i think this is not right also.
Melanie has posted a scancode table, stating that the scancode for an "a" has to be 0x1E
I can send characters, but they don't match any of the scancodes i input ? What is happening here ?
Anyone ?
Best Regards, UB
Last edited by ultiblade; - 11th May 2007 at 11:40.
Update:
Ok messed up some of the scancode's. I can now send normal characters
by sending the reversed scancode with shiftout
For example : if i send 0x15 = 00010101, LSB first = 10101000 = "q" on screen, that's perfect. I tried other codes and they work also.
There was an error with the parity calculator also, so i skipped that ....
But now, i want to use Left-shift + q, which, when looking at the scancode
table this would be 0x12 for left shift, 0x15 for "q", 0xF0 for release, 0x15 for release "q" and 0xF0 and 0x12 for release left shift.
Doing this results in an F10 being received ??
Here's the code :
Best regards, UBCode:sendthis = %01001000 'left shift test = 1 'parity bit gosub calsub sendthis = %10101000 'q test = 0 gosub calsub sendthis = %00001111 'Release test = 1 gosub calsub sendthis = %10101000 'q test = 0 gosub calsub sendthis = %00001111 'Release test = 1 gosub calsub sendthis = %01001000 'left shift test = 1 gosub calsub goto start calsub: sendthis = sendthis << 1 'move over to insert start bit sendthis.0 = 0 'start bit sendthis.9 = test 'parity sendthis.10 = 1 'stop bit shiftout kbddata,kbdclk,1,[sendthis\11] return
not sure but i think you have to send some other code(s) + sendthis as well.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Mister_e,
I found some source code in basic stamp, the author claims it works.
Apart from the fact that everything is inverted (he inverts the inputs in his
schematic using transistors) i can't find anything other tahn my code ?
Best regards, UBCode:' -----[ Program Description ]---------------------------------------- ' ' This simple program shows how to connect a BASIC Stamp II to the AT ' keyboard port on a PC and to send characters when one of three buttons ' is pressed. Please read KEYBTST.TXT for more information about it's ' limitations and for a simple schematic. ' -----[ Constants ]-------------------------------------------------- ' datpin con 0 'Keyboard Data clkpin con 1 'Keyboard Clock btn00 con 2 'Button 0 btn01 con 3 'Button 1 btn02 con 4 'Button 2 ' -----[ Variables ]-------------------------------------------------- ' temp var B2 'Temp variabel char var W2 'Variabel containing the character breakcode var W3 'Variabel containing "Breakcode" extcode var W4 'Variabel containing "Extended charcode" ' -----[ Initialization ]--------------------------------------------- ' 'Set pin 0 and 1 as outputs, rest as inputs Dirl= %00000011 'Set datpin and clkpin default to high (1) low datpin low clkpin 'Define breakcode ' s--DATA--PS (s=start, DATA=LSB First, P=parity, S=stop) breakcode=%11111000000 '/F0H 'Define extcode ' s--DATA--PS (s=start, DATA=LSB First, P=parity, S=stop) extcode=%11111100010 '/E0H ' -----[ Main Code ]-------------------------------------------------- ' start: temp=0 pause 1000 button btn00,0,255,100,temp,1,button00 button btn01,0,255,100,temp,1,button01 button btn02,0,255,100,temp,1,button02 goto start ' -----[ Test Characters ]-------------------------------------------- ' ' s--DATA--PS (s=startbit, DATA=LSB First, P=paritybit, S=stopbit) 'char=%10110101110 '/SPACE 'char=%11100011110 '/a 'char=%11010010100 '/CR 'char=%11011001110 '/b 'char=%11100101110 '/t 'char=%10100101100 '/r 'char=%10011101110 '/d 'char=%10101111100 '/F1 'char=%11111000110 '/INS button00: 'Assign char a character with startbit, parity and stopbit. OBS inverted ! ' s--DATA--PS (s=startbit, DATA=LSB First, P=paritybit, S=stopbit) char=%11100011110 '/a gosub sendchar goto start button01: 'Assign char a character with startbit, parity and stopbit. OBS inverted ! ' s--DATA--PS (s=startbit, DATA=LSB First, P=paritybit, S=stopbit) char=%11010010100 '/CR gosub sendchar goto start button02: 'Assigne char a character with startbit, parity and stopbit. OBS inverted ! ' s--DATA--PS (s=startbit, DATA=LSB First, P=paritybit, S=stopbit) char=%11111000110 '/INS gosub sendextchar goto start ' -----[ Subroutines ]------------------------------------------------ ' sendchar 'Send character shiftout datpin,clkpin,1,[char\11] 'Send breakcode + character shiftout datpin,clkpin,1,[breakcode\11] shiftout datpin,clkpin,1,[char\11] return sendextchar 'Send extcode + character shiftout datpin,clkpin,1,[extcode\11] shiftout datpin,clkpin,1,[char\11] 'Send extcode + breakcode + character shiftout datpin,clkpin,1,[extcode\11] shiftout datpin,clkpin,1,[breakcode\11] shiftout datpin,clkpin,1,[char\11] return ' -----[ End ]--------------------------------------------------------
Bookmarks