neo_punkt:
  noCaps = 1
  EbeneAktualisieren()
  if (Ebene = 1)
    OutputChar(".", "period")
  else if (Ebene = 2)
    SendUnicodeChar(0x2023, "") ; Dreieckiges Aufzählungszeichen
  else if (Ebene = 3)
    OutputChar("'", "apostrophe")
  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
                          or CheckDeadUni("t4",0x2083)))
    OutputChar("{Numpad3}", "KP_3")
  else if (Ebene = 5)
    SendUnicodeChar(0x03D1, "U03D1") ; theta symbol (vartheta)
  else if (Ebene = 6)
    SendUnicodeChar(0x0398, "Greek_THETA") ; Theta
return

neo_komma:
  noCaps = 1
  EbeneAktualisieren()
  if (Ebene = 1)
    OutputChar(",", "comma")
  else if (Ebene = 2)
    OutputChar("•", "enfilledcircbullet") ; Bullet
  else if (Ebene = 3)
    OutputChar(Chr(34), "quotedbl")
  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
                          or CheckDeadUni("c5",0x2082)))
    OutputChar("{Numpad2}", "KP_2")
  else if (Ebene = 5)
    SendUnicodeChar(0x03C1, "Greek_rho") ; rho
  else if (Ebene = 6)
    SendUnicodeChar(0x21D2, "implies") ; Doppelpfeil rechts
return

neo_strich:
  noCaps = 1
  EbeneAktualisieren()
  if (Ebene = 1)
    OutputChar("-", "minus") ; Bindestrich-Minus
  else if (Ebene = 2)
    SendUnicodeChar(0x2013, "endash") ; Gedankenstrich
  else if (Ebene = 3)
    SendUnicodeChar(0x2014, "emdash") ; Englischer Gedankenstrich (Geviertstrich)
  else if (Ebene = 5)
    SendUnicodeChar(0x2011, "U2011") ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch)
  else if (Ebene = 6)
    SendUnicodeChar(0x00AD, "hyphen") ; weicher Bindestrich
return

*space::
  if einHandNeo
    spacepressed := 1
  else goto neo_SpaceUp
return

*space up::
  if einHandNeo
    if keypressed {
     keypressed := 0
     spacepressed := 0
    } else goto neo_SpaceUp
  return

neo_SpaceUp:
  EbeneAktualisieren()
  if (Ebene = 1) and !CheckDeadUni("a3",0x2010)  ; Echter Bindestrich
    OutputChar("{Space}", "Space")
  else if (Ebene = 2) or (Ebene = 3)
    Send {blind}{Space}
  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2070)
                        or CheckDeadUni("a3",0x2080)))
   OutputChar("{Numpad0}", "KP_0")
  else if (Ebene = 5)
    SendUnicodeChar(0x00A0, "U00A0") ; geschütztes Leerzeichen
  else if (Ebene = 6)
    SendUnicodeChar(0x202F, "U202F") ; schmales geschütztes Leerzeichen
  DeadKey := ""
  CompKey := ""
  spacepressed := 0
  keypressed := 0
return

*Enter::
  EbeneAktualisieren()
  if !lernModus or lernModus_std_Return {
    if (Ebene = 4)
      send {blind}{NumpadEnter}
    else send {blind}{Enter}
    DeadKey := ""
    CompKey := ""
  } return

*Backspace::
  if !lernModus or lernModus_std_Backspace {
    send {Blind}{Backspace}
    DeadKey := ""
    CompKey := ""
  } return

*Del::
  if !lernModus or lernModus_std_Entf
    send {Blind}{Del}
return

*Ins::
  if !lernModus or lernModus_std_Einf
    send {Blind}{Ins}
return

neo_tab:
  EbeneAktualisieren()
  if IsMod3Pressed() { ; Compose!
    DeadKey := "comp"
    CompKey := ""
  } else {
    OutputChar("{Tab}", "Tab")
    DeadKey := ""
    CompKey := ""
  } return

*Home::
  if !lernModus or lernModus_std_Pos1 {
    send {Blind}{Home}
    DeadKey := ""
    CompKey := ""
  } return

*End::
  if !lernModus or lernModus_std_Ende {
    send {Blind}{End}
    DeadKey := ""
    CompKey := ""
  } return

*PgUp::
  if !lernModus or lernModus_std_PgUp {
    send {Blind}{PgUp}
    DeadKey := ""
    CompKey := ""
  } return

*PgDn::
  if !lernModus or lernModus_std_PgDn {
    send {Blind}{PgDn}
    DeadKey := ""
    CompKey := ""
  } return

*Up::
  if !lernModus or lernModus_std_Hoch {
    send {Blind}{Up}
    DeadKey := ""
    CompKey := ""
  } return

*Down::
  if !lernModus or lernModus_std_Runter {
    send {Blind}{Down}
    DeadKey := ""
    CompKey := ""
  } return

*Left::
  if !lernModus or lernModus_std_Links {
    send {Blind}{Left}
    DeadKey := ""
    CompKey := ""
  } return

*Right::
  if !lernModus or lernModus_std_Rechts {
    send {Blind}{Right}
    DeadKey := ""
    CompKey := ""
  } return

