Forum: Mikrocontroller und Digitale Elektronik Dekodierung Serielles Keyboard - compaq ipaq "stow away" keyboard


von Horst Borscht (Gast)


Lesenswert?

Hallo,

ich versuche nun seit ein Paar Tagen aus einem Flohmarktfund
schlau zu werden. es Handelt sich dabei um ein Compaq(RIP)
keyboard das fuer Ipaqs gedacht war.

Der Aufbau und die Anbindung ist sehr simpel.

VCC 5v
GND
TX (~4800 Baud, 8N1)

Jeder Tastendruck(0-1,a-z), kein Umschalten, Strg etc. liefert
2 Bytes. Das loslassen der Taste dann nochmal 2 bytes.

Einzig aus der Codierung werde ich nicht schlau.
ipaq
Ein Paar Beispiele:

  HEX     BIN             DEC

  HEX     BIN             DEC

1:
  0x3a  00111010  58
  0x0b  00001011  11
  0x1a  00011010  26
  0x0b  00001011  11

2:
  0x38  00111000  56
  0x0f  00001111  15
  0x18  00011000  24
  0x0f  00001111  15

3:
  0x36  00110110  54
  0x13  00010011  19
  0x16  00010110  22
  0x13  00010011  19

4:
  0x6d  01101101  109
  0x09  00001001  9
  0x2d  00101101  45
  0x09  00001001  9

5:
  0x34  00110100  52
  0x17  00010111  23
  0x14  00010100  20
  0x17  00010111  23
a:
  0x1c  00011100  28
  0x0e  00001110  14
  0x0c  00001100  12
  0x0e  00001110  14

b:
  0x33  00110011  51
  0x19  00011001  25
  0x13  00010011  19
  0x19  00011001  25

c:
  0x6f  01101111  111
  0x08  00001000  8
  0x2f  00101111  47
  0x08  00001000  8

o:
  0x17  00010111  23
  0x22  00100010  34
  0x07  00000111  7
  0x22  00100010  34

p:
  0x59  01011001  89
  0x13  00010011  19
  0x19  00011001  25
  0x13  00010011  19

q:
  0x75  01110101  117
  0x05  00000101  5
  0x35  00110101  53
  0x05  00000101  5


Jemmand eine Idee was da dahintersteckt?

Bin schon gespannt auf Eure Ideen.

Mir faellt dazu im Moment nichts mehr ein.


alles Borscht

von Horst Borscht (Gast)


Lesenswert?

Nachdem ich mir heute ein kleines Skript geschrieben habe um mal
ein paar Bitoperationen automatisiert durchzufuehren und mit den
gesendeten Werten der Tastatur zu vergleichen fiel mir ein Muster auf.

Das 3. Byte ist immer $BYTE1 ^16,^32 oder ^64 (exklusives ODER)
 58  11  26  11  ::     58 ^ 32 = 26
 56  15  24  15  ::     56 ^ 32 = 24
 54  19  22  19  ::     54 ^ 32 = 22
109   9  45   9  ::    109 ^ 64 = 45
 52  23  20  23  ::     52 ^ 32 = 20
 28  14  12  14  ::     28 ^ 16 = 12
 51  25  19  25  ::     51 ^ 32 = 19
111   8  47   8  ::    111 ^ 64 = 47
 23  34   7  34  ::     23 ^ 16 = 7
 23  98   7  98  ::     23 ^ 16 = 7


Weshalb ^16,^32 oder ^64 angewandt wird ist mir noch nicht klar.

Werde versuchen heute eine Tabelle aller Codes anzulegen und
hier hochzuladen. Vielleicht geht dann ja jemandem ein Licht auf.


trost Borscht

von Horst Borscht (Gast)


Lesenswert?

>> Weshalb ^16,^32 oder ^64 angewandt wird ist mir noch nicht klar.

Vieleicht doch?
Mir fiel eben auf das ^16 bei Byte1 Wert < 32, ^32 bei <64 und ^64 bei 
kleiner 128 passen koennte.

Nur eine Theorie. mehr weiss ich wenn die Codetabelle komplett ist.

prost Borscht

von Malte S. (maltest)


Lesenswert?

Ist das das Ding hier?

Vielleicht hilft es, mal hier zu gucken:

https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=blob;f=drivers/input/keyboard/stowaway.c;h=cc612c5d542782fdf898757bdfdd1434b7d19d86;hb=HEAD

Disclaimer: ich besitze kein solches Keyboard, weiß nichtmal, wie es 
aussieht, habe nur bei der Kernel-Konfiguration immer wieder den 
"Stowaway"-Treiber gesehen und der Thread erinnerte mich.

von Horst Borscht (Gast)


Lesenswert?

Noe, leider nicht.

Das hier war da noch am naehesten drann:

 *   HP foldable keyboard
 *
 * 4800 baud, 8N1
 *
 * Key down sends two bytes:  KEY          ~KEY (complement of KEY)
 * Key up sends two bytes:    (KEY | 0x80) ~KEY

da klappt bei meinem keyboard aber nicht.

von Horst Borscht (Gast)


Lesenswert?

Hier hab ich mal beinahe alle Tasten durchprobiert
und den ascii codes zugeordnet. Via Shift oder
Alt zu erreichnde Sonderzeichen haben keine eigenen
Codes.

" waere zum beispiel:
[Shift an] ( 3B 09 ) [Taste 2] (38 0F 18 0F) [shift aus] (1B 09)

Das selbe gilt natuerlich auch fuer Grossbuchstaben.

a = 1C 0E 0C 0E
A = 3B 09 1C 0E 0C 0E 1B 09

Soweit so gut.


BD: Button Down
BU: Button Up

ASCII  CHAR BD1 BD2 BU1 BU2

32    :  14  2E  04  2E
45  -  :  2D  25  0D  25
46  .  :  5B  12  1B  12
48  0  :  5D  11  1D  11
49  1  :  3A  0B  1A  0B
50  2  :  38  0F  18  0F
51  3  :  16  13  36  13
52  4  :  6D  09  2D  09
53  5  :  14  17  34  17
54  6  :  1B  12  1B  32
55  7  :  61  0F  21  0F
56  8  :  30  1F  10  1F
57  9  :  2E  23  0E  23
60  <  :  11  3A  01  3A
94  ^  :  1C  07  3C  07
97  a  :  1C  0E  0C  0E
98  b  :  33  19  13  19
99  c  :  6F  08  2F  08
100  d  :  6E  04  2E  04
101  e  :  0B  12  1B  12
102  f  :  2A  05  6A  05
103  g  :  19  1A  09  1A
104  h  :  66  06  26  06
105  i  :  1E  08  5E  08
106  j  :  62  07  22  07
107  k  :  2F  21  0F  21
108  l  :  5A  09  1A  09
109  m  :  11  1D  31  1D
110  n  :  67  0C  27  0C
111  o  :  04  17  62  07
112  p  :  59  13  19  13
113  q  :  75  05  35  05
114  r  :  69  0B  29  0B
115  s  :  72  03  32  03
116  t  :  1A  16  0A  16
117  u  :  18  1E  08  1E
118  v  :  35  15  15  15
119  w  :  31  07  71  07
120  x  :  17  11  37  11
121  y  :  39  0D  19  0D
122  z  :  65  0D  25  0D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.