Giter Site home page Giter Site logo

Dynamische Anzahl Von Ebenen about reneo HOT 9 OPEN

rojetto avatar rojetto commented on August 23, 2024
Dynamische Anzahl Von Ebenen

from reneo.

Comments (9)

Rojetto avatar Rojetto commented on August 23, 2024 2

Umgesetzt in v1.5.0. Als neue Modifier stehen Mod5-Mod9 zur Verfügung, mit denen Ebenen in beliebigen Kombinationen konfiguriert werden können. Das sollte erstmal eine Weile reichen 😃

Auch Tastenkombinationen kann man jetzt im Mapping festlegen. Bei Fragen dazu gerne melden (z. B. im Neo-Chat oder hier), die Konfiguration gerade der Ebenen ist möglicherweise nicht ganz selbstverständlich.

from reneo.

Rojetto avatar Rojetto commented on August 23, 2024

Von den hart festgelegten Modifier-Kombinationen für die sechs Ebenen loszukommen hatte ich sowieso langfristig auf dem Plan (falls es mal tatsächlich jemand braucht 😉). Ebene 2 bleibt zwar weiterhin ein Sonderfall wegen der Interaktion mit dem nativen Layout, alles höhere sollte aber gehen.

Für mein Verständnis deines konkreten Anwendungsfalls: mit einem einzigen weiteren Modifier wäre doch auf einer Ebene 7 genug Platz für F13-24, natürlich kombinierbar mit Shift/Ctrl/Alt. Wozu würdest du dann Ebenen 8 und 9 verwenden? Oder habe ich den Vorschlag falsch verstanden?

Nur falls du es so meintest: auf eine „Neo-Taste“ eine Kombination wie Strg+Shift+F15 zu mappen funktioniert auch mit den aktuellen 6 Ebenen nicht. Bisher wird ein Tastendruck immer in genau ein Zeichen oder einen VK übersetzt.

from reneo.

hediet avatar hediet commented on August 23, 2024

Von den hart festgelegten Modifier-Kombinationen für die sechs Ebenen loszukommen hatte ich sowieso langfristig auf dem Pla

Top 😉

Nur falls du es so meintest: auf eine „Neo-Taste“ eine Kombination wie Strg+Shift+F15 zu mappen funktioniert auch mit den aktuellen 6 Ebenen nicht. Bisher wird ein Tastendruck immer in genau ein Zeichen oder einen VK übersetzt.

Genau so meinte ich es. Die meisten Shortcuts in VS Code sind schon belegt, F13-F24 allerdings nicht. Nur mit Shift/Alt/Ctrl hat man so 12 * 2^3 = 96 weitere garantiert freie Shortcuts.

Wenn man 3 weitere Ebenen mit je über 30 Tasten belegen will, braucht man die Modifier.
Natürlich braucht man die Modifier dann nicht mehr zusätzlich drücken, wenn man bereits in der entsprechenden Ebene ist.
ü als Modifier + esdf (in Qwerzt) sind aber viel bequemer zu drücken als beispielsweise Ctrl+Shift+ü+e.

Technisch sollte dieses Teilfeature kein Hindernis sein: Wenn auf ein Zeichen+Modifier gemappt wird, muss vor dem Senden des Zeichens halt noch Modifier Down und danach Modifier Up gesendet werden.

from reneo.

hediet avatar hediet commented on August 23, 2024

Danke, funktioniert gut!

Allerdings würde ich jetzt gerne noch konfigurieren, dass bestimmte Tasten nur Modifier in bestimmten Ebenen sind :D
Ich will im Neo2 Layout üöä als Modifier verwenden, aber brauch die Tasten für Ebene 3 und 4...

Ich hab vor vielen Jahren mal sowas ähnliches wie ReNeo in C# geschrieben. Da hab ich das so gelöst, dass die Modifier-Tasten nicht explizit definiert werden müssen, sondern pro Ebene als Funktion einer Taste definiert werden können.

from reneo.

qwertfisch avatar qwertfisch commented on August 23, 2024

Das riecht doch wieder nach einem größeren Umbau. Wann wird die config.json Turing-vollständig? 😄

@hediet Das Vorgehen klingt recht praktisch. Magst du vielleicht den (zugehörigen) Quellcode hochladen? Und ggf. die Konfigurationsdatei, falls es nicht alles hartkodiert war. So als Inspiration, wie man das bei Reneo vielleicht verbessern kann.

from reneo.

hediet avatar hediet commented on August 23, 2024

Der Quellcode ist open source, aber ich kann ihn nicht empfehlen.

Ich würd es heute so implementieren:

  • Es gibt physische Tasten, die durch ihre physikalische Position auf der Tastatur eindeutig beschrieben werden. Es gibt dann ein Event, das auslöst, wenn sich der Druck-Zustand einer physischen Taste ändert.
  • Es gibt "Funktionen". Eine Funktion hat einen Effekt beim Drücken und einen Effekt beim Loslassen. Funktionen können sein:
    • Keycode Down/Up senden
    • Unicode Zeichen senden
    • Modifier für Ebenen hinzufügen/entfernen

Ein Tastatur-Layout ist nun ein Mapping von Set + PhysischeTaste nach Funktion.

Am Anfang sind die Modifier leer.
Wenn eine Taste gedrückt wird, wird die Funktion (mit den aktuellen Modifiern) nachgeschlagen und der Drück-Effekt ausgeführt (was ggf. einen Modifier hinzufügt).
Wenn diese Taste losgelassen wird, wird dann der Loslass-Effekt ausgeführt.

Wenn währenddessen eine andere Taste gedrückt wird, wird wieder mit den aktuellen Modifiern die Funktion nachgeschlagen und ausgeführt.

Ein Tastatur-Layout lässt sich zum Beispiel so beschrieben:

{
    "layers": [
        {
            "name": "level1",
            "modifierSets": [[]],
            "mapping": {
                // Shift. Setzt den Modifier und sendet den Shift-Keycode an Programme
                "1B": [{ "fn": "modifier", "modifier": "shift_left" }, { "fn": "keycode", "code": 100 }],
                // "f"
                "2D": { "fn": "unicode", "text": "φ" }
                ...
            }
        },
        {
            "name": "level2",
            "modifierSets": [["shift_left"], ["shift_right"]],
            "mapping": {
                // Shift. Sendet den Shift-Keycode an Programme
                "1B": { "fn": "keycode", "code": 100 },
                // "f"
                "2D": { "fn": "unicode", "text": "Φ" }
                ...
            }
        },
    ]
}

So eine Datei könnte auch von einem anderen Programm/Website generiert werden.

from reneo.

Rojetto avatar Rojetto commented on August 23, 2024

Hallo @hediet, habe gerade deine Frage im Neo-Chat gelesen (bin mal naiv davon ausgegangen, dass es in der kleinen Community nicht so viele Menschen mit dem Namen gibt).

hatte gehofft, damit so Kombinationen wie Strg+C u.ä. auf F10 usw. legen zu können.

Das ist doch genau das Feature, was du angefragt hattest. Das geht, indem du diesen Shortcut im Mapping für F10 einträgst. In dem Fall also

"44": [{"keysym": "VoidSymbol", "vk": "VK_KEY_C", "mods": {"Ctrl": true}}, ...]

from reneo.

hediet avatar hediet commented on August 23, 2024

Im neo community chat war ich zuletzt vor ein paar Jahren! ;)

from reneo.

Rojetto avatar Rojetto commented on August 23, 2024

Oha, Zufälle gibt's! Das Thema war ja auch sehr ähnlich. Naja, mit extrem viel Glück stolpert dein Namensvetter vielleicht hier noch über die Lösung 🤷

from reneo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.