DVORAKキーボードレイアウト


8

ここに興味深い課題があります...

DVORAKキーボードレイアウトで入力しているかのように、実行時に入力を模倣出力に変換できるようにするよりも、ゴルフコードを求めています。

目的は、US Simplified Dvorakキーボード(US:SDK)を模倣することです

ここに画像の説明を入力してください

比較すると、こちらが標準のUS QWERTYレイアウトです。

ここに画像の説明を入力してください

キーボードエミュレーションは、大文字と小文字の両方とシフトされたキーの両方で機能する必要があります。たとえば、qキーボードの(シフトされていない)キーをタップすると、Dvorakコードが'画面上の文字をポップするはずです。c(シフトされていない)ボタンをタップするとjC(シフトされていない)の応答が返されるはずです。シフトされた)がJシフトされます...

もちろん、上の図の白いキーだけに集中しています。タブ、キャップ、その他の灰色のキーは通常どおり機能するはずです...

質問は?とりあえず?良い...

既にレイアウトがエンコードされている外部リソースは許可しません。レイアウトをエンコードできるファイルを持ち込みません。コードはQWERTY INPUT -> (DVORAK RE-CODING) -> DVORAK OUTPUT自然のものでなければなりません。理論的な、または「このプログラムはQWERTY入力を受け取り、DVORAKで再コード化します。これはプログラムです。」のような愚かなEsolangはありません。またはそのようながらくた...この挑戦を真剣に受け止めます...それでBrainfuckコーダー、私はあなたを歓迎します

これは文字列変換プログラムではないことに注意してください。QWERTYキーを押すたびに、対応するDVORAK文字が出力される必要があります...

最短のコードが勝ちます...


1
これを公平な課題にしたい場合は、標準のQWERTYレイアウトを指定する必要があると思います。私が使用することをお勧めこれを
r3mainer 2014

6
@JanDvorak私たちはあなたの解決策を待っています;)
VisioN

2
よくわかりません。文字列操作が禁止されている場合、それはstdinが問題外であることを意味しますか?それで、キープレスを読み取る低レベルのキーボードIOを実装する必要がありますか?これはまた、標準入力から文字列を読み取るだけのブレインファックを失格にします。stdoutについてはどうですか、文字列をstdoutに送信できますか、または別のキーを押すことをシミュレートする種類のキーボードドライバーをコーディングする必要がありますか?
fejesjoco 14

1
@fejesjocoは最後の文を参照していますか?私はとして「STDINからの読み取りとしなければならないSTDOUTはバッファリングせずに書かれた」という読み
ジョン・ドヴォルザーク

1
余談ですが、あなたの質問は常にコメントスレッドで大規模な議論を生み出すようです。多分それはあなたがサンドボックスをもっと使うべきであるというサインですか?
Tim Seguine 14

回答:


7

シェル:Unix tr(1)、94

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

このコマンドは、標準入力でQWERTYを取り、標準出力でDVORAKを出力します。


くそー、あなたは私をそれに打ち負かした!
TheDoctor 2014

@TheDoctor私はこの質問でちょうど早い段階で発生しました☻たとえば、範囲を最適化するのにしばらく(約20分?)かかりました。
mirabilos 2014

8

C-144文字

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

1
素晴らしい解決策;-)
mirabilos

4

C#、360文字

おそらく最短ではないかもしれませんが、それはあなたが尋ねたこととまったく同じです:

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);}}}

QWERTYキーボードのキーを押すと、正しいDVORAK文字がコンソールに表示されます。


3

AutoHotKey、200バイト

-::[
=::]
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

この質問に対する回答はAHKにあるはずですが、ありません。投稿してください。


「返品」があってはいけませんか?
MilkyWay90

@ MilkyWay90 OPは停止を要求しませんでした。このプログラムは、トレイメニューをクリックして手動で終了するまで実行され続けます。したがって、「リターン」は含まれません。
tsh

説明ありがとうございます。
MilkyWay90 2018

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.