DVORAK Tastaturlayout


8

Hier ist eine interessante Herausforderung ...

Ich möchte, dass Sie Golfcode spielen, als wenn er ausgeführt wird, damit Ihre Eingabe in eine Nachahmung der Ausgabe umgewandelt werden kann, als ob Sie auf einem DVORAK-Tastaturlayout tippen würden.

Ziel ist es, die US Simplified Dvorak Keyboard (US: SDK) nachzuahmen.

Geben Sie hier die Bildbeschreibung ein

Im Vergleich dazu ist hier das Standard-US-QWERTZ-Layout:

Geben Sie hier die Bildbeschreibung ein

Die Tastaturemulation muss sowohl für Groß- und Kleinbuchstaben als auch für verschobene Tasten funktionieren. Wenn ich beispielsweise auf die q(nicht verschobene ) Taste auf meiner Tastatur tippte , sollte der Dvorak-Code ein 'Zeichen auf dem Bildschirm anzeigen. Wenn ich auf die c(nicht verschobene) Schaltfläche tippen würde, würde ich eine j(auch nicht Cverschobene) Antwort erhalten, (verschoben) würde J(verschoben) und so weiter ...

Ich konzentriere mich natürlich nur auf die weißen Tasten im obigen Diagramm. Tabulatoren, Großbuchstaben und die anderen grauen Tasten sollten wie gewohnt funktionieren ...

Irgendwelche Fragen? Nicht jetzt? Gut...

Ich werde keine externen Ressourcen zulassen, bei denen das Layout bereits codiert ist. Ich werde keine Dateien einbringen, die das Layout codieren können. Der Code muss QWERTY INPUT -> (DVORAK RE-CODING) -> DVORAK OUTPUTin der Natur sein. Keine dummen Esolangs, die theoretisch sind oder nur etwas sagen wie "Dieses Programm nimmt QWERTZ-Eingaben und codiert sie in DVORAK neu. Dies ist das Programm." oder so ein Mist ... Nimm diese Herausforderung ernst ... Also, Brainfuck-Programmierer, ich begrüße dich.

Bitte beachten Sie, dass dies KEIN String-Konvertierungsprogramm ist. Für jede QWERTZ-Taste, die Sie drücken, muss das entsprechende DVORAK-Zeichen ausgegeben werden ...

Der kürzeste Code gewinnt ...


1
Ich denke, Sie müssen ein Standard-QWERTZ-Layout angeben, wenn dies eine faire Herausforderung sein soll. Ich schlage vor, diesen zu verwenden .
r3mainer

6
@ JanDvorak Wir warten auf Ihre Lösung;)
VisioN

2
Ich verstehe nicht ganz. Wenn die Manipulation von Strings verboten ist, bedeutet dies, dass stdin nicht in Frage kommt? Also muss ich eine Low-Level-Tastatur-E / A implementieren, die Tastendrücke liest? Dies disqualifiziert auch den Brainfuck, der nur Strings aus dem Standard liest. Was ist mit stdout? Kann ich Zeichenfolgen an stdout senden oder muss ich eine Art Tastaturtreiber codieren, der das Drücken einer anderen Taste simuliert?
Fejesjoco

1
@fejesjoco beziehen Sie sich auf den letzten Satz? Ich las das als "STDIN muss gelesen und STDOUT ohne Pufferung geschrieben werden"
John Dvorak

1
Abgesehen davon scheinen Ihre Fragen immer eine große Diskussion im Kommentarthread zu generieren. Vielleicht ist es ein Zeichen, dass Sie den Sandkasten mehr benutzen sollten?
Tim Seguine

Antworten:


7

Shell: Unix tr (1) , 94

tr \''"+-/:-[]_b-{}' "-_}w[vzSsW]VZ@AXJE>UIDCHTNMBRL\"POYGK<QF:/={xje.uidchtnmbrl'poygk,qf;?+"

Dieser Befehl nimmt QWERTY auf stdin und gibt DVORAK auf stdout aus.


Verdammt, du hast mich geschlagen!
TheDoctor

@TheDoctor Ich bin gerade früh genug auf diese Frage gestoßen. Ich habe eine Weile gebraucht (ungefähr 20 Minuten?), Um zB die Bereiche zu optimieren.
Mirabilos

8

C - 144 Zeichen

main(c){putch((c=getch())>33?c:"_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL\"POYGK<QF:/\\
=^{`axje.uidchtnmbrl'poygk,qf?|+~"[c-34]);main(0);}

1
Schöne Lösung ;-)
Mirabilos

4

C #, 360 Zeichen

Wahrscheinlich nicht das kürzeste, aber es macht genau das, was Sie fragen:

using System;class A{static void Main(){string[] q={"-=qwertyuiop[]sdfghjkl;'zxcvbnm,./","_+QWERTYUIOP{}SDFGHJKL:\"ZXCVBNM<>?","[]',.pyfgcrl/=oeuidhtns-;qjkxbmwvz","{}\"<>PYFGCRL?+OEUIDHTNS_:QJKXBMWVZ"};while(true){var c=Console.ReadKey(true);var a=c.KeyChar;int i,w=c.Modifiers==ConsoleModifiers.Shift?1:0;Console.Write((i=q[w].IndexOf(a))>-1?q[w+2][i]:a);}}}

Wenn Sie eine Taste auf Ihrer QWERTZ-Tastatur drücken, wird das richtige DVORAK-Zeichen in der Konsole angezeigt.


3

AutoHotKey, 200 Bytes

-::[
=::]
q::'
w::,
e::.
r::p
t::y
y::f
u::g
i::c
o::r
p::l
[::/
]::=
s::o
d::e
f::u
g::i
h::d
j::h
k::t
l::n
`;::s
'::-
z::`;
x::q
c::j
v::k
b::x
n::b
,::w
.::v
/::z

Es sollte eine Antwort in AHK auf diese Frage geben, aber nicht. Also poste einfach einen.


Sollte es keine "Rückkehr" geben?
MilkyWay90

@ MilkyWay90 OP hat nicht um Halt gebeten. Dieses Programm wird so lange ausgeführt, bis Sie es manuell beenden, indem Sie auf das Tray-Menü klicken. Also keine "Rückkehr" beteiligt.
tsh

Oh okay, danke für die Erklärung.
MilkyWay90

1

R , 157 Bytes

Einfaches Übersetzungsskript.

chartr('\'qQwWeErRtTyYuUiIoOpP[{]}sSdDfFgGhHjJkKlL;:"zZxXcCvVbBnN,<.>/?=_+-','-\'",<.>pPyYfFgGcCrRlL/?=+oOeEuUiIdDhHtTnNsS_;:qQjJkKxXbBwWvVzZ{]}[',scan(,''))

Probieren Sie es online aus!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.