diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-05-17 15:48:43 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-05-17 15:52:12 +1000 |
commit | a536adf036863bec5913ff89f4bab0ead6cca660 (patch) | |
tree | b498beea3866a0e84f45ba79bb49bc8530090676 | |
parent | b3b780ff995b19ddaad77b22dc14ab69978b5983 (diff) |
Add some more files that didn't get added the first time round.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
l--------- | config_usage | 1 | ||||
-rw-r--r-- | getargs.c | 896 | ||||
-rw-r--r-- | print.c | 283 | ||||
-rw-r--r-- | usage.c | 167 |
4 files changed, 1347 insertions, 0 deletions
diff --git a/config_usage b/config_usage new file mode 120000 index 0000000..875d53f --- /dev/null +++ b/config_usage @@ -0,0 +1 @@ +config_getargs
\ No newline at end of file diff --git a/getargs.c b/getargs.c new file mode 100644 index 0000000..db98575 --- /dev/null +++ b/getargs.c @@ -0,0 +1,896 @@ +/* +Copyright (c) 2000, 2002 Stephen Montgomery-Smith +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Stephen Montgomery-Smith nor the names of his + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE STEPHEN MONTGOMERY-SMITH AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL STEPHEN MONTGOMERY-SMITH OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "xkbset.h" + +Bool get_arguments(int argc, char *argv[], XkbControlsPtr ctrls, unsigned int *mask) +{ + char char_array_32[32]; + int inc, i = 1; + int val1, val2, val3, val4, val5; + + *mask = 0; + while (i<argc) { + if ((i+1<=argc && strcmp(argv[i],"bell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"b")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-b")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbAudibleBellMask; + else ctrls->enabled_ctrls |= XkbAudibleBellMask; + *mask |= XkbControlsEnabledMask; + i += inc; + } + else if ((i+2<=argc && strcmp(argv[i],"repeatkeys")==0 && get_number(argv[i+1],0,255,&val1) && (inc=2)) || + (i+2<=argc && strcmp(argv[i],"r")==0 && get_number(argv[i+1],0,255,&val1) && (inc=2)) || + (i+2<=argc && strcmp(argv[i],"-repeatkeys")==0 && get_number(argv[i+1],0,255,&val1) && (inc=2)) || + (i+2<=argc && strcmp(argv[i],"-r")==0 && get_number(argv[i+1],0,255,&val1) && (inc=2))) { + if (argv[i][0] == '-') ctrls->per_key_repeat[val1>>3] &= ~(1<<(val1&7)); + else ctrls->per_key_repeat[val1>>3] |= (1<<(val1&7)); + *mask |= XkbPerKeyRepeatMask; + i += inc; + } + else if ((i+2<=argc && strcmp(argv[i],"perkeyrepeat")==0 && get_64_hex(argv[i+1],char_array_32) && (inc=2))) { + memcpy(ctrls->per_key_repeat,char_array_32,32); + *mask |= XkbPerKeyRepeatMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"repeatkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"r")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-repeatkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-r")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbRepeatKeysMask; + else ctrls->enabled_ctrls |= XkbRepeatKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + if ((i+2<=argc && strcmp(argv[i],"rate")==0 && get_number(argv[i+1],0,65535,&val1) && (inc=2))) { + ctrls->repeat_delay = val1; + *mask |= XkbRepeatKeysMask; + i += inc; + if ((i+1<=argc && get_number(argv[i],0,65535,&val1) && (inc=1))) { + ctrls->repeat_interval = val1; + i += inc; + } + } + } + else if ((i+1<=argc && strcmp(argv[i],"mousekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"m")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mousekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-m")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbMouseKeysMask; + else ctrls->enabled_ctrls |= XkbMouseKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + if ((i+1<=argc && get_number(argv[i],0,255,&val1) && (inc=1))) { + ctrls->mk_dflt_btn = val1; + *mask |= XkbMouseKeysMask; + i += inc; + } + } + else if ((i+1<=argc && strcmp(argv[i],"mousekeysaccel")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ma")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mousekeysaccel")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ma")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbMouseKeysAccelMask; + else ctrls->enabled_ctrls |= XkbMouseKeysAccelMask; + *mask |= XkbControlsEnabledMask; + i += inc; + if ((i+5<=argc && get_number(argv[i],0,65535,&val1) && get_number(argv[i+1],0,65535,&val2) && get_number(argv[i+2],0,65535,&val3) && get_number(argv[i+3],0,65535,&val4) && get_number(argv[i+4],-32767,32767,&val5) && (inc=5))) { + ctrls->mk_delay = val1; + ctrls->mk_interval = val2; + ctrls->mk_time_to_max = val3; + ctrls->mk_max_speed = val4; + ctrls->mk_curve = val5; + *mask |= XkbMouseKeysAccelMask; + i += inc; + } + } + else if ((i+1<=argc && strcmp(argv[i],"accessx")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"a")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-accessx")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-a")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbAccessXKeysMask; + else ctrls->enabled_ctrls |= XkbAccessXKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"sticky")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"st")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-sticky")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-st")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbStickyKeysMask; + else ctrls->enabled_ctrls |= XkbStickyKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"twokey")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-twokey")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_TwoKeysMask; + else ctrls->ax_options |= XkbAX_TwoKeysMask; + *mask |= XkbStickyKeysMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"latchlock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-latchlock")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_LatchToLockMask; + else ctrls->ax_options |= XkbAX_LatchToLockMask; + *mask |= XkbStickyKeysMask; + i += inc; + } + else break; + } + } + else if ((i+1<=argc && strcmp(argv[i],"slowkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"sl")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-sl")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbSlowKeysMask; + else ctrls->enabled_ctrls |= XkbSlowKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + if ((i+1<=argc && get_number(argv[i],0,65535,&val1) && (inc=1))) { + ctrls->slow_keys_delay = val1; + *mask |= XkbSlowKeysMask; + i += inc; + } + } + else if ((i+1<=argc && strcmp(argv[i],"bouncekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"bo")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bouncekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bo")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbBounceKeysMask; + else ctrls->enabled_ctrls |= XkbBounceKeysMask; + *mask |= XkbControlsEnabledMask; + i += inc; + if ((i+1<=argc && get_number(argv[i],0,65535,&val1) && (inc=1))) { + ctrls->debounce_delay = val1; + *mask |= XkbBounceKeysMask; + i += inc; + } + } + else if ((i+1<=argc && strcmp(argv[i],"feedback")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"f")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-feedback")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-f")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbAccessXFeedbackMask; + else ctrls->enabled_ctrls |= XkbAccessXFeedbackMask; + *mask |= XkbControlsEnabledMask; + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"dumbbell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-dumbbell")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_DumbBellFBMask; + else ctrls->ax_options |= XkbAX_DumbBellFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"led")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-led")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_IndicatorFBMask; + else ctrls->ax_options |= XkbAX_IndicatorFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"feature")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-feature")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_FeatureFBMask; + else ctrls->ax_options |= XkbAX_FeatureFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowwarn")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowwarn")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_SlowWarnFBMask; + else ctrls->ax_options |= XkbAX_SlowWarnFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowpress")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowpress")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_SKPressFBMask; + else ctrls->ax_options |= XkbAX_SKPressFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowaccept")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowaccept")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_SKAcceptFBMask; + else ctrls->ax_options |= XkbAX_SKAcceptFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowreject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowreject")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_SKRejectFBMask; + else ctrls->ax_options |= XkbAX_SKRejectFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowrelease")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowrelease")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_SKReleaseFBMask; + else ctrls->ax_options |= XkbAX_SKReleaseFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"bouncereject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bouncereject")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_BKRejectFBMask; + else ctrls->ax_options |= XkbAX_BKRejectFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"stickybeep")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-stickybeep")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ax_options &= ~XkbAX_StickyKeysFBMask; + else ctrls->ax_options |= XkbAX_StickyKeysFBMask; + *mask |= XkbAccessXFeedbackMask; + i += inc; + } + else break; + } + } + else if ((i+1<=argc && strcmp(argv[i],"overlay1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ov1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-overlay1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ov1")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbOverlay1Mask; + else ctrls->enabled_ctrls |= XkbOverlay1Mask; + *mask |= XkbControlsEnabledMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"overlay2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ov2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-overlay2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ov2")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbOverlay2Mask; + else ctrls->enabled_ctrls |= XkbOverlay2Mask; + *mask |= XkbControlsEnabledMask; + i += inc; + } + else if ((i+2<=argc && strcmp(argv[i],"groupswrap")==0 && 1 && (inc=2))) { + if (strcmp(argv[i+1],"redirect")==0) { + ctrls->groups_wrap &= 0x0F; + ctrls->groups_wrap |= XkbRedirectIntoRange; + } + else if (strcmp(argv[i+1],"clamp")==0) { + ctrls->groups_wrap &= 0x0F; + ctrls->groups_wrap |= XkbClampIntoRange; + } + else if (strcmp(argv[i+1],"wrap")==0) { + ctrls->groups_wrap &= 0x0F; + ctrls->groups_wrap |= XkbWrapIntoRange; + } + else return 0; + *mask |= XkbGroupsWrapMask; + i += inc; + if ((i+1<=argc && get_number(argv[i],0,255,&val1) && (inc=1))) { + ctrls->groups_wrap &= 0xF0; + ctrls->groups_wrap |= 0x0F & val1; + i += inc; + } + } + else if ((i+1<=argc && strcmp(argv[i],"ignoregrouplock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ignoregrouplock")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->enabled_ctrls &= ~XkbIgnoreGroupLockMask; + else ctrls->enabled_ctrls |= XkbIgnoreGroupLockMask; + *mask |= XkbControlsEnabledMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"nullify")==0 && (inc=1))) { + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"shift")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-shift")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~ShiftMask; + else ctrls->internal.real_mods |= ShiftMask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"lock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-lock")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~LockMask; + else ctrls->internal.real_mods |= LockMask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"control")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-control")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~ControlMask; + else ctrls->internal.real_mods |= ControlMask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod1")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~Mod1Mask; + else ctrls->internal.real_mods |= Mod1Mask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod2")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~Mod2Mask; + else ctrls->internal.real_mods |= Mod2Mask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod3")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod3")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~Mod3Mask; + else ctrls->internal.real_mods |= Mod3Mask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod4")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod4")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~Mod4Mask; + else ctrls->internal.real_mods |= Mod4Mask; + *mask |= XkbInternalModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod5")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod5")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->internal.real_mods &= ~Mod5Mask; + else ctrls->internal.real_mods |= Mod5Mask; + *mask |= XkbInternalModsMask; + i += inc; + } + else break; + } + } + else if ((i+1<=argc && strcmp(argv[i],"ignorelock")==0 && (inc=1))) { + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"shift")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-shift")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~ShiftMask; + else ctrls->ignore_lock.real_mods |= ShiftMask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"lock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-lock")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~LockMask; + else ctrls->ignore_lock.real_mods |= LockMask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"control")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-control")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~ControlMask; + else ctrls->ignore_lock.real_mods |= ControlMask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod1")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~Mod1Mask; + else ctrls->ignore_lock.real_mods |= Mod1Mask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod2")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~Mod2Mask; + else ctrls->ignore_lock.real_mods |= Mod2Mask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod3")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod3")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~Mod3Mask; + else ctrls->ignore_lock.real_mods |= Mod3Mask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod4")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod4")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~Mod4Mask; + else ctrls->ignore_lock.real_mods |= Mod4Mask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mod5")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mod5")==0 && (inc=1))) { + if (argv[i][0] == '-') ctrls->ignore_lock.real_mods &= ~Mod5Mask; + else ctrls->ignore_lock.real_mods |= Mod5Mask; + *mask |= XkbIgnoreLockModsMask; + i += inc; + } + else break; + } + } + else return 0; + } + return 1; +} + +Bool get_expire_arguments(int argc, char *argv[], XkbControlsPtr ctrls, unsigned int *mask) +{ + int inc, i = 2; + int val1; + + *mask = XkbAccessXTimeoutMask; + while (i<argc) { + if ((i+1<=argc && strcmp(argv[i],"bell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"b")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-b")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=bell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=b")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbAudibleBellMask; + ctrls->axt_ctrls_values &= ~XkbAudibleBellMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbAudibleBellMask; + ctrls->axt_ctrls_values &= ~XkbAudibleBellMask; + } + else { + ctrls->axt_ctrls_mask |= XkbAudibleBellMask; + ctrls->axt_ctrls_values |= XkbAudibleBellMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"repeatkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"r")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-repeatkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-r")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=repeatkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=r")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbRepeatKeysMask; + ctrls->axt_ctrls_values &= ~XkbRepeatKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbRepeatKeysMask; + ctrls->axt_ctrls_values &= ~XkbRepeatKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbRepeatKeysMask; + ctrls->axt_ctrls_values |= XkbRepeatKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mousekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"m")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mousekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-m")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=mousekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=m")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbMouseKeysMask; + ctrls->axt_ctrls_values &= ~XkbMouseKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbMouseKeysMask; + ctrls->axt_ctrls_values &= ~XkbMouseKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbMouseKeysMask; + ctrls->axt_ctrls_values |= XkbMouseKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"mousekeysaccel")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ma")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-mousekeysaccel")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ma")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=mousekeysaccel")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=ma")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbMouseKeysAccelMask; + ctrls->axt_ctrls_values &= ~XkbMouseKeysAccelMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbMouseKeysAccelMask; + ctrls->axt_ctrls_values &= ~XkbMouseKeysAccelMask; + } + else { + ctrls->axt_ctrls_mask |= XkbMouseKeysAccelMask; + ctrls->axt_ctrls_values |= XkbMouseKeysAccelMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"accessx")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"a")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-accessx")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-a")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=accessx")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=a")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbAccessXKeysMask; + ctrls->axt_ctrls_values &= ~XkbAccessXKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbAccessXKeysMask; + ctrls->axt_ctrls_values &= ~XkbAccessXKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbAccessXKeysMask; + ctrls->axt_ctrls_values |= XkbAccessXKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"sticky")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"st")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-sticky")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-st")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=sticky")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=st")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbStickyKeysMask; + ctrls->axt_ctrls_values &= ~XkbStickyKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbStickyKeysMask; + ctrls->axt_ctrls_values &= ~XkbStickyKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbStickyKeysMask; + ctrls->axt_ctrls_values |= XkbStickyKeysMask; + } + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"twokey")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-twokey")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=twokey")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_TwoKeysMask; + ctrls->axt_opts_values &= ~XkbAX_TwoKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_TwoKeysMask; + ctrls->axt_opts_values &= ~XkbAX_TwoKeysMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_TwoKeysMask; + ctrls->axt_opts_values |= XkbAX_TwoKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"latchlock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-latchlock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=latchlock")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_LatchToLockMask; + ctrls->axt_opts_values &= ~XkbAX_LatchToLockMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_LatchToLockMask; + ctrls->axt_opts_values &= ~XkbAX_LatchToLockMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_LatchToLockMask; + ctrls->axt_opts_values |= XkbAX_LatchToLockMask; + } + i += inc; + } + else break; + } + } + else if ((i+1<=argc && strcmp(argv[i],"slowkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"sl")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-sl")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowkeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=sl")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbSlowKeysMask; + ctrls->axt_ctrls_values &= ~XkbSlowKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbSlowKeysMask; + ctrls->axt_ctrls_values &= ~XkbSlowKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbSlowKeysMask; + ctrls->axt_ctrls_values |= XkbSlowKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"bouncekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"bo")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bouncekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bo")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=bouncekeys")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=bo")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbBounceKeysMask; + ctrls->axt_ctrls_values &= ~XkbBounceKeysMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbBounceKeysMask; + ctrls->axt_ctrls_values &= ~XkbBounceKeysMask; + } + else { + ctrls->axt_ctrls_mask |= XkbBounceKeysMask; + ctrls->axt_ctrls_values |= XkbBounceKeysMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"feedback")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"f")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-feedback")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-f")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=feedback")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=f")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbAccessXFeedbackMask; + ctrls->axt_ctrls_values &= ~XkbAccessXFeedbackMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbAccessXFeedbackMask; + ctrls->axt_ctrls_values &= ~XkbAccessXFeedbackMask; + } + else { + ctrls->axt_ctrls_mask |= XkbAccessXFeedbackMask; + ctrls->axt_ctrls_values |= XkbAccessXFeedbackMask; + } + i += inc; + while (1) { + if ((i+1<=argc && strcmp(argv[i],"dumbbell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-dumbbell")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=dumbbell")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_DumbBellFBMask; + ctrls->axt_opts_values &= ~XkbAX_DumbBellFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_DumbBellFBMask; + ctrls->axt_opts_values &= ~XkbAX_DumbBellFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_DumbBellFBMask; + ctrls->axt_opts_values |= XkbAX_DumbBellFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"led")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-led")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=led")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_IndicatorFBMask; + ctrls->axt_opts_values &= ~XkbAX_IndicatorFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_IndicatorFBMask; + ctrls->axt_opts_values &= ~XkbAX_IndicatorFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_IndicatorFBMask; + ctrls->axt_opts_values |= XkbAX_IndicatorFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"feature")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-feature")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=feature")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_FeatureFBMask; + ctrls->axt_opts_values &= ~XkbAX_FeatureFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_FeatureFBMask; + ctrls->axt_opts_values &= ~XkbAX_FeatureFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_FeatureFBMask; + ctrls->axt_opts_values |= XkbAX_FeatureFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowwarn")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowwarn")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowwarn")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_SlowWarnFBMask; + ctrls->axt_opts_values &= ~XkbAX_SlowWarnFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_SlowWarnFBMask; + ctrls->axt_opts_values &= ~XkbAX_SlowWarnFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_SlowWarnFBMask; + ctrls->axt_opts_values |= XkbAX_SlowWarnFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowpress")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowpress")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowpress")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_SKPressFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKPressFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_SKPressFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKPressFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_SKPressFBMask; + ctrls->axt_opts_values |= XkbAX_SKPressFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowaccept")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowaccept")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowaccept")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_SKAcceptFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKAcceptFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_SKAcceptFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKAcceptFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_SKAcceptFBMask; + ctrls->axt_opts_values |= XkbAX_SKAcceptFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowreject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowreject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowreject")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_SKRejectFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKRejectFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_SKRejectFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKRejectFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_SKRejectFBMask; + ctrls->axt_opts_values |= XkbAX_SKRejectFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"slowrelease")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-slowrelease")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=slowrelease")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_SKReleaseFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKReleaseFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_SKReleaseFBMask; + ctrls->axt_opts_values &= ~XkbAX_SKReleaseFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_SKReleaseFBMask; + ctrls->axt_opts_values |= XkbAX_SKReleaseFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"bouncereject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-bouncereject")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=bouncereject")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_BKRejectFBMask; + ctrls->axt_opts_values &= ~XkbAX_BKRejectFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_BKRejectFBMask; + ctrls->axt_opts_values &= ~XkbAX_BKRejectFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_BKRejectFBMask; + ctrls->axt_opts_values |= XkbAX_BKRejectFBMask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"stickybeep")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-stickybeep")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=stickybeep")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_opts_mask |= XkbAX_StickyKeysFBMask; + ctrls->axt_opts_values &= ~XkbAX_StickyKeysFBMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_opts_mask &= ~XkbAX_StickyKeysFBMask; + ctrls->axt_opts_values &= ~XkbAX_StickyKeysFBMask; + } + else { + ctrls->axt_opts_mask |= XkbAX_StickyKeysFBMask; + ctrls->axt_opts_values |= XkbAX_StickyKeysFBMask; + } + i += inc; + } + else break; + } + } + else if ((i+1<=argc && strcmp(argv[i],"overlay1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ov1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-overlay1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ov1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=overlay1")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=ov1")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbOverlay1Mask; + ctrls->axt_ctrls_values &= ~XkbOverlay1Mask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbOverlay1Mask; + ctrls->axt_ctrls_values &= ~XkbOverlay1Mask; + } + else { + ctrls->axt_ctrls_mask |= XkbOverlay1Mask; + ctrls->axt_ctrls_values |= XkbOverlay1Mask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"overlay2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"ov2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-overlay2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ov2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=overlay2")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=ov2")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbOverlay2Mask; + ctrls->axt_ctrls_values &= ~XkbOverlay2Mask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbOverlay2Mask; + ctrls->axt_ctrls_values &= ~XkbOverlay2Mask; + } + else { + ctrls->axt_ctrls_mask |= XkbOverlay2Mask; + ctrls->axt_ctrls_values |= XkbOverlay2Mask; + } + i += inc; + } + else if ((i+1<=argc && strcmp(argv[i],"ignoregrouplock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"-ignoregrouplock")==0 && (inc=1)) || + (i+1<=argc && strcmp(argv[i],"=ignoregrouplock")==0 && (inc=1))) { + if (argv[i][0] == '-') { + ctrls->axt_ctrls_mask |= XkbIgnoreGroupLockMask; + ctrls->axt_ctrls_values &= ~XkbIgnoreGroupLockMask; + } + else if (argv[i][0] == '=') { + ctrls->axt_ctrls_mask &= ~XkbIgnoreGroupLockMask; + ctrls->axt_ctrls_values &= ~XkbIgnoreGroupLockMask; + } + else { + ctrls->axt_ctrls_mask |= XkbIgnoreGroupLockMask; + ctrls->axt_ctrls_values |= XkbIgnoreGroupLockMask; + } + i += inc; + } + else if ((i+1<=argc && get_number(argv[i],0,65535,&val1) && (inc=1))) { + ctrls->ax_timeout = val1; + i += inc; + } + else return 0; + } + return 1; +} @@ -0,0 +1,283 @@ +/* +Copyright (c) 2000, 2002 Stephen Montgomery-Smith +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Stephen Montgomery-Smith nor the names of his + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE STEPHEN MONTGOMERY-SMITH AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL STEPHEN MONTGOMERY-SMITH OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "xkbset.h" + +void print_controls(XkbControlsPtr ctrls) { + int i; + + printf("Audible Bell = %s\n", (ctrls->enabled_ctrls & XkbAudibleBellMask)?"On":"Off"); + printf("Repeat Keys = %s\n", (ctrls->enabled_ctrls & XkbRepeatKeysMask)?"On":"Off"); + printf("Repeat Delay = %d\n", ctrls->repeat_delay); + printf("Repeat Interval = %d\n", ctrls->repeat_interval); + printf("Per Key Repeat ="); + for (i=0;i<32;i++) { + if (i%8==0) printf("\n "); + printf("%x%x",ctrls->per_key_repeat[i]>>4,ctrls->per_key_repeat[i]&15); + } + printf("\n"); + printf("Mouse-Keys = %s\n", (ctrls->enabled_ctrls & XkbMouseKeysMask)?"On":"Off"); + printf("Mouse-Keys Default Button = %d\n", ctrls->mk_dflt_btn); + printf("Mouse-Keys Acceleration = %s\n", (ctrls->enabled_ctrls & XkbMouseKeysAccelMask)?"On":"Off"); + printf("Mouse-Keys Acceleration Delay = %d\n", ctrls->mk_delay); + printf("Mouse-Keys Acceleration Interval = %d\n", ctrls->mk_interval); + printf("Mouse-Keys Acceleration Time to Max = %d\n", ctrls->mk_time_to_max); + printf("Mouse-Keys Acceleration Max Speed = %d\n", ctrls->mk_max_speed); + printf("Mouse-Keys Acceleration Curve = %d\n", ctrls->mk_curve); + printf("Accessibility Features (AccessX) = %s\n", (ctrls->enabled_ctrls & XkbAccessXKeysMask)?"On":"Off"); + printf("Sticky-Keys = %s\n", (ctrls->enabled_ctrls & XkbStickyKeysMask)?"On":"Off"); + printf("Two Keys Mask = %s\n", (ctrls->ax_options & XkbAX_TwoKeysMask)?"On":"Off"); + printf("Latch to Lock Mask = %s\n", (ctrls->ax_options & XkbAX_LatchToLockMask)?"On":"Off"); + printf("Slow-Keys = %s\n", (ctrls->enabled_ctrls & XkbSlowKeysMask)?"On":"Off"); + printf("Slow Keys Delay = %d\n", ctrls->slow_keys_delay); + printf("Bounce-Keys = %s\n", (ctrls->enabled_ctrls & XkbBounceKeysMask)?"On":"Off"); + printf("Debounce Delay = %d\n", ctrls->debounce_delay); + printf("AccessX Feedback = %s\n", (ctrls->enabled_ctrls & XkbAccessXFeedbackMask)?"On":"Off"); + printf("Use Fixed Pitch Bell = %s\n", (ctrls->ax_options & XkbAX_DumbBellFBMask)?"On":"Off"); + printf("Beep when LED changes = %s\n", (ctrls->ax_options & XkbAX_IndicatorFBMask)?"On":"Off"); + printf("Beep on Controls on/off = %s\n", (ctrls->ax_options & XkbAX_FeatureFBMask)?"On":"Off"); + printf("Beep if Slow/Bounce-Keys about to be turned off = %s\n", (ctrls->ax_options & XkbAX_SlowWarnFBMask)?"On":"Off"); + printf("Beep on Slow-Key Press = %s\n", (ctrls->ax_options & XkbAX_SKPressFBMask)?"On":"Off"); + printf("Beep on Slow-Key Accept = %s\n", (ctrls->ax_options & XkbAX_SKAcceptFBMask)?"On":"Off"); + printf("Beep on Slow-Key Reject = %s\n", (ctrls->ax_options & XkbAX_SKRejectFBMask)?"On":"Off"); + printf("Beep on Slow-Key Release = %s\n", (ctrls->ax_options & XkbAX_SKReleaseFBMask)?"On":"Off"); + printf("Beep on Bounce-Key Reject = %s\n", (ctrls->ax_options & XkbAX_BKRejectFBMask)?"On":"Off"); + printf("Beep on Sticky-Key Actions = %s\n", (ctrls->ax_options & XkbAX_StickyKeysFBMask)?"On":"Off"); + printf("Keyboard Overlay 1 = %s\n", (ctrls->enabled_ctrls & XkbOverlay1Mask)?"On":"Off"); + printf("Keyboard Overlay 2 = %s\n", (ctrls->enabled_ctrls & XkbOverlay2Mask)?"On":"Off"); + printf("Groups Wrap Type = "); + if ((ctrls->groups_wrap & 0xF0) == XkbRedirectIntoRange) printf("redirect\n"); + else if ((ctrls->groups_wrap & 0xF0) == XkbClampIntoRange) printf("clamp\n"); + else if ((ctrls->groups_wrap & 0xF0) == XkbWrapIntoRange) printf("wrap\n"); + else printf("undefined\n"); + printf("Groups Wrap Value = %d\n", ctrls->groups_wrap & 0x0F); + printf("Ignore Group Lock = %s\n", (ctrls->enabled_ctrls & XkbIgnoreGroupLockMask)?"On":"Off"); + printf("Nullify Shift = %s\n", (ctrls->internal.real_mods & ShiftMask)?"On":"Off"); + printf("Nullify Caps-Lock = %s\n", (ctrls->internal.real_mods & LockMask)?"On":"Off"); + printf("Nullify Control = %s\n", (ctrls->internal.real_mods & ControlMask)?"On":"Off"); + printf("Nullify Mod1 = %s\n", (ctrls->internal.real_mods & Mod1Mask)?"On":"Off"); + printf("Nullify Mod2 = %s\n", (ctrls->internal.real_mods & Mod2Mask)?"On":"Off"); + printf("Nullify Mod3 = %s\n", (ctrls->internal.real_mods & Mod3Mask)?"On":"Off"); + printf("Nullify Mod4 = %s\n", (ctrls->internal.real_mods & Mod4Mask)?"On":"Off"); + printf("Nullify Mod5 = %s\n", (ctrls->internal.real_mods & Mod5Mask)?"On":"Off"); + printf("Ignore Lock of Shift = %s\n", (ctrls->ignore_lock.real_mods & ShiftMask)?"On":"Off"); + printf("Ignore Lock of Caps-Lock = %s\n", (ctrls->ignore_lock.real_mods & LockMask)?"On":"Off"); + printf("Ignore Lock of Control = %s\n", (ctrls->ignore_lock.real_mods & ControlMask)?"On":"Off"); + printf("Ignore Lock of Mod1 = %s\n", (ctrls->ignore_lock.real_mods & Mod1Mask)?"On":"Off"); + printf("Ignore Lock of Mod2 = %s\n", (ctrls->ignore_lock.real_mods & Mod2Mask)?"On":"Off"); + printf("Ignore Lock of Mod3 = %s\n", (ctrls->ignore_lock.real_mods & Mod3Mask)?"On":"Off"); + printf("Ignore Lock of Mod4 = %s\n", (ctrls->ignore_lock.real_mods & Mod4Mask)?"On":"Off"); + printf("Ignore Lock of Mod5 = %s\n", (ctrls->ignore_lock.real_mods & Mod5Mask)?"On":"Off"); + +} + +void print_controls_in_line(XkbControlsPtr ctrls) { + int i; + char *s; + int print_nibble; + + printf("xkbset"); + printf(" %s","-b" + ((ctrls->enabled_ctrls & XkbAudibleBellMask) != 0)); + printf(" %s","-r" + ((ctrls->enabled_ctrls & XkbRepeatKeysMask) != 0)); + printf(" rate"); + printf(" %d", ctrls->repeat_delay); + printf(" %d", ctrls->repeat_interval); + printf(" perkeyrepeat"); + printf(" "); + for (i=0;i<32;i++) + printf("%x%x",ctrls->per_key_repeat[i]>>4,ctrls->per_key_repeat[i]&15); + printf(" %s","-m" + ((ctrls->enabled_ctrls & XkbMouseKeysMask) != 0)); + printf(" %d", ctrls->mk_dflt_btn); + printf(" %s","-ma" + ((ctrls->enabled_ctrls & XkbMouseKeysAccelMask) != 0)); + printf(" %d", ctrls->mk_delay); + printf(" %d", ctrls->mk_interval); + printf(" %d", ctrls->mk_time_to_max); + printf(" %d", ctrls->mk_max_speed); + printf(" %d", ctrls->mk_curve); + printf(" %s","-a" + ((ctrls->enabled_ctrls & XkbAccessXKeysMask) != 0)); + printf(" %s","-st" + ((ctrls->enabled_ctrls & XkbStickyKeysMask) != 0)); + printf(" %s","-twokey" + ((ctrls->ax_options & XkbAX_TwoKeysMask) != 0)); + printf(" %s","-latchlock" + ((ctrls->ax_options & XkbAX_LatchToLockMask) != 0)); + printf(" %s","-sl" + ((ctrls->enabled_ctrls & XkbSlowKeysMask) != 0)); + printf(" %d", ctrls->slow_keys_delay); + printf(" %s","-bo" + ((ctrls->enabled_ctrls & XkbBounceKeysMask) != 0)); + printf(" %d", ctrls->debounce_delay); + printf(" %s","-f" + ((ctrls->enabled_ctrls & XkbAccessXFeedbackMask) != 0)); + printf(" %s","-dumbbell" + ((ctrls->ax_options & XkbAX_DumbBellFBMask) != 0)); + printf(" %s","-led" + ((ctrls->ax_options & XkbAX_IndicatorFBMask) != 0)); + printf(" %s","-feature" + ((ctrls->ax_options & XkbAX_FeatureFBMask) != 0)); + printf(" %s","-slowwarn" + ((ctrls->ax_options & XkbAX_SlowWarnFBMask) != 0)); + printf(" %s","-slowpress" + ((ctrls->ax_options & XkbAX_SKPressFBMask) != 0)); + printf(" %s","-slowaccept" + ((ctrls->ax_options & XkbAX_SKAcceptFBMask) != 0)); + printf(" %s","-slowreject" + ((ctrls->ax_options & XkbAX_SKRejectFBMask) != 0)); + printf(" %s","-slowrelease" + ((ctrls->ax_options & XkbAX_SKReleaseFBMask) != 0)); + printf(" %s","-bouncereject" + ((ctrls->ax_options & XkbAX_BKRejectFBMask) != 0)); + printf(" %s","-stickybeep" + ((ctrls->ax_options & XkbAX_StickyKeysFBMask) != 0)); + printf(" %s","-ov1" + ((ctrls->enabled_ctrls & XkbOverlay1Mask) != 0)); + printf(" %s","-ov2" + ((ctrls->enabled_ctrls & XkbOverlay2Mask) != 0)); + s = NULL; + if ((ctrls->groups_wrap & 0xF0)== XkbRedirectIntoRange) s = "redirect"; + else if ((ctrls->groups_wrap & 0xF0)== XkbClampIntoRange) s = "clamp"; + else if ((ctrls->groups_wrap & 0xF0)== XkbWrapIntoRange) s = "wrap"; + if (s!=NULL) printf(" groupswrap %s",s); + print_nibble = 0; + if ((ctrls->groups_wrap & 0xF0)== XkbRedirectIntoRange) print_nibble = 1; + else if ((ctrls->groups_wrap & 0xF0)== XkbClampIntoRange) print_nibble = 1; + else if ((ctrls->groups_wrap & 0xF0)== XkbWrapIntoRange) print_nibble = 1; + if (print_nibble) printf(" %d", ctrls->groups_wrap & 0x0F); + printf(" %s","-ignoregrouplock" + ((ctrls->enabled_ctrls & XkbIgnoreGroupLockMask) != 0)); + printf(" nullify"); + printf(" %s","-shift" + ((ctrls->internal.real_mods & ShiftMask) != 0)); + printf(" %s","-lock" + ((ctrls->internal.real_mods & LockMask) != 0)); + printf(" %s","-control" + ((ctrls->internal.real_mods & ControlMask) != 0)); + printf(" %s","-mod1" + ((ctrls->internal.real_mods & Mod1Mask) != 0)); + printf(" %s","-mod2" + ((ctrls->internal.real_mods & Mod2Mask) != 0)); + printf(" %s","-mod3" + ((ctrls->internal.real_mods & Mod3Mask) != 0)); + printf(" %s","-mod4" + ((ctrls->internal.real_mods & Mod4Mask) != 0)); + printf(" %s","-mod5" + ((ctrls->internal.real_mods & Mod5Mask) != 0)); + printf(" ignorelock"); + printf(" %s","-shift" + ((ctrls->ignore_lock.real_mods & ShiftMask) != 0)); + printf(" %s","-lock" + ((ctrls->ignore_lock.real_mods & LockMask) != 0)); + printf(" %s","-control" + ((ctrls->ignore_lock.real_mods & ControlMask) != 0)); + printf(" %s","-mod1" + ((ctrls->ignore_lock.real_mods & Mod1Mask) != 0)); + printf(" %s","-mod2" + ((ctrls->ignore_lock.real_mods & Mod2Mask) != 0)); + printf(" %s","-mod3" + ((ctrls->ignore_lock.real_mods & Mod3Mask) != 0)); + printf(" %s","-mod4" + ((ctrls->ignore_lock.real_mods & Mod4Mask) != 0)); + printf(" %s","-mod5" + ((ctrls->ignore_lock.real_mods & Mod5Mask) != 0)); + + printf("\n"); +} + +void print_expire_controls(XkbControlsPtr ctrls) { + printf("AccessX Timeout = %d\n",ctrls->ax_timeout); + printf("Upon Expiry Audible Bell will be: %s\n", + (ctrls->axt_ctrls_mask & XkbAudibleBellMask)?((ctrls->axt_ctrls_values & XkbAudibleBellMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Repeat Keys will be: %s\n", + (ctrls->axt_ctrls_mask & XkbRepeatKeysMask)?((ctrls->axt_ctrls_values & XkbRepeatKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Mouse-Keys will be: %s\n", + (ctrls->axt_ctrls_mask & XkbMouseKeysMask)?((ctrls->axt_ctrls_values & XkbMouseKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Mouse-Keys Acceleration will be: %s\n", + (ctrls->axt_ctrls_mask & XkbMouseKeysAccelMask)?((ctrls->axt_ctrls_values & XkbMouseKeysAccelMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Accessibility Features (AccessX) will be: %s\n", + (ctrls->axt_ctrls_mask & XkbAccessXKeysMask)?((ctrls->axt_ctrls_values & XkbAccessXKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Sticky-Keys will be: %s\n", + (ctrls->axt_ctrls_mask & XkbStickyKeysMask)?((ctrls->axt_ctrls_values & XkbStickyKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Two Keys Mask will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_TwoKeysMask)?((ctrls->axt_opts_values & XkbAX_TwoKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Latch to Lock Mask will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_LatchToLockMask)?((ctrls->axt_opts_values & XkbAX_LatchToLockMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Slow-Keys will be: %s\n", + (ctrls->axt_ctrls_mask & XkbSlowKeysMask)?((ctrls->axt_ctrls_values & XkbSlowKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Bounce-Keys will be: %s\n", + (ctrls->axt_ctrls_mask & XkbBounceKeysMask)?((ctrls->axt_ctrls_values & XkbBounceKeysMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry AccessX Feedback will be: %s\n", + (ctrls->axt_ctrls_mask & XkbAccessXFeedbackMask)?((ctrls->axt_ctrls_values & XkbAccessXFeedbackMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Use Fixed Pitch Bell will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_DumbBellFBMask)?((ctrls->axt_opts_values & XkbAX_DumbBellFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep when LED changes will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_IndicatorFBMask)?((ctrls->axt_opts_values & XkbAX_IndicatorFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Controls on/off will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_FeatureFBMask)?((ctrls->axt_opts_values & XkbAX_FeatureFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep if Slow/Bounce-Keys about to be turned off will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_SlowWarnFBMask)?((ctrls->axt_opts_values & XkbAX_SlowWarnFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Slow-Key Press will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_SKPressFBMask)?((ctrls->axt_opts_values & XkbAX_SKPressFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Slow-Key Accept will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_SKAcceptFBMask)?((ctrls->axt_opts_values & XkbAX_SKAcceptFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Slow-Key Reject will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_SKRejectFBMask)?((ctrls->axt_opts_values & XkbAX_SKRejectFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Slow-Key Release will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_SKReleaseFBMask)?((ctrls->axt_opts_values & XkbAX_SKReleaseFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Bounce-Key Reject will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_BKRejectFBMask)?((ctrls->axt_opts_values & XkbAX_BKRejectFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Beep on Sticky-Key Actions will be: %s\n", + (ctrls->axt_opts_mask & XkbAX_StickyKeysFBMask)?((ctrls->axt_opts_values & XkbAX_StickyKeysFBMask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Keyboard Overlay 1 will be: %s\n", + (ctrls->axt_ctrls_mask & XkbOverlay1Mask)?((ctrls->axt_ctrls_values & XkbOverlay1Mask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Keyboard Overlay 2 will be: %s\n", + (ctrls->axt_ctrls_mask & XkbOverlay2Mask)?((ctrls->axt_ctrls_values & XkbOverlay2Mask)?"On":"Off"):"Unchanged"); + printf("Upon Expiry Ignore Group Lock will be: %s\n", + (ctrls->axt_ctrls_mask & XkbIgnoreGroupLockMask)?((ctrls->axt_ctrls_values & XkbIgnoreGroupLockMask)?"On":"Off"):"Unchanged"); + +} + +void print_expire_controls_in_line(XkbControlsPtr ctrls) { + printf("xkbset exp %d",ctrls->ax_timeout); + printf(" %sb", + (ctrls->axt_ctrls_mask & XkbAudibleBellMask)?((ctrls->axt_ctrls_values & XkbAudibleBellMask)?"":"-"):"="); + printf(" %sr", + (ctrls->axt_ctrls_mask & XkbRepeatKeysMask)?((ctrls->axt_ctrls_values & XkbRepeatKeysMask)?"":"-"):"="); + printf(" %sm", + (ctrls->axt_ctrls_mask & XkbMouseKeysMask)?((ctrls->axt_ctrls_values & XkbMouseKeysMask)?"":"-"):"="); + printf(" %sma", + (ctrls->axt_ctrls_mask & XkbMouseKeysAccelMask)?((ctrls->axt_ctrls_values & XkbMouseKeysAccelMask)?"":"-"):"="); + printf(" %sa", + (ctrls->axt_ctrls_mask & XkbAccessXKeysMask)?((ctrls->axt_ctrls_values & XkbAccessXKeysMask)?"":"-"):"="); + printf(" %sst", + (ctrls->axt_ctrls_mask & XkbStickyKeysMask)?((ctrls->axt_ctrls_values & XkbStickyKeysMask)?"":"-"):"="); + printf(" %stwokey", + (ctrls->axt_opts_mask & XkbAX_TwoKeysMask)?((ctrls->axt_opts_values & XkbAX_TwoKeysMask)?"":"-"):"="); + printf(" %slatchlock", + (ctrls->axt_opts_mask & XkbAX_LatchToLockMask)?((ctrls->axt_opts_values & XkbAX_LatchToLockMask)?"":"-"):"="); + printf(" %ssl", + (ctrls->axt_ctrls_mask & XkbSlowKeysMask)?((ctrls->axt_ctrls_values & XkbSlowKeysMask)?"":"-"):"="); + printf(" %sbo", + (ctrls->axt_ctrls_mask & XkbBounceKeysMask)?((ctrls->axt_ctrls_values & XkbBounceKeysMask)?"":"-"):"="); + printf(" %sf", + (ctrls->axt_ctrls_mask & XkbAccessXFeedbackMask)?((ctrls->axt_ctrls_values & XkbAccessXFeedbackMask)?"":"-"):"="); + printf(" %sdumbbell", + (ctrls->axt_opts_mask & XkbAX_DumbBellFBMask)?((ctrls->axt_opts_values & XkbAX_DumbBellFBMask)?"":"-"):"="); + printf(" %sled", + (ctrls->axt_opts_mask & XkbAX_IndicatorFBMask)?((ctrls->axt_opts_values & XkbAX_IndicatorFBMask)?"":"-"):"="); + printf(" %sfeature", + (ctrls->axt_opts_mask & XkbAX_FeatureFBMask)?((ctrls->axt_opts_values & XkbAX_FeatureFBMask)?"":"-"):"="); + printf(" %sslowwarn", + (ctrls->axt_opts_mask & XkbAX_SlowWarnFBMask)?((ctrls->axt_opts_values & XkbAX_SlowWarnFBMask)?"":"-"):"="); + printf(" %sslowpress", + (ctrls->axt_opts_mask & XkbAX_SKPressFBMask)?((ctrls->axt_opts_values & XkbAX_SKPressFBMask)?"":"-"):"="); + printf(" %sslowaccept", + (ctrls->axt_opts_mask & XkbAX_SKAcceptFBMask)?((ctrls->axt_opts_values & XkbAX_SKAcceptFBMask)?"":"-"):"="); + printf(" %sslowreject", + (ctrls->axt_opts_mask & XkbAX_SKRejectFBMask)?((ctrls->axt_opts_values & XkbAX_SKRejectFBMask)?"":"-"):"="); + printf(" %sslowrelease", + (ctrls->axt_opts_mask & XkbAX_SKReleaseFBMask)?((ctrls->axt_opts_values & XkbAX_SKReleaseFBMask)?"":"-"):"="); + printf(" %sbouncereject", + (ctrls->axt_opts_mask & XkbAX_BKRejectFBMask)?((ctrls->axt_opts_values & XkbAX_BKRejectFBMask)?"":"-"):"="); + printf(" %sstickybeep", + (ctrls->axt_opts_mask & XkbAX_StickyKeysFBMask)?((ctrls->axt_opts_values & XkbAX_StickyKeysFBMask)?"":"-"):"="); + printf(" %sov1", + (ctrls->axt_ctrls_mask & XkbOverlay1Mask)?((ctrls->axt_ctrls_values & XkbOverlay1Mask)?"":"-"):"="); + printf(" %sov2", + (ctrls->axt_ctrls_mask & XkbOverlay2Mask)?((ctrls->axt_ctrls_values & XkbOverlay2Mask)?"":"-"):"="); + printf(" %signoregrouplock", + (ctrls->axt_ctrls_mask & XkbIgnoreGroupLockMask)?((ctrls->axt_ctrls_values & XkbIgnoreGroupLockMask)?"":"-"):"="); + + printf("\n"); +} @@ -0,0 +1,167 @@ +/* +Copyright (c) 2000, 2002 Stephen Montgomery-Smith +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Stephen Montgomery-Smith nor the names of his + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE STEPHEN MONTGOMERY-SMITH AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL STEPHEN MONTGOMERY-SMITH OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "xkbset.h" + +void print_usage() +{ + printf("Usage: To set or unset various options:\n"); + printf("\n"); + printf(" xkbset <options>\n"); + printf("\n"); + printf("where <options> may be all or any of (the '-' switches the feature off, \n"); + printf("otherwise it is switched on):\n"); + printf(" \n"); + printf("To switch the bell on or off:\n"); + printf(" \n"); + printf(" [-]{bell|b}\n"); + printf(" \n"); + printf("To switch one key to autorepeat or not:\n"); + printf(" \n"); + printf(" [-]{repeatkeys <per_key_repeat>|r <per_key_repeat>}\n"); + printf(" \n"); + printf("To send a hex mask for all keys to autorepeat or not\n"); + printf(" \n"); + printf(" perkeyrepeat <per_key_repeat>\n"); + printf(" \n"); + printf("To switch autorepeat on or off, and optionally set the delay before\n"); + printf("the first repeat and the interval between repeats (times in milliseconds):\n"); + printf(" \n"); + printf(" [-]{repeatkeys|r} [rate <repeat_delay> [<repeat_interval>]]\n"); + printf(" \n"); + printf("To switch mousekeys on or off, and optionally set the default\n"); + printf("button (whatever that is):\n"); + printf(" \n"); + printf(" [-]{mousekeys|m} [<mk_dflt_btn>]\n"); + printf(" \n"); + printf("To switch mousekeys acceleration on or off, and optionally set\n"); + printf("the acceleration characteristics:\n"); + printf(" \n"); + printf(" [-]{mousekeysaccel|ma} [<mk_delay> <mk_interval> <mk_time_to_max> \n"); + printf(" <mk_max_speed> <mk_curve>]\n"); + printf(" \n"); + printf("To switch AccessX on (so pressing shift five times starts sticky keys\n"); + printf("and pressing the shift key down 8 seconds starts slow keys):\n"); + printf(" \n"); + printf(" [-]{accessx|a}\n"); + printf(" \n"); + printf("To switch sticky keys on or off, and optionally set or reset:\n"); + printf("() two keys pressed at the same time stops sticky keys;\n"); + printf("() a modifier pressed twice will be locked:\n"); + printf(" \n"); + printf(" [-]{sticky|st} [[-]twokey|[-]latchlock]...\n"); + printf(" \n"); + printf("To switch on slowkeys, and optionally set the slow key delay (in\n"); + printf("milliseconds):\n"); + printf(" \n"); + printf(" [-]{slowkeys|sl} [<slow_keys_delay>]\n"); + printf(" \n"); + printf("To switch on bouncekeys, and optionally set the time (in milliseconds) for\n"); + printf("which if the key is pressed again in that time it will not work:\n"); + printf(" \n"); + printf(" [-]{bouncekeys|bo} [<debounce_delay>]\n"); + printf(" \n"); + printf("To switch on audible feedback, and optionally set which features\n"); + printf("cause the feedback (note [-]feature means that switching\n"); + printf("one of the AccessX features on of off causes feedback):\n"); + printf(" \n"); + printf(" [-]{feedback|f} [[-]dumbbell|[-]led|[-]feature|[-]slowwarn|\n"); + printf(" [-]slowpress|[-]slowaccept|[-]slowreject|[-]slowrelease|\n"); + printf(" [-]bouncereject|[-]stickybeep]...\n"); + printf(" \n"); + printf("To switch keyboard overlays 1 or 2 on or off:\n"); + printf(" \n"); + printf(" [-]{overlay1|ov1}\n"); + printf(" [-]{overlay2|ov2}\n"); + printf(" \n"); + printf("To select the group wrap type (now what is that)?\n"); + printf(" \n"); + printf(" groupswrap {redirect|clamp|wrap} [<groups_wrap>]\n"); + printf(" \n"); + printf("What is this?\n"); + printf(" \n"); + printf(" [-]ignoregrouplock\n"); + printf(" \n"); + printf("To cause some of the key modifiers (like shift, num-lock=mod2, etc)\n"); + printf("to not work:\n"); + printf(" \n"); + printf(" nullify [[-]shift|[-]lock|[-]control|[-]mod1|[-]mod2|[-]mod3|[-]mod4|\n"); + printf(" [-]mod5]...\n"); + printf(" \n"); + printf("What is this?\n"); + printf(" \n"); + printf(" ignorelock [[-]shift|[-]lock|[-]control|[-]mod1|[-]mod2|[-]mod3|\n"); + printf(" [-]mod4|[-]mod5]...\n"); + printf("\n"); + printf("\n"); + printf("\n"); + printf("To set the AccessX expire controls:\n"); + printf("\n"); + printf(" xkbset exp <options>\n"); + printf("\n"); + printf("where <options> may be all or any of (<ax_timeout> is the timeout (in\n"); + printf("seconds) after which no user activity on X will cause the expiry; '-'\n"); + printf("indicates the feature will be switched off, '=' incicates the feature\n"); + printf("will be left unchanged, otherwise it will be switched on):\n"); + printf("\n"); + printf(" <ax_timeout>\n"); + printf(" [-|=]{bell|b}\n"); + printf(" [-|=]{repeatkeys|r}\n"); + printf(" [-|=]{mousekeys|m}\n"); + printf(" [-|=]{mousekeysaccel|ma}\n"); + printf(" [-|=]{accessx|a}\n"); + printf(" [-|=]{sticky|st} [[-|=]twokey|[-|=]latchlock]...\n"); + printf(" [-|=]{slowkeys|sl}\n"); + printf(" [-|=]{bouncekeys|bo}\n"); + printf(" [-|=]{feedback|f} [[-|=]dumbbell|[-|=]led|[-|=]feature|[-|=]slowwarn|\n"); + printf(" [-|=]slowpress|[-|=]slowaccept|[-|=]slowreject|[-|=]slowrelease|\n"); + printf(" [-|=]bouncereject|[-|=]stickybeep]...\n"); + printf(" [-|=]{overlay1|ov1}\n"); + printf(" [-|=]{overlay2|ov2}\n"); + printf(" [-|=]ignoregrouplock\n"); + printf("\n"); + printf("To see the current values of the controls:\n"); + printf("\n"); + printf(" xkbset q\n"); + printf("\n"); + printf("To see the current values of what controls will expire:\n"); + printf("\n"); + printf(" xkbset q exp\n"); + printf("\n"); + printf("To have these values written as a command line:\n"); + printf("\n"); + printf(" xkbset w [exp]\n"); + printf("\n"); + printf("To print this help message\n"); + printf("\n"); + printf(" xkbset [h]\n"); + printf("\n"); + +} |