[Neo] Re: Ebene 5 einrasten, um Altgriechisch zu schreiben
// 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
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
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
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]
