c++ - SDL2 不会为重音键生成 KEYDOWN 和 KEYUP 事件
问题描述
我想将按键用作游戏控件而不是写文本。
我已经尝试过SDL_StopTextInput();
,但这只会禁用事件并且SDL_TEXTINPUT
不会创建事件SDL_KEYDOWN
SDL_KEYUP
#include <GL/glew.h>
#include <SDL2/SDL.h>
#include <iostream>
#define ANCHO 800
#define ALTO 600
int main (int n, char **argumentos)
{
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0");//No suspende el compositor de ventana (No funciona en devuan mate)
//error: ‘SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR’ was not declared in this scope (devuan mate)
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
SDL_SetHint(SDL_HINT_IME_INTERNAL_EDITING, "1");
SDL_Window *ventana = SDL_CreateWindow("Ejemplo", 0, 0, ANCHO, ALTO, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
SDL_GLContext contexto = SDL_GL_CreateContext(ventana);
SDL_GL_SetSwapInterval(1);//Limita a 60 fps
glewExperimental = GL_TRUE;
glEnable (GL_CULL_FACE);
glViewport(0, 0, ANCHO, ALTO);
glClearColor(0.95, 0.95, 0.95, 1.0);
//glActiveTexture(GL_TEXTURE0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
SDL_StopTextInput();
bool terminar = false;
while (!terminar)
{
SDL_Event evento;
while (SDL_PollEvent(&evento))
{
if(evento.type == SDL_TEXTEDITING)
std::cout << "SDL_TEXTEDITING" << "\n";
else if(evento.type == SDL_TEXTINPUT)
std::cout << "SDL_TEXTINPUT" << "\n";
else if(evento.type == SDL_KEYMAPCHANGED)
std::cout << "SDL_KEYMAPCHANGED" << "\n";
else if(evento.type == SDL_SYSWMEVENT)
std::cout << "SDL_SYSWMEVENT" << "\n";
else if(evento.type == SDL_KEYDOWN)
std::cout << "SDL_KEYDOWN" << "\n";
else if(evento.type == SDL_KEYUP)
std::cout << "SDL_KEYUP" << "\n";
else if (evento.type == SDL_WINDOWEVENT)
{
if (evento.window.event == SDL_WINDOWEVENT_CLOSE)
terminar = true;
}
}
glClear(GL_COLOR_BUFFER_BIT);
SDL_GL_SwapWindow(ventana);
}
return 0;
}
操作系统:Gentoo 64bits
键盘:西班牙语/西班牙语
两种口音都不起作用:´
和`
解决方案
推荐阅读
- angular - 我无法将一个模块中的组件用于另一个模块组件
- python - AWS Lambda 在私有 API 网关后面请求另一个 lambda - DNS 解析不起作用
- c# - 在 ASP .Net Core 3.0 中使用 Heroku PostgreSql
- bit-manipulation - 表达式“x & (x + (1 << n))”是如何工作的?
- python - Windows长度矩阵转向量,提取数据
- javascript - 如何在 Symfony 项目中使用 jQuery 和 webpack-encore?
- javascript - React.js - 无法访问对象数组中的值
- jquery - 通过 AJAX 调用传递数据导致失败
- java - 使用 Java 从 YAML 文件中删除 Key:Value 属性
- python - 如何使用 python 应用 IDW 插值来使用 Plotly 绘制 3D 曲面