Skip to content

Instantly share code, notes, and snippets.

@lethal-guitar
Created March 7, 2021 14:43
Show Gist options
  • Save lethal-guitar/711da79bdd7fe0a89129e8a14314caa4 to your computer and use it in GitHub Desktop.
Save lethal-guitar/711da79bdd7fe0a89129e8a14314caa4 to your computer and use it in GitHub Desktop.
gptokeyb with kill mode
bool kill_mode = // ...
bool back_pressed = false;
bool start_pressed = false;
SDL_Event event;
bool running = true;
while (running) {
if (!SDL_WaitEvent(&event)) {
printf("SDL_WaitEvent() failed: %s\n", SDL_GetError());
return -1;
}
switch (event.type) {
case SDL_CONTROLLERBUTTONDOWN:
case SDL_CONTROLLERBUTTONUP:
{
const bool is_pressed =
event.type == SDL_CONTROLLERBUTTONDOWN;
if (kill_mode) {
switch (event.cbutton.button) {
case SDL_CONTROLLER_BUTTON_BACK: // aka select
back_pressed = is_pressed;
break;
case SDL_CONTROLLER_BUTTON_START:
start_pressed = is_pressed;
break;
}
if (start_pressed && back_pressed) {
printf("Killing: %s\n", AppToKill);
system( (" killall '"+std::string(AppToKill)+"' ").c_str() );
exit(0);
}
} else {
switch (event.cbutton.button) {
case SDL_CONTROLLER_BUTTON_DPAD_LEFT:
emitKey(KEY_LEFT, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_DPAD_UP:
emitKey(KEY_UP, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
emitKey(KEY_RIGHT, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_DPAD_DOWN:
emitKey(KEY_DOWN, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_A:
emitKey(KEY_ENTER, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_B:
emitKey(KEY_ESC, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_BACK: // aka select
emitKey(KEY_PLAYPAUSE, is_pressed);
break;
case SDL_CONTROLLER_BUTTON_START:
emitKey(KEY_ENTER, is_pressed);
break;
}
}
}
break;
case SDL_CONTROLLERDEVICEADDED:
SDL_GameControllerOpen(event.cdevice.which);
break;
case SDL_CONTROLLERDEVICEREMOVED:
if (SDL_GameController* controller = SDL_GameControllerFromInstanceID(event.cdevice.which))
{
SDL_GameControllerClose(controller);
}
break;
case SDL_QUIT:
running = false;
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment