<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tastatureingaben und Keyboard Layouts]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich sitze derzeit davor und versuche tastatureingaben für eine eingabekonsole die später vielleicht auch für ein chat system verwendet werden könnte usw. zu erstellen. das problem ist das ich nicht weiss wie das vom konzept her aussehen soll wenn dies später mit den verschiedenen Layouts funktionieren soll. denn im englischen sind ja diverse tasten wo anders angeordnet.</p>
<p>wenn ich nun in der WndProc bei WM_KEYDOWN ein ...</p>
<pre><code class="language-cpp">bKey[wParam];       // bool bKey[256]
</code></pre>
<p>... stehen habe und dann versuche den VK-Keycode abzufragen, ...</p>
<pre><code class="language-cpp">TCHAR	sLangIdentifier[10];
	GetKeyboardLayoutName(sLangIdentifier);

	HKL pKeyboardLayout = LoadKeyboardLayout(sLangIdentifier, KLF_ACTIVATE);

	iVKStorage[0] = VkKeyScanEx(TEXT('&lt;'), pKeyboardLayout);
	iVKStorage[1] = VkKeyScanEx(TEXT('&gt;'), pKeyboardLayout);
/*
VkKeyScan() würde wohl auch reichen. aber den Lang Identifier könnte 
ich für abfragen, ob Englisches oder Deutsches Tastenlayout, verwenden.
*/
</code></pre>
<p>... dann kommt bei der Taste &lt; irgendwas mit 2xx raus und &gt; was mit 481. Frage ich nun mit ...</p>
<pre><code class="language-cpp">if(bKey[iVKStorage[1&rsqb;&rsqb;){...}
</code></pre>
<p>... wird sie nicht ausgeführt. auch wenn ich bKey auf 512 höher setze tut das nicht. ich denke mir das es mit der Shift-taste zutun hat. mit wParam wird nur die Taste ohne Shift benutzt, das wäre dann &lt; so das &gt; ohne Funktion bleibt. denn in bKey landet nur der wParam wert von &lt; und nicht &gt;.</p>
<p>die sache dabei ist das im englischen layout beide, also &lt; und &gt; mit Shift aufgerufen werden müssen. Es wäre natürlich nicht das ding dem benuzter zu fragen ob er deutsches oder englisches layout will. aber stell mir das jetzt gerade ziemlich kompliziert vor wenn ich abfragen muss taste ; deutsch/english/mitShift/OhneShift, denn im deutschen ist ja die kommataste die wparam und ; nur mit Shift und im Englischen ist ; die wParam Taste und : die mit Shift.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201004/tastatureingaben-und-keyboard-layouts</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 10:12:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201004.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Dec 2007 21:30:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tastatureingaben und Keyboard Layouts on Sat, 22 Dec 2007 21:30:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich sitze derzeit davor und versuche tastatureingaben für eine eingabekonsole die später vielleicht auch für ein chat system verwendet werden könnte usw. zu erstellen. das problem ist das ich nicht weiss wie das vom konzept her aussehen soll wenn dies später mit den verschiedenen Layouts funktionieren soll. denn im englischen sind ja diverse tasten wo anders angeordnet.</p>
<p>wenn ich nun in der WndProc bei WM_KEYDOWN ein ...</p>
<pre><code class="language-cpp">bKey[wParam];       // bool bKey[256]
</code></pre>
<p>... stehen habe und dann versuche den VK-Keycode abzufragen, ...</p>
<pre><code class="language-cpp">TCHAR	sLangIdentifier[10];
	GetKeyboardLayoutName(sLangIdentifier);

	HKL pKeyboardLayout = LoadKeyboardLayout(sLangIdentifier, KLF_ACTIVATE);

	iVKStorage[0] = VkKeyScanEx(TEXT('&lt;'), pKeyboardLayout);
	iVKStorage[1] = VkKeyScanEx(TEXT('&gt;'), pKeyboardLayout);
/*
VkKeyScan() würde wohl auch reichen. aber den Lang Identifier könnte 
ich für abfragen, ob Englisches oder Deutsches Tastenlayout, verwenden.
*/
</code></pre>
<p>... dann kommt bei der Taste &lt; irgendwas mit 2xx raus und &gt; was mit 481. Frage ich nun mit ...</p>
<pre><code class="language-cpp">if(bKey[iVKStorage[1&rsqb;&rsqb;){...}
</code></pre>
<p>... wird sie nicht ausgeführt. auch wenn ich bKey auf 512 höher setze tut das nicht. ich denke mir das es mit der Shift-taste zutun hat. mit wParam wird nur die Taste ohne Shift benutzt, das wäre dann &lt; so das &gt; ohne Funktion bleibt. denn in bKey landet nur der wParam wert von &lt; und nicht &gt;.</p>
<p>die sache dabei ist das im englischen layout beide, also &lt; und &gt; mit Shift aufgerufen werden müssen. Es wäre natürlich nicht das ding dem benuzter zu fragen ob er deutsches oder englisches layout will. aber stell mir das jetzt gerade ziemlich kompliziert vor wenn ich abfragen muss taste ; deutsch/english/mitShift/OhneShift, denn im deutschen ist ja die kommataste die wparam und ; nur mit Shift und im Englischen ist ; die wParam Taste und : die mit Shift.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424967</guid><dc:creator><![CDATA[lepolde]]></dc:creator><pubDate>Sat, 22 Dec 2007 21:30:07 GMT</pubDate></item></channel></rss>