Skip to content

Commit

Permalink
Try to fix Ctrl-key chords on MacOS with the new input.
Browse files Browse the repository at this point in the history
The old code had a confusing logic that dealt with Ctrl-keys, which was
misinterpreted by me, which I now changed. Separately, the new input had
logic to filter out characters under 32, which was not necessary.
  • Loading branch information
SiegeLordEx authored and SiegeLord committed Nov 30, 2024
1 parent 77c905b commit 730e291
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions src/macosx/keybd.m
Original file line number Diff line number Diff line change
Expand Up @@ -269,10 +269,8 @@ void _al_osx_keyboard_handler(int pressed, NSEvent *event, ALLEGRO_DISPLAY* dpy)

if (pressed) {
int32_t unichar = 0;
bool new_input = _al_get_keyboard_compat_version() >= AL_ID(5, 2, 10, 0);
NSString *raw_characters = [event charactersIgnoringModifiers];
bool new_input = false;//_al_get_keyboard_compat_version() >= AL_ID(5, 2, 10, 0);
NSString *characters = [event characters];
UniChar raw_character = ([raw_characters length] > 0) ? [raw_characters characterAtIndex: 0] : 0;
UniChar character = ([characters length] > 0) ? [characters characterAtIndex: 0] : 0;

if (new_input) {
Expand Down Expand Up @@ -307,9 +305,6 @@ void _al_osx_keyboard_handler(int pressed, NSEvent *event, ALLEGRO_DISPLAY* dpy)
/* For some reason, pad enter sends a ^C. */
if (scancode == ALLEGRO_KEY_PAD_ENTER && unichar == 3)
unichar = '\r';
/* Single out the few printable characters under 32 */
if (unichar < ' ' && (unichar != '\r' && unichar != '\t' && unichar != '\b'))
unichar = 0;
al_ustr_free(ustr);
}
CFRelease(keyboard_input);
Expand All @@ -326,8 +321,8 @@ void _al_osx_keyboard_handler(int pressed, NSEvent *event, ALLEGRO_DISPLAY* dpy)
if (character == 0xF728 && new_input)
unichar = 127;
/* Special processing to send character 1 for CTRL-A, 2 for CTRL-B etc. */
if ((key_shifts & ALLEGRO_KEYMOD_CTRL) && (isalpha(raw_character)))
unichar = tolower(raw_character) - 'a' + 1;
if (key_shifts & ALLEGRO_KEYMOD_CTRL)
unichar = character;
bool is_repeat = pressed ? ([event isARepeat] == YES) : false;
_handle_key_press(dpy, unichar, scancode, key_shifts, is_repeat);
}
Expand Down

0 comments on commit 730e291

Please sign in to comment.