Deutsches Simutransforum

Normale Version: Backspace & Pfeiltasten unter Mac OS X
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Simutrans-Version: Simutrans 102.2.2

PAK-Set (+zusätzliche PAK-Dateien): Unrelevant...

Betriebssystem: Mac OS X 10.6.5
Tastaturbelegung: Deutsch (MacBook Pro '10)

Fehler (möglichst genaue Beschreibung): Die Backspace Taste löscht immer das Zeichen nach dem Cursor, nicht wie erwartet (und in allen anderen Anwendungen unter Windows, sowie Mac OS X) das Zeichen vor dem Cursor. Ebenso werden die Pfeiltasten als unbekanntes Zeichen erkannt und versucht darzustellen, anstatt sie zum Navigieren zu verwenden. (Siehe Anhang...)

Verhalten (Absturz, Einfrieren, ...): Sehr, sehr mühseliges bearbeiten von Namen, welches einem die Spiellust unter Mac OS X nimmt.
Unter Mac OS funktionieren die Nightly Builds etwas besser, als die aktuelle stable. Probiers mal damit!
Stimmt, in der aktuellen Nightly, ist das Problem mit den Pfeiltasten behoben. Die Backspace Taste löscht jedoch immer noch das Zeichen nach dem Cursor!
Das klingt mehr nach einem SDL-Problem ...
Auf neueren Mac's exestiert keine "Del" oder "Entf." Taste mehr, wie wir sie von Windows kennen. Dafür ist die unter Windows als "Backspace"-Taste bekannte Taste mit DELETE beschriftet.

Ähnlich scheint SDL diese auch als DELETE Taste anzuerkennen. Mit ein wenig Präprozessor Befehlen in der "gui_textinput.cc" lässt sich das Problem jedoch beheben.

Auf den ersten Blick scheint damit alles zu funktionieren:
Code:
                case SIM_KEY_DELETE:
                    // delete
                    // Knightly : check and remove any selected text first
                    // Cruzer : any delete key on Mac OS X, backspace key works like DELETE on Mac OS X.
#ifndef __APPLE__
                    if(  !remove_selection()  &&  head_cursor_pos<=len  ) {
                        size_t next_pos = get_next_char(text, head_cursor_pos);
                        for(  size_t pos=head_cursor_pos;  pos<len;  pos++  ) {
                            text[pos] = text[pos+(next_pos-head_cursor_pos)];
                        }
                    }
                    break;
#endif
                case SIM_KEY_BACKSPACE:
                    // backspace
                    // Knightly : check and remove any selected text first
                    if(  !remove_selection()  &&  head_cursor_pos>0  ) {
                        if (  head_cursor_pos<len  ) {
                            size_t prev_pos = head_cursor_pos;
                            tail_cursor_pos = head_cursor_pos = get_prev_char(text, head_cursor_pos);
                            for (  size_t pos=head_cursor_pos;  pos<=len-(prev_pos-head_cursor_pos);  pos++  ) {
                                text[pos] = text[pos+(prev_pos-head_cursor_pos)];
                            }
                        }
                        else {
                            tail_cursor_pos = head_cursor_pos = get_prev_char(text, head_cursor_pos);
                            text[head_cursor_pos] = 0;
                        }
                    }
                    break;
Angeblich kann dieses Verhalten mittels Fn-Taste invertiert werden. Dann sollte also Fn-Delete Backspaces produzieren, d.h. SDL is invertiert. Oder es ist nur ein Problem von deinem Keyboard. Langes Googles brachte nämlich wenig zu Tage, das von einem generellen SDL-Problem ausgehen lässt.
Hm... :/
Fn-Taste + Backspace-Taste bewirkt das selbe wie die Delete Taste unter Windows. Das Drücken von Fn+Backspace bewirkt jedoch in Simutrans auch keine Änderung.

Ob es an meiner Tastatur liegt, kann ich jedoch nicht sagen, da dies (MacBook Pro 2010, Deutsches Layout) mein einziger Mac ist.
Kein anderer Mac User anwesend, der das selbe Problem hat?
Bei mir das gleiche Verhalten unter Mac OS. Egal, ob ich Backspace oder Entf benutze, wird das Zeichen hinter dem Cursor gelöscht. Hab mir den aktuellen Nightly Build zum Testen geholt.
Längeres Googlen führt zu tage, das in der Tat für Uinicode die SDL unter MAC falsch Werte zurückliefert, zumindest in der 1.2.x Version.
Bei mir ist es genau das gleiche.