@@ -101,6 +101,7 @@ enum action_field {
101
101
ACTION_FIELD_KEYCODE ,
102
102
ACTION_FIELD_MODS_TO_CLEAR ,
103
103
ACTION_FIELD_LOCK_ON_RELEASE ,
104
+ ACTION_FIELD_UNLOCK_ON_PRESS ,
104
105
};
105
106
106
107
ActionsInfo *
@@ -168,6 +169,7 @@ static const LookupEntry fieldStrings[] = {
168
169
{ "clearmods" , ACTION_FIELD_MODS_TO_CLEAR },
169
170
{ "clearmodifiers" , ACTION_FIELD_MODS_TO_CLEAR },
170
171
{ "lockOnRelease" , ACTION_FIELD_LOCK_ON_RELEASE },
172
+ { "unlockOnPress" , ACTION_FIELD_UNLOCK_ON_PRESS },
171
173
{ NULL , 0 }
172
174
};
173
175
@@ -334,10 +336,15 @@ HandleSetLatchLockMods(struct xkb_context *ctx, const struct xkb_mod_set *mods,
334
336
return CheckBooleanFlag (ctx , action -> type , field ,
335
337
ACTION_LATCH_TO_LOCK , array_ndx , value ,
336
338
& act -> flags );
337
- if (type == ACTION_TYPE_MOD_LOCK &&
338
- field == ACTION_FIELD_AFFECT )
339
- return CheckAffectField (ctx , action -> type , array_ndx , value ,
340
- & act -> flags );
339
+ if (type == ACTION_TYPE_MOD_LOCK ) {
340
+ if (field == ACTION_FIELD_AFFECT )
341
+ return CheckAffectField (ctx , action -> type , array_ndx , value ,
342
+ & act -> flags );
343
+ if (field == ACTION_FIELD_UNLOCK_ON_PRESS )
344
+ return CheckBooleanFlag (ctx , action -> type , field ,
345
+ ACTION_UNLOCK_ON_PRESS , array_ndx , value ,
346
+ & act -> flags );
347
+ }
341
348
342
349
return ReportIllegal (ctx , action -> type , field );
343
350
}
0 commit comments