Аватар для ImAlexSmith
325 / 114 / 7
Регистрация: 01.05.2011
Сообщений: 283
Записей в блоге: 3

Текст(или ASCII код) нажатой клавиши

05.11.2011, 23:17. Показов 2160. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
        public void Change(KeyboardState keyboardState)
        {
            Keys[] k = keyboardState.GetPressedKeys();
 
            if (this.Focused && k.Length != 0)
            {
                    this.TextAll +=k.GetValue(k.GetLowerBound(0));
            }
        }
но что то как то... на пробел он пишет SPACE, на единичку D1...
А хотелось бы получить " " и "1" соответственно. Какой-то метод можно сипользовать? или писать велосепед и в цикле сравнивать и потом присваивать переменной текстовое значени? а как же быть с BACKSPACE? подскажите пожалуйста?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2011, 23:17
Ответы с готовыми решениями:

прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши.
написать программу, которая по нажатой клавише выводит ascii - код символа этой клавиши или scan - код самой клавиши. осуществите вывод в...

Получать scan и ascii коды нажатой клавиши, masm
Есть лабораторная робота, последняя слава богу. Все предыдущие делал сам, с этой справится не могу. Суть вот в чем: При нажатии...

Вывод ASCII кода нажатой клавиши в шестнадцатиричной системе счисления
Помогите пожалуйста!!! Необходима программа,которая способна обрабатывать события поступающие с клавиатуры,с учетом функциональных...

2
54 / 42 / 7
Регистрация: 08.04.2011
Сообщений: 227
06.11.2011, 12:40
Дело в том, что в XNA нет такой возможности, поэтому приходится импровизировать...
Велосипеды пишутся так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Timers;
using Fanospace.Main;
 
namespace Fanospace.Multiplayer
{
    public class Chat
    {
        public string currentLine = "";//Line, that show current entered text on the screen.
 
        SpriteFont font;//Base font.
 
        bool blink = false;//Blink-cursor.
        Timer timer;//Blink-timer.
 
        public string[] messages;
 
        CommandHandler command = new CommandHandler();
 
        KeyboardState oldState;//Old keyboard state.
 
        public Chat()
        {
            messages = new string[3];
            timer = new Timer();
            timer.Interval = 200;
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
        }
 
        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            blink = !blink;
        }
        public void LoadContent(ContentManager content)
        {
            font = content.Load<SpriteFont>("fonts/chat");
 
            messages[0] = "";
            messages[1] = "";
            messages[2] = "";
        }
        /// <summary>
        /// Send message (message[0] = message).
        /// </summary>
        /// <param name="text">Text, that you need to send</param>
        public void send(string text)
        {
            messages[0] = text;
        }
        public void Update(GameTime gameTime)
        {
            Keys[] allowedChars = {Keys.Q, Keys.W, Keys.E, Keys.R, Keys.T, Keys.Y, Keys.U, Keys.I, Keys.O, Keys.P, 
                                      Keys.A, Keys.S, Keys.D, Keys.F, Keys.G, Keys.H, Keys.J, Keys.K, Keys.L, Keys.Z, 
                                        Keys.X, Keys.C, Keys.V, Keys.B, Keys.N, Keys.M};//All letters, that we can enter.
 
            Keys[] allowedSymbols = { Keys.D0, Keys.D1, Keys.D2, Keys.D3, Keys.D4, Keys.D5, Keys.D6, Keys.D7, Keys.D8, 
                                        Keys.D9, Keys.OemSemicolon, Keys.OemQuestion, Keys.OemPeriod, Keys.Space,
                                            Keys.OemComma, Keys.OemTilde, Keys.OemMinus, Keys.OemPlus, Keys.OemQuotes,
                                                Keys.OemPipe};//All symbols, that we can enter.
 
            KeyboardState keyboard = Keyboard.GetState();
            if (keyboard.IsKeyDown(Keys.Enter) && oldState.IsKeyUp(Keys.Enter))
            {
                Base.lockControl = !Base.lockControl;
                if (currentLine.Length > 0)
                {
                    messages[2] = messages[1];
                    messages[1] = messages[0];
                    messages[0] = Base.nickname + ": " + currentLine;
                    command.send(currentLine);
                    currentLine = "";//Clearing current line.
                }
                Program.game.inChat = !Program.game.inChat;//Lock chat.
            }
            if (!Program.game.inChat)
            {
                timer.Stop();
                blink = false;
                currentLine = "";
            }
                if (Program.game.inChat)
                {
                /*Вот backspace, собственно*/
                if (keyboard.IsKeyDown(Keys.Back) && oldState.IsKeyUp(Keys.Back) && currentLine.Length > 0)
                    currentLine = currentLine.Remove(currentLine.Length - 1, 1);//Eraser D:
                if (currentLine.Length < 65)//Max message length.
                {
                    timer.Start();//Cursor blinking.
                    for (int i = 0; i < allowedChars.Length; i++)
                    {
                        if (keyboard.IsKeyDown(allowedChars[i]) && oldState.IsKeyUp(allowedChars[i]))
                        {
                            if (keyboard.IsKeyDown(Keys.LeftShift))
                                currentLine += allowedChars[i].ToString();
                            if (keyboard.IsKeyUp(Keys.LeftShift))
                                currentLine += allowedChars[i].ToString().ToLower();
                        }
                    }
                    for (int i = 0; i < allowedSymbols.Length; i++)
                    {
                        if (keyboard.IsKeyDown(allowedSymbols[i]) && oldState.IsKeyUp(allowedSymbols[i]))
                        {
                            if (keyboard.IsKeyDown(Keys.LeftShift))
                            {
                                //Special chars with pressed shift.
                                switch (i)
                                {
                                    case 1:
                                        currentLine += '!';
                                        break;
                                    case 2:
                                        currentLine += '@';
                                        break;
                                    case 3:
                                        currentLine += '#';
                                        break;
                                    case 4:
                                        currentLine += '$';
                                        break;
                                    case 5:
                                        currentLine += '%';
                                        break;
                                    case 6:
                                        currentLine += '^';
                                        break;
                                    case 7:
                                        currentLine += '&';
                                        break;
                                    case 8:
                                        currentLine += '*';
                                        break;
                                    case 9:
                                        currentLine += '(';
                                        break;
                                    case 0:
                                        currentLine += ')';
                                        break;
                                    case 10:
                                        currentLine += ':';
                                        break;
                                    case 11:
                                        currentLine += '?';
                                        break;
                                    case 12:
                                        currentLine += '>';
                                        break;
                                    case 13:
                                        currentLine += ' ';
                                        break;
                                    case 14:
                                        currentLine += '<';
                                        break;
                                    case 15:
                                        currentLine += '~';
                                        break;
                                    case 16:
                                        currentLine += '_';
                                        break;
                                    case 17:
                                        currentLine += '+';
                                        break;
                                    case 18:
                                        currentLine += '"';
                                        break;
                                    case 19:
                                    currentLine += '|';
                                        break;
                                    case 20:
                                        currentLine += '<';
                                        break;
                                }
                            }
                            if (keyboard.IsKeyUp(Keys.LeftShift))
                            {
                                //Special chars without pressed shift.
                                if (i < 10)
                                    currentLine += i;
                                if (i >= 10)
                                {
                                    switch (i)
                                    {
                                        case 10:
                                            currentLine += ';';
                                            break;
                                        case 11:
                                            currentLine += '/';
                                            break;
                                        case 12:
                                            currentLine += '.';
                                            break;
                                        case 13:
                                            currentLine += ' ';
                                            break;
                                        case 14:
                                            currentLine += ',';
                                            break;
                                        case 15:
                                            currentLine += '`';
                                            break;
                                        case 16:
                                            currentLine += '-';
                                            break;
                                        case 17:
                                            currentLine += '=';
                                            break;
                                        case 18:
                                            currentLine += '\'';
                                            break;
                                        case 19:
                                        currentLine += '\\';
                                            break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            oldState = keyboard;
        }
        public void Draw(SpriteBatch spriteBatch)
        {
            string empty = "";
            spriteBatch.Begin();
            spriteBatch.DrawString(font, currentLine, new Vector2(10, 550), Color.Red);
            spriteBatch.DrawString(font, messages[0], new Vector2(10, 525), Color.Red);
            spriteBatch.DrawString(font, messages[1], new Vector2(10, 500), Color.Red);
            spriteBatch.DrawString(font, messages[2], new Vector2(10, 475), Color.Red);
            if (blink)
            {
                for (int i = 0; i < currentLine.Length; i++)
                {
                    empty += " ";
                }
                spriteBatch.DrawString(font, empty + "|", new Vector2(10, 550), Color.Red);
            }
                spriteBatch.End();
            }
        }
    }
1
 Аватар для ImAlexSmith
325 / 114 / 7
Регистрация: 01.05.2011
Сообщений: 283
Записей в блоге: 3
06.11.2011, 16:59  [ТС]
FanAs, окай, спасибо. Хотя я и надеялся, что можно будет обойтись без изобретательства.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2011, 16:59
Помогаю со студенческими работами здесь

Перевод кода нажатой клавиши в текст
Пишу клавиатурный логер записывает нажатые клавиши в текстовый файл. Есть функция short GetSymbolFromVK(WPARAM wParam) //...

Вывод scan кода и ascii кода нажатой клавиши
Подскажите пожалуйста, как реализовать вывод scan кода и ascii кода нажатой клавиши в ассемблерной вставке в c++ builder 6

код нажатой клавиши
Помогите написать программу которая получить console код нажатой клавиши и выводить на экран соответствующую клавише заглавную или...

Код нажатой клавиши
Кто знает, как считать код нажатой клавиши для gcc? ищу что-то типа функции getch из библиотеки conio.h, только для линукса

Код нажатой клавиши.
Добрый день! Не как не могу сделать чтобы из ShowMessage была считана информация о символах(код символов первого и последнего) которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
Коммуникация в реальном времени с SignalR в C# на примере создания чата
UnmanagedCoder 17.04.2025
Современный веб стремительно эволюционирует от статичных страниц к динамичным приложениям, где пользователи ожидают мгновенной реакции на свои действия. Представим, что вы отправляете сообщение. . .
Реализация CQRS с MediatR на C# .NET
stackOverflow 17.04.2025
Современная разработка программного обеспечения постоянно ищет пути повышения эффективности организации кода. Архитектурные паттерны появляются, эволюционируют, и те, что проявляют свою. . .
Verilog и интеллектуальная собственность - "глазами" обученной LM модели.
Hrethgir 17.04.2025
В сети встречаются участники, заявляющие что код на Verilog ни о чём не говорит. Но вот патентная практика на самом деле показывает обратное ими утверждаемому. То-есть код на Verilog включают в. . .
Свап-файл дополнительно к разделу (если вдруг не хватает или не создан)
jigi33 17.04.2025
ПОДКЛЮЧЕНИЕ ДОПОЛНИТЕЛЬНОГО SWAP ПРОСТРАНСТВА, Т. О. , РАСШИРЕНИЕ ЕГО РАЗМЕРА В Linux можно использовать как раздел подкачки (swap), так и файл подкачки (swap-файл). Чтобы создать swap-файл вместо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru