webForumDet fria alternativet
Logga in / Bli medlem

Qwerty <-> Dvorak synkronisator

JavaScript

4 svar · 7 788 visningar · startad av nitro2k01

Medlem sedan aug. 20039 340 inlägg
Frågan#1

Litet skript som visar vilket tecken som hade skrivits ut for en viss tangent om tangentbordslayouten ar installd pa qwerty men skulle ha varit installd pa Dvorak. (Och vice versa)
Anvandbart for traning eller for att fixa en textsnutt om layouten rakar sla om. (Det var for detta syfte jag skrev den.)

<script>
new (function(){
	var dtable=
		"\"<>PYFGCRL?+',.pyfgcrl/="+
		"AOEUIDHTNS_|aoeuidhtns-\\"+
		"|:QJKXBMWVZ\\;qjkxbmwvz";

	var qtable=
		"QWERTYUIOPÅ^qwertyuiopå¨"+
		"ASDFGHJKLÖÄ*asdfghjklöä'"+
		">ZXCVBNM;:_<zxcvbnm,.-";

	String.prototype.d2q=function(){
		var temp = this.split(""),z;
	

		for(i=0; i<temp.length; i++){
			if((z=dtable.indexOf(temp[i]))!=-1)
				temp[i]=qtable.charAt(z);
		}
	
		return temp.join("");
	}

	String.prototype.q2d=function(){
		var temp = this.split(""),z;

		for(i=0; i<temp.length; i++){
			if((z=qtable.indexOf(temp[i]))!=-1)
				temp[i]=dtable.charAt(z);
		}

		return temp.join("");
	}
})();

</script>
Qwerty:<br />
<textarea onkeyup="document.getElementById('d2').value=this.value.q2d(); " id=d1>Js, mfij pfuuaud </textarea><br />
Dvorak<br />
<textarea onkeyup="document.getElementById('d1').value=this.value.d2q(); " id=d2></textarea><br />

Kanda buggar och begransningar:

  • Tacker enbart de tre mittersta raderna av tangentbordet.
  • Fungerar enbart om svensk layout anvands for qwerty.
  • Vissa tecken finns på flera ställen i vissa layouter, och kodas därför fel. (24/3-2006)
Medlem sedan dec. 20042 245 inlägg
#2

Har du en liknande för svorak?

Medlem sedan aug. 20039 340 inlägg
#3
<script type="text/javascript">

window.onload=function(){

new (function(){
	/*
	Keyboard layout synchronizer, Version 1.1
	© 2006 nitro2k01
	Licensed under a common creatives 2.5 license.
	See [url]http://creativecommons.org/licenses/by/2.5/deed.en_GB[/url] for details
	Contact: nitro2k01+klsync@gmail.com	
	*/

	var lcontainer=arguments[0], textareas=[];

	var tables={
		"Swedish dvorak":
		"!\"#¤%&/()=?`1234567890+´"+
		"ÅÄÖPYFGCRL;^åäöpyfgcrl,¨"+
		"ÄOEUIDHTNS_*aoeuidhtns-'"+
		">:QJKXBMWVZ<.qjkxbmwvz",

		"US English dvorak":
		"!@#$%^&*(){}1234567890[]"+
		"\"<>PYFGCRL?+',.pyfgcrl/="+
		"AOEUIDHTNS_|aoeuidhtns-\\"+
		"|:QJKXBMWVZ\\;qjkxbmwvz",

		"US English qwerty":
		"!@#$%^&*()_+1234567890-="+
		"QWERTYUIOP{}qwertyuiop[]"+
		"ASDFGHJKL:\"|asdfghjkl;'\\"+
		"|ZXCVBNM<>?\\zxcvbnm,./",

		"Swedish qwerty":
		"!\"#¤%&/()=?`1234567890+´"+
		"QWERTYUIOPÅ^qwertyuiopå¨"+
		"ASDFGHJKLÖÄ*asdfghjklöä'"+
		">ZXCVBNM;:_<zxcvbnm,.-"
	}

	String.prototype.x2x=function(){
		var temp = this.split(""),z,dtable=tables[arguments[0]], qtable=tables[arguments[1]];
	

		for(i=0; i<temp.length; i++){
			if((z=dtable.indexOf(temp[i]))!=-1)
				temp[i]=qtable.charAt(z);
		}
	
		return temp.join("");
	}

	function keyHandler(){
		for (var i=0; i<textareas.length; i++){
			if (textareas[i].layout != this.layout){
				textareas[i].value=this.value.x2x(this.layout, textareas[i].layout);
			}
		}
	}

	var i=0;
	for (k in tables){
		var inner = document.createElement("DIV");
	
		inner.appendChild(document.createTextNode(k + ": "));
		inner.appendChild(document.createElement("BR"));
		
		var tempArea = document.createElement("TEXTAREA")

		tempArea.onkeyup=keyHandler;
		tempArea.layout=k;

		inner.appendChild(tempArea);

		lcontainer.appendChild(inner);

		textareas.push(tempArea);
	}

})(document.getElementById('lcontainer'));

};
</script>

<div id="lcontainer">Place the cursor in the box that corresponds the layout you are currently using. The other will be updated with what the text would have looked like if typed with that keyboard layout. <br />

</div>

Förändringar i denna version:

  • Täcker nu alla fyra rader av tangenter.
  • Täcker nu fyra tangentbordslayouter.
  • type="text/javascript" :)
  • "Zero footprint" - Kräver ingen layout-kod för att fungera - passa över en referens till valfritt HTML-element så skapas formuläret via DOM "on the fly".

Kanda buggar och begransningar:

  • Vissa tecken finns på flera ställen i vissa layouter, och kodas därför fel.
Medlem sedan juni 20014 421 inlägg
#4

Swedish dvorka innehåller två Ä istälet för Ä och A

Medlem sedan aug. 20039 340 inlägg
#5
<script type="text/javascript">

window.onload=function(){

new (function(){
	/*
	Keyboard layout synchronizer, Version 1.1
	© 2006 nitro2k01
	Licensed under a common creatives 2.5 license.
	See [url]http://creativecommons.org/licenses/by/2.5/deed.en_GB[/url] for details
	Contact: nitro2k01+klsync@gmail.com	
	*/

	var lcontainer=arguments[0], textareas=[];

	var tables={
		"Swedish dvorak":
		"!\"#¤%&/()=?`1234567890+´"+
		"ÅÄÖPYFGCRL;^åäöpyfgcrl,¨"+
		"AOEUIDHTNS_*aoeuidhtns-'"+
		">:QJKXBMWVZ<.qjkxbmwvz",

		"US English dvorak":
		"!@#$%^&*(){}1234567890[]"+
		"\"<>PYFGCRL?+',.pyfgcrl/="+
		"AOEUIDHTNS_|aoeuidhtns-\\"+
		"|:QJKXBMWVZ\\;qjkxbmwvz",

		"US English qwerty":
		"!@#$%^&*()_+1234567890-="+
		"QWERTYUIOP{}qwertyuiop[]"+
		"ASDFGHJKL:\"|asdfghjkl;'\\"+
		"|ZXCVBNM<>?\\zxcvbnm,./",

		"Swedish qwerty":
		"!\"#¤%&/()=?`1234567890+´"+
		"QWERTYUIOPÅ^qwertyuiopå¨"+
		"ASDFGHJKLÖÄ*asdfghjklöä'"+
		">ZXCVBNM;:_<zxcvbnm,.-"
	}

	String.prototype.x2x=function(){
		var temp = this.split(""),z,dtable=tables[arguments[0]], qtable=tables[arguments[1]];
	

		for(i=0; i<temp.length; i++){
			if((z=dtable.indexOf(temp[i]))!=-1)
				temp[i]=qtable.charAt(z);
		}
	
		return temp.join("");
	}

	function keyHandler(){
		for (var i=0; i<textareas.length; i++){
			if (textareas[i].layout != this.layout){
				textareas[i].value=this.value.x2x(this.layout, textareas[i].layout);
			}
		}
	}

	var i=0;
	for (k in tables){
		var inner = document.createElement("DIV");
	
		inner.appendChild(document.createTextNode(k + ": "));
		inner.appendChild(document.createElement("BR"));
		
		var tempArea = document.createElement("TEXTAREA")

		tempArea.onkeyup=keyHandler;
		tempArea.layout=k;

		inner.appendChild(tempArea);

		lcontainer.appendChild(inner);

		textareas.push(tempArea);
	}

})(document.getElementById('lcontainer'));

};
</script>

<div id="lcontainer">Place the cursor in the box that corresponds the layout you are currently using. The other will be updated with what the text would have looked like if typed with that keyboard layout. <br />

</div>

Förändringar i denna version:

  • Felaktigt Ä utbytt mot A i Swedish Dvorak. (Tack Colione)

Kanda buggar och begransningar:

  • Vissa tecken finns på flera ställen i vissa layouter, och kodas därför fel.
534 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
399 ms — ändringar (db)