[Neo] Re: Ebene 5 einrasten, um Altgriechisch zu schreiben

2022-07-22 Diskussionsfäden Labre

// based on a keyboard map from an 'xkb/symbols/de' file
//
// $XKeyboardConfig$
// $XFree86: xc/programs/xkbcomp/symbols/de,v 1.6 2003/09/08 13:12:51 pascal 
Exp $

default
xkb_symbols "basic" {

include "latin(type4)"

name[Group1]="Germany";

key   { [ 2,   quotedbl,  twosuperior,oneeighth ] };
key   { [ 3,section, threesuperior,sterling ] };
key   { [ 4, dollar,   onequarter, currency ] };

key  {type[Group1]="FOUR_LEVEL_PLUS_LOCK",  symbols[Group1]=
  [ssharp, question, backslash, questiondown, 0x1001E9E ]};
// The unicode capital letter sharp s U+1E9E is transformed to "SS"
// to match the rules for capitalizing sharp s in german.
// If the capital sharp s is needed, delete the line
// starting with  from /usr/share/X11/locale/iso8859-15/Compose.
// If both doubled S and capital sharp s are needed, use  0x1001E9E
// for capital sharp s and some free unicode codepoint like 0x1001E9C
// for doubled S. Don`t forget to change this in the Compose file, too.

key   { [dead_acute, dead_grave, dead_cedilla,  dead_ogonek ] };

key   { [ e,  E, EuroSign, EuroSign ] };
key   { [ z,  Z,leftarrow,  yen ] };
key   { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
key   { [  plus,   asterisk,   dead_tilde,  dead_macron ] };

key   { [ s,  S,U017F, U1E9E] 
};
key   { [ j,  J,dead_belowdot, dead_abovedot  
 ] };
key   { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
key   { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
key   { [dead_circumflex, degree, U2032,U2033 ] };

key   { [numbersign, apostrophe,   dead_grave,   dead_breve ] };
key   { [ y,  Y,   guillemotright,U203A   
] };
key   { [ x,  X,guillemotleft,U2039   
] };
key   { [ v,  V,   doublelowquotemark, 
singlelowquotemark ]   };
key   { [ b,  B,  leftdoublequotemark, 
leftsinglequotemark ] };
key   { [ n,  N, rightdoublequotemark, 
rightsinglequotemark ] };
key   { [ comma,  semicolon,   periodcentered, multiply   
] };
key   { [period,  colon,U2026, division   
] };
key   { [ minus, underscore,   endash, emdash 
] };

include "kpdl(comma)"

include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "nodeadkeys" {

// modify the basic German layout to not have any dead keys

include "de(basic)"
name[Group1]="Germany - Eliminate dead keys";

key   { [asciicircum,degree,  notsign,  notsign ] };
key   { [ acute,  grave,  cedilla,  cedilla ] };
key   { [udiaeresis, Udiaeresis,diaeresis,diaeresis ] };
key   { [  plus,   asterisk,   asciitilde,   macron ] };
key   { [odiaeresis, Odiaeresis,  doubleacute,  doubleacute ] };
key   { [adiaeresis, Adiaeresis,  asciicircum,  asciicircum ] };
key   { [numbersign, apostrophe,grave,grave ] };
key   { [ minus, underscore, dead_belowdot,abovedot ] };
};

partial alphanumeric_keys
xkb_symbols "deadgraveacute" {
// modify the basic German layout to have only acute and grave
// as dead keys (tilde and circumflex are needed as spacing characters
// in many programming languages)

include "de(basic)"
name[Group1]="Germany - Dead grave acute";

key   { [asciicircum,degree,  notsign,  notsign ] };
key   { [  plus,   asterisk,   asciitilde,  dead_macron ] };
key   { [numbersign, apostrophe,grave,grave ] };
};

partial alphanumeric_keys
xkb_symbols "deadacute" {
// modify the basic German layout to have only acute as
// dead keys (ASCII grave, tilde and circumflex are needed as
// spacing characters in many programming languages and text formatters)

include "de(deadgraveacute)"

name[Group1]="Germany - Dead acute";

key   { [dead_acute,  grave, dead_cedilla,  dead_ogonek ] };
key   { [numbersign, apostrophe,   dead_grave,   dead_grave ] };
};

partial alphanumeric_keys
xkb_symbols "ro" {
// add romanian-specific letters to the basic German layout.
// Romanian symbols are accessible with combination of  and
// 'a', 's', 't', 'i', 'ä (ä)' (+ for capital letters).
// To view romanian-specific symbols, add "export LC_CTYPE=ro_RO"
// or "export LC_CTYPE=de_DE.utf8" to your .profile.

include "de(basic)"

name[Group1]="Germany - Romanian keyboard with German letters";

key  { [ t,T,   tcedilla, Tcedilla] };
key  { [ i,I,icircumflex,  Icircumflex] };
key  { [ a,A,acircumflex,  Acircumflex] };
key  { [

[Neo] Re: Ebene 5 einrasten, um Altgriechisch zu schreiben

2022-07-21 Diskussionsfäden Xand

Hi qwertfisch und hrnz,

vielen Dank für eure Antworten. Ich hatte gar nicht mitbekommen, dass 
ReNeo die Nutzung des AHK-Scripts überflüssig gemacht hat. Ich habe nach 
euren Mails jetzt von kbdneo+AHK zu kbdneo+ReNeo gewechselt. :-)


Eure Vorschläge, Ebene 5 über Mod3+Shift+Shift oder Mod3+Mod3 
einzurasten, finde ich gut. Ein kurzzeitiges Zurückwechseln zu Ebene 1 
sollte für ein flüssiges Schreiben ebenfalls verfügbar sein, weil sich 
auf Ebene 1 auf T2 und T3 Gravis und Akut befinden. Optimal wäre auch 
ein kurzzeitiges Zurückwechseln zu Ebene 2, weil sich dort Iota 
Subscriptum und Zirkumflex befinden (wobei für flüssiges Schreiben hier 
nur der Zirkumflex wichtig wäre, Iota Subscriptum ist wesentlich 
seltener).


Ich vermute, dass diese Aufteilung für einen Griechisch-Modus am besten 
wäre:

Mod3+Mod3¹: Ebene 5 einrasten
Shift gedrückt halten: temporär Ebene 6
Mod4 gedrückt halten: temporär Ebene 1
Mod3+Shift gedrückt halten: temporär Ebene 2

¹Mod3+Shift+Shift wäre für mich auch vollkommen okay, Mod3+Mod3 ist aber 
m. E. bequemer


Man könnte noch argumentieren, Ebene 1 auf Shift zu legen und Ebene 6 
auf Mod4, da man wesentlich häufiger die Akzentzeichen benötigt als 
Großbuchstaben. Wäre nur vielleicht etwas kontraintuitiv, da man gewöhnt 
ist, über Shift Großbuchstaben zu erreichen.


Das einzige Problem, das mir dann noch einfiele, ist, dass man im 
Griechischen manchmal Endvokale elidiert (auslässt). Diese Auslassung 
wird durch einen Apostroph markiert, welcher sich auf Ebene 3 befindet. 
Aber das wäre zu vernachlässigen, das taucht definitiv seltener auf als 
Akut, Gravis und Zirkumflex und wahrscheinlich auch als Großbuchstaben.


Hat wer von euch Zeit und Lust, das in ReNeo zu implementieren? Ich 
selbst könnte bei diesem Schritt nicht helfen (habe lediglich 
rudimentäre Python-Kenntnisse), würde den Griechisch-Modus aber 
natürlich gerne testen und auch Feedback geben.


Ab Montag bin ich allerdings für zweieinhalb Wochen ohne PC unterwegs, 
könnte also erst ca. ab dem 12.8. ausgiebig testen. Nur schon mal als 
Vorabinfo. :-)


Zu qwertfischs Alternative mit einem nativen Griechisch-Layout auf 
Neo-Basis. Mir persönlich gefiele es besser ohne Wechsel des 
Windows-Tastaturlayouts. Außerdem nutze ich Ebene 4 sehr intensiv. Aber 
wenn dir/euch lieber ist, erstmal diese Variante zu probieren, würde ich 
mich daran, so gut ich kann, auch beteiligen. :-)


Liebe Grüße und vielen Dank
Xand

Am 18.07.2022 20:26 schrieb qwertfisch:

Hallo Xand,

wie du richtig erkannt hast, gibt es keinen Mod5-Lock, nicht
offiziell, und soweit mir bekannt ist, auch nicht inoffiziell. Neo ist
nicht dafür ausgelegt, flüssig griechisch zu tippen. Dafür gibt es
griechische Tastaturlayouts. Diese basieren natürlich auf Qwertz, was
für dich vermutlich keine geeignete Lösung ist, wenn du seit Jahren
mit dem Neolayout vertraut bist. Wäre hier nur der einfachste (und
bereits verfügbare) Weg.
Wenn man allerdings griechisch mit einer Neo-Anordnung schreibt, ist
das – gemessen an der Buchstabenhäufigkeit für griechische Wörter –
womöglich genauso zufällig gut oder schlecht wie ein Qwertz-basiertes
Griechisch-Layout. Der einzige Vorteil ist eben, dass du dich nicht
umgewöhnen musst und viele griechische Buchstaben ja leicht in ihr
lateinisch Pendant „umgedacht“ werden können.

Griechisch (als Kleinbuchstaben) ist in Neo enthalten, weil es einen
starken naturwissenschaftlichen Einfluss gab und diese Zeichen (als
Einzelzeichen) vielfach in Mathematik, Physik und anderen Domänen
vorkommen. Bereits bei den griechischen Großbuchstaben wurden ja
diejenigen rausgenommen, deren Glyphe identisch ist zur lateinischen
Variante, wie M, N, A, X usw., um den Platz für andere mathematische
Symbole zu nutzen.

Nichtsdestotrotz ist es technisch möglich, deinen Wunsch umzusetzen.
Da du bereits kbdneo nutzt, könnte ich das Ergänzungstool ReNeo
(welches die AHK-Variante abgelöst hat) um einen Griechisch-Modus
erweitern. Je nach Ausgestaltung fällt das zwischen „schnell gemacht“
und „einiges an Aufwand“. ;)

Die einfache Variante ist tatsächlich, einen Mod5- bzw. eher einen
Griechisch-Lock hinzuzufügen. Damit kannst du dann die griechischen
Kleinbuchstaben problemlos tippen. Für die sechste Ebene der
Großbuchstaben gibt es mehrere Optionen bei aktiviertem Mod5-Lock:
– Shift gedrückt halten für Ebene 6
– Shift gedrückt halten für vollständige Großbuchstaben (also auch, wo
Ebene 6 kein griechisch hat)
– selbe Optionen mit Mod4 statt Shift
– ein gedrücktes Mod3 sollte nichts zusätzlich bewirken
– Mod3+Shift gedrückt halten für kurzzeitiges Zurückwechseln in Ebene 1

Wie genau das am Besten zu handhaben ist, kann ich erst sehen, wenn
ich mir den Code wieder anschaue … Die Aktivierung von Griechisch
würde ich mit Mod3+Shift+Shift handhaben, d.h. die zweite gedrückte
Shifttaste schaltet den Lock um (wie beim Capslock).

Ein weiterer Vorschlag, der eventuell besser umzusetzen ist: wie wäre
es mit einem nativen Griechisch-Layout auf Neo-Basis? Dieses k

[Neo] Re: Ebene 5 einrasten, um Altgriechisch zu schreiben

2022-07-18 Diskussionsfäden qwertfisch

Hallo Xand,

wie du richtig erkannt hast, gibt es keinen Mod5-Lock, nicht offiziell, und 
soweit mir bekannt ist, auch nicht inoffiziell. Neo ist nicht dafür 
ausgelegt, flüssig griechisch zu tippen. Dafür gibt es griechische 
Tastaturlayouts. Diese basieren natürlich auf Qwertz, was für dich 
vermutlich keine geeignete Lösung ist, wenn du seit Jahren mit dem Neolayout 
vertraut bist. Wäre hier nur der einfachste (und bereits verfügbare) Weg.
Wenn man allerdings griechisch mit einer Neo-Anordnung schreibt, ist das – 
gemessen an der Buchstabenhäufigkeit für griechische Wörter – womöglich 
genauso zufällig gut oder schlecht wie ein Qwertz-basiertes 
Griechisch-Layout. Der einzige Vorteil ist eben, dass du dich nicht 
umgewöhnen musst und viele griechische Buchstaben ja leicht in ihr 
lateinisch Pendant „umgedacht“ werden können.


Griechisch (als Kleinbuchstaben) ist in Neo enthalten, weil es einen starken 
naturwissenschaftlichen Einfluss gab und diese Zeichen (als Einzelzeichen) 
vielfach in Mathematik, Physik und anderen Domänen vorkommen. Bereits bei 
den griechischen Großbuchstaben wurden ja diejenigen rausgenommen, deren 
Glyphe identisch ist zur lateinischen Variante, wie M, N, A, X usw., um den 
Platz für andere mathematische Symbole zu nutzen.


Nichtsdestotrotz ist es technisch möglich, deinen Wunsch umzusetzen. Da du 
bereits kbdneo nutzt, könnte ich das Ergänzungstool ReNeo (welches die 
AHK-Variante abgelöst hat) um einen Griechisch-Modus erweitern. Je nach 
Ausgestaltung fällt das zwischen „schnell gemacht“ und „einiges an Aufwand“. 
;)


Die einfache Variante ist tatsächlich, einen Mod5- bzw. eher einen 
Griechisch-Lock hinzuzufügen. Damit kannst du dann die griechischen 
Kleinbuchstaben problemlos tippen. Für die sechste Ebene der Großbuchstaben 
gibt es mehrere Optionen bei aktiviertem Mod5-Lock:

– Shift gedrückt halten für Ebene 6
– Shift gedrückt halten für vollständige Großbuchstaben (also auch, wo Ebene 
6 kein griechisch hat)

– selbe Optionen mit Mod4 statt Shift
– ein gedrücktes Mod3 sollte nichts zusätzlich bewirken
– Mod3+Shift gedrückt halten für kurzzeitiges Zurückwechseln in Ebene 1

Wie genau das am Besten zu handhaben ist, kann ich erst sehen, wenn ich mir 
den Code wieder anschaue … Die Aktivierung von Griechisch würde ich mit 
Mod3+Shift+Shift handhaben, d.h. die zweite gedrückte Shifttaste schaltet 
den Lock um (wie beim Capslock).


Ein weiterer Vorschlag, der eventuell besser umzusetzen ist: wie wäre es mit 
einem nativen Griechisch-Layout auf Neo-Basis? Dieses könntest du parallel 
zu kbdneo installieren und mit dem Windows-eigenen Mechanismus zum Wechseln 
des Layouts umschalten. Dabei würde ich Ebenen 1 und 2 mit den griechischen 
Klein- und Großbuchstaben belegen (mit freibleibenden Plätzen bzw. 
zusätzlichen Glyphvarianten). Ebene 3 wäre wie gehabt, Ebenen 5 und 6 fielen 
weg. Nur Ebene 4 wäre dabei vielleicht etwas schwieriger, das müsste ich mit 
Reneo dann noch testen.



qwertfisch
___
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]


[Neo] Re: Ebene 5 einrasten, um Altgriechisch zu schreiben

2022-07-18 Diskussionsfäden hrnz


Hallo Xand,

Xand  writes:
> Ich möchte gerne mit Neo versuchen, flüssig Altgriechisch zu schreiben.
> Gibt es dafür die Möglichkeit, die Ebene 5 einzurasten, damit ich nicht
> für jeden einzelnen Buchstaben Shift+Caps drücken muss? Auf der Website
> habe ich keine Hinweise gefunden, dass dies offiziell unterstützt wird.
> Ich nutze den nativen kbdneo-Treiber mit der AHK-Erweiterung unter
> Windows 10.
>

Das ist richtig, so ein Verhalten ist in der Referenz nicht vorgesehen
und soweit ich weiß gibt es auch keinen Treiber, der sowas macht. Es
sollte aber kein Hexenwerk sein, einen weiteren Lock in einen Treiber
einzufügen (beispielsweise durch beide Mod3-Tasten gleichzeitig
(de-)aktivierbar).

Für ReNeo könnte eine sehr naive Implementierung z.B. so oder so ähnlich
aussehen (mangels Wintendo64 nicht getestet):

--8<---cut here---start->8---
diff --git a/source/reneo.d b/source/reneo.d
index 22fa92e..2949a16 100644
--- a/source/reneo.d
+++ b/source/reneo.d
@@ -506,6 +506,7 @@ PartialModifierState currentForcedModifiers;

 bool capslock;
 bool mod4Lock;
+bool grLock;

 uint previousPatchedLayer = 1;
 uint activeLayer = 1;
@@ -555,6 +556,7 @@ void resetHookStates() nothrow {

 capslock = false;
 mod4Lock = false;
+grLock = false;

 setCapslockState(false);
 setKanaState(false);
@@ -595,6 +597,11 @@ bool handleKeyEvent(Scancode scan, bool down) nothrow {
 mod == Modifier.RMOD4 && !isModifierHeld(Modifier.RMOD4) && 
isModifierHeld(Modifier.LMOD4)) {
 mod4Lock = !mod4Lock;
 }
+
+if (mod == Modifier.LMOD3 && !isModifierHeld(Modifier.LMOD3) && 
isModifierHeld(Modifier.RMOD3) ||
+mod == Modifier.RMOD3 && !isModifierHeld(Modifier.RMOD3) && 
isModifierHeld(Modifier.LMOD3)) {
+grLock = !grLock;
+}
 }

 if (!(mod in naturalHeldModifiers)) {
@@ -657,6 +664,7 @@ bool handleKeyEvent(Scancode scan, bool down) nothrow {

 bool shiftDown = isModifierHeld(Modifier.LSHIFT) || 
isModifierHeld(Modifier.RSHIFT);
 bool mod4Down = isModifierHeld(Modifier.LMOD4) || 
isModifierHeld(Modifier.RMOD4);
+bool mod3Down = isModifierHeld(Modifier.LMOD3) || 
isModifierHeld(Modifier.RMOD3);

 // handle capslock
 if (capslock && isCapslockable(scan)) {
@@ -667,6 +675,15 @@ bool handleKeyEvent(Scancode scan, bool down) nothrow {
 }
 }

+// handle gr lock
+if (grLock && isCapslockable(scan)) {
+if (shiftDown && layer == 2) {
+layer = 6;
+} else if (!shiftDown && layer == 1) {
+layer = 5;
+}
+}
+
 // handle mod4 lock
 if (mod4Lock) {
 // switch back to layer 1 while holding mod 4
--8<---cut here---end--->8---

Für NeoVars bestimmt grundsätzlich ähnlich, wenn man AutoHotKey lesen kann.

Liebe Grüße
hrnz
___
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]