Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Tastaturersatz für MC80.3x » Themenansicht

Autor Thread - Seiten: -1-
000
30.03.2024, 12:06 Uhr
DL
Default Group and Edit


Vorschlag für den Betrieb einer PS/2-Tastatur als Ersatz am MC80.3x

von https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=21627 , da es im Flohmarkt etwas ungünstig war...

Noch ein Hinweis zu den 12V am Port, die scheinen nirgendwo abgesichert zu sein, also etwas Vorsicht walten lassen !


Der Quellcode für Arduino, etwas überarbeitet:


Quellcode:

//-----------------------------------------------------------------------------------------------------------------
//Emulation Tastatur MC80.3x mit PS/2 Tastatur + Arduino Nano und Paul Carpenter's PS2KeyMap+PS2KeyAdvanced library
//-----------------------------------------------------------------------------------------------------------------
#include <PS2KeyAdvanced.h>
#include <PS2KeyMap.h>
//#include <Arduino.h> //nur für VSC
#define DATAPIN 4 //PS/2 DATA
#define IRQPIN  3 //PS/2 CLK
#define TONEPIN 5 //Beeper(buzzer)
//Variablen
uint16_t c,d,rdat;
uint8_t x,y,idx;
//von KeyMap library nicht erzeugte bzw. umdefininierte Key Codes ,{Taste,Code}
uint16_t Map[][2] = {
{PS2_KEY_F1,0x01},{PS2_KEY_F2,0x02},{PS2_KEY_F3,0x04},{PS2_KEY_F4,0x08},{PS2_KEY_F5,0x10},{PS2_KEY_F6,0x20},//F1-6
{PS2_KEY_F7,0x40},{PS2_KEY_F8,0x80},//F7-8
{PS2_KEY_HOME,0x13},{PS2_KEY_L_GUI,0x13},{PS2_KEY_END,0x11},{PS2_KEY_R_GUI,0x11},//OFF/ENTER auf Home/Ende+links/rechts Win
{PS2_KEY_L_ARROW,0x08},{PS2_KEY_R_ARROW,0x0c},{PS2_KEY_UP_ARROW,0x0b},{PS2_KEY_DN_ARROW,0x0a},//Cursor
{PS2_KEY_DIV,0x2d},{PS2_SHIFT+PS2_KEY_DIV,0x5f}//"-","_"
};
//classes
PS2KeyAdvanced keyboard;
PS2KeyMap keymap;

void setup( )
{
keyboard.begin( DATAPIN, IRQPIN );
keyboard.typematic( 11, 1);
keyboard.setNoRepeat(1);
keyboard.setNoBreak(1);
keymap.selectMap( (char *)"DE" );
Serial.begin( 9600), SERIAL_7O1 );
tone(TONEPIN, 1000, 100); //beep
}

void loop( )
{
if(Serial.available() >0)
   {
    y=Serial.read();
    if(y==0x07)tone(TONEPIN, 1000, 100); //beep kurz
    if(y==0x10)tone(TONEPIN, 1000); //beep dauer
   }
if( keyboard.available() ) //Taste gedrückt?
  {
  c = keyboard.read( );//einlesen
  if( c > 0 ) // 0 wäre Fehler
    {
    if(c >=PS2_KEY_KP0 && c <=PS2_KEY_KP_DIV)x=0x1d; //Status für Keypad
    else if ((c & 0xff) >=PS2_KEY_F1 && (c & 0xff)<=PS2_KEY_F8)x=0x1e;  //Status für Funktionstasten
    else if (c & PS2_CTRL)x=0x1f; //Status für CTRL
    else x=0x1c; //Status default
    d=keymap.remapKey(c); //remapping auf "DE"Layout
    //die im remap fehlenden Tasten (s.0. codes) einfügen, bzw. redefinieren        
    rdat = c & ( PS2_ALT + PS2_SHIFT + 0xFF ); //Filtern
    for( idx = 0; idx < sizeof(Map)/sizeof(Map[0]); idx ++ )
    if(rdat == Map[idx][0])          //Taste nachschlagen
     {
     rdat = Map[idx][1]; d &= ~0xFF; d |= rdat;  //Code bereinigen & zuweisen                  
     break;
     }
    if((d>0)&&((d & 0xff)<=0x80))
     {
      Serial.write( x); //Statusbyte ausgeben
      Serial.write( d & 0xff); //Tastencode ausgeben
     }    
    }
  }
}



Danke an AE für die Vorarbeit : https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=7918

Dieser Beitrag wurde am 20.04.2024 um 09:31 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
30.03.2024, 18:25 Uhr
ambrosius



Detlef, vielen Dank für die Zusammenfassung. Vielleicht könnte das zusammengefaßt unter 'Neubauprojekte' abgelegt werden?
--
viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
31.03.2024, 10:06 Uhr
DL
Default Group and Edit



Zitat:
ambrosius schrieb
... Vielleicht könnte das zusammengefaßt unter 'Neubauprojekte' abgelegt werden?


Dafür ist es noch viel zu früh Holger, das war ja erst mal nur eine Idee.
Z.B. bin ich immer noch unschlüssig über die Umsetzung der OFF und ENTER Tasten (siehe oben verlinkten Beitrag 005/024)
Wobei ich persönlich da keine Not habe, weil meine originale Tastatur läuft tadellos ...



Dieser Beitrag wurde am 31.03.2024 um 10:52 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
09.04.2024, 18:19 Uhr
DL
Default Group and Edit


Eben noch mal den Code ergänzt, irgendwie wird in der PS2KeyMap library das Minuszeichen und der Unterstrich nicht auf DE-Layout umgesetzt...
Dieser Beitrag wurde am 09.04.2024 um 18:24 Uhr von DL editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek