Support AltGr (ISO_Level3_Shift) as a modifier key

master
Andreas Erdes 5 years ago committed by Raheman Vaiya
parent 81c3d53f4c
commit ce89d6d5c4
  1. 3
      man.md
  2. 16
      src/config.c
  3. 1
      src/keys.h
  4. 2
      src/main.c

@ -59,7 +59,8 @@ and each modifier is one of:
\ **C** - Control\
\ **M** - Meta/Super\
\ **A** - Alt\
\ **S** - Shift
\ **S** - Shift\
\ **I** - AltGr (ISO_Level3_Shift)
In addition to simple key mappings keyd can remap keys to actions which
can conditionally send keystrokes or transform the state of the keymap.

@ -71,6 +71,11 @@ static const char *modseq_to_string(uint8_t mods) {
i+=2;
}
if(mods & MOD_ALT_GR) {
strcpy(s+i, "-I");
i+=2;
}
if(i)
return s+1;
else
@ -105,6 +110,11 @@ static const char *keyseq_to_string(uint32_t keyseq) {
i+=2;
}
if(mods & MOD_ALT_GR) {
strcpy(s+i, "I-");
i+=2;
}
if(key)
strcpy(s+i, keycode_strings[code]);
else
@ -131,6 +141,9 @@ static int parse_mods(const char *s, uint8_t *mods)
case 'S':
*mods |= MOD_SHIFT;
break;
case 'I':
*mods |= MOD_ALT_GR;
break;
default:
return -1;
break;
@ -170,6 +183,9 @@ static int parse_keyseq(const char *s, uint16_t *keycode, uint8_t *mods) {
case 'S':
*mods |= MOD_SHIFT;
break;
case 'I':
*mods |= MOD_ALT_GR;
break;
default:
return -1;
break;

@ -41,6 +41,7 @@
#define MOD_SHIFT 0x4
#define MOD_SUPER 0x2
#define MOD_ALT 0x1
#define MOD_ALT_GR 0x10
static const char *keycode_strings[] = {
[KEY_ESC] = "esc",

@ -244,6 +244,8 @@ static void send_mods(uint16_t mods, int pressed)
send_key(KEY_LEFTMETA, pressed);
if(mods & MOD_ALT)
send_key(KEY_LEFTALT, pressed);
if(mods & MOD_ALT_GR)
send_key(KEY_RIGHTALT, pressed);
}
static void send_keyseq(uint32_t keyseq, int pressed)

Loading…
Cancel
Save