summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-05-17 15:48:43 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-05-17 15:52:12 +1000
commita536adf036863bec5913ff89f4bab0ead6cca660 (patch)
treeb498beea3866a0e84f45ba79bb49bc8530090676
parentb3b780ff995b19ddaad77b22dc14ab69978b5983 (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_usage1
-rw-r--r--getargs.c896
-rw-r--r--print.c283
-rw-r--r--usage.c167
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;
+}
diff --git a/print.c b/print.c
new file mode 100644
index 0000000..0c0e969
--- /dev/null
+++ b/print.c
@@ -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");
+}
diff --git a/usage.c b/usage.c
new file mode 100644
index 0000000..7e818b1
--- /dev/null
+++ b/usage.c
@@ -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");
+
+}