minor improvements
[distro-setup] / input-setup
index 1cd3f6f52803ae837885c9189291e630dadf204f..1a762e9f9e1f6cb4ceea75b549ee8289f22b2026 100755 (executable)
@@ -1,4 +1,40 @@
 #!/bin/bash -l
+set -x
+# Copyright (C) 2016 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+#     http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# set to oppsite if the order is flipped.
+k2flip=true
+if $k2flip; then
+    k2inorder=false
+else
+    k2inorder=true
+fi
+
+case $HOSTNAME in
+    some_x200_laptop) type=laptop ;;
+    hosts_with_keyboards_attached) type=kinesis ;;
+esac
+
+
+
+case $1 in
+    l) type=laptop ;;
+    k) type=kinesis ;;
+    m) type=model01 ;;
+esac
+
 #set -x
 mi() {
     xinput --get-feedbacks "$1" | grep "threshold"
@@ -13,20 +49,49 @@ ms() {
     mi "$1"
 }
 set_device_id() {
-    if device_id=$(xinput --list | grep -m 1 "$1"); then
+    if [[ $2 ]] && $2; then
+        cmd="tail -n1"
+    else
+        cmd="head -n1"
+    fi
+    if device_id=$(xinput --list | grep "$1" | $cmd); then
         device_id=${device_id##*id=}
         device_id=${device_id%%[[:space:]]*}
+        echo "2:$2 device_id=$device_id"
     else
         return 1
     fi
 }
 
-case $HOSTNAME in
-       tp)
-               # original saved with: xkbcomp $DISPLAY /a/c/stretch-9-2016.xkb
-               xkbcomp /a/c/tp.xkb $DISPLAY
-               ;;
-    treetowl*|iank-dev|frodo)
+# default via xset q is 660 25. (delay for autorepeat, repeat rate)
+# was at 200 13, but while learning to use keyboardio, i hold keys a bit longer sometimes.
+xset r rate 400 13 # decrease rate delay
+
+if set_device_id "SteelSeries World of Warcraft MMO Gaming Mouse"; then
+    ms "$device_id" 100 1000/1 7 4 1
+    #ms "$device_id" 1 7/2 2 2.5 2
+
+    # makes it compatible with what windows sends using synergy
+    # commented out because i never expect to use windows again
+    #xinput --set-button-map "$device_id" 1 2 3 4 5 6 7 6 7 10 11 12 13 14 15
+
+    # under the new "improved" libinput, the mouse speed/accel has
+    # changed all around and is much more limited.
+    # Other xinput commands will fail and this will succeed.
+    xinput --set-prop "$device_id" "libinput Accel Speed" '.8'
+fi
+
+case $type in
+    model01)
+        xkbcomp /a/c/model01.xkb $DISPLAY
+        ;;
+    laptop)
+       # original saved with: xkbcomp $DISPLAY /a/c/stretch-11-2016.xkb
+       xkbcomp /a/c/x2.xkb $DISPLAY
+        xkbset -m # remove mouse keys
+
+       ;;
+    kinesis)
         # todo, differentiate for work pc
        #/a/bin/radl
         if [[ -z $DISPLAY ]]; then
@@ -38,53 +103,56 @@ case $HOSTNAME in
 
             xkbset exp =m  # stop mousekeys expiring after a timeout
 
-            xset r rate 200 13 # decrease rate delay
+            cd / # so xbindkeys does not hold open mountpoints
+            killall xbindkeys # having some lag, thinking this might help.
             xbindkeys # configured to grab left and right scroll button presses
         fi
 
-
+        kinesis2=false
         #right scroll wheel, change from button 4 & 5 to 13 and 14.
         # also changes the middle click to 12, even though I'm not using it anymore
         if set_device_id "04d9:048e"; then
             xinput --set-button-map "$device_id" 1 12 3 13 14 6 7
+        else
+            kinesis2=true # if we are using the 2nd kinesis which has different device ids
+        fi
+        if $kinesis2 && set_device_id "USB OPTICAL MOUSE" $k2flip; then
+            xinput --set-button-map "$device_id" 1 12 3 14 13 6 7
         fi
 
+
+
         ms 'Kensington Kensington Slimblade Trackball' 100 4000/1 7 6.5 1.5
         xinput --set-button-map 'Kensington Kensington Slimblade Trackball' 0 0 0 4 5 6 7 0 9 10 11 12
 
         # razer naga middle mouse stopped working. it's settings were:
         #ms "$device_id" 100 1000/1 7 4 1
 
-        if set_device_id "SteelSeries World of Warcraft MMO Gaming Mouse"; then
-            ms "$device_id" 100 1000/1 7 4 1
-            #ms "$device_id" 1 7/2 2 2.5 2
 
-            # makes it compatible with what windows sends using synergy
-            xinput --set-button-map "$device_id" 1 2 3 4 5 6 7 6 7 10 11 12 13 14 15
 
-            # under the new "improved" libinput, the mouse speed/accel has
-            # changed all around and is much more limited.
-            # Other xinput commands will fail and this will succeed.
-            xinput --set-prop "$device_id" "libinput Accel Speed" '.8'
+        # disable the mouse movements mouse wheel
+        if $kinesis2; then
+            if set_device_id "USB OPTICAL MOUSE" $k2inorder; then
+                xinput --set-prop "$device_id" 'Device Accel Constant Deceleration' 10000
+                # 12 is to effectively disable the middle click button
+                xinput --set-button-map "$device_id" 1 12 3 11 10 6 7
+            fi
+        else
+            if set_device_id "USB Optical Mouse"; then
+                xinput --set-prop "$device_id" 'Device Accel Constant Deceleration' 10000
+                # 12 is to effectively disable the middle click button
+                xinput --set-button-map "$device_id" 1 12 3 10 11 6 7
+            fi
         fi
 
-
-        # disable the mouse movements of my mouse-wheel only mouse
-        if set_device_id "USB Optical Mouse"; then
-            xinput --set-prop "$device_id" 'Device Accel Constant Deceleration' 10000
-            # 12 is to effectively disable the middle click button
-            xinput --set-button-map "$device_id" 1 12 3 10 11 6 7
-        fi
-        /a/bin/bash_unpublished/gpg
-        ;;
-    frodo*)
+        . /a/bin/bash_unpublished/duplicity-gpg-agent-setup
         ;;
 esac
 
 # for desktop and htpc
-set_device_id "Logitech Unifying Device"
+if set_device_id "Logitech Unifying Device"; then
 xinput --set-prop "$device_id" 'Evdev Middle Button Emulation' 1
-
+fi
 
 #ms 'Kensington Kensington Slimblade Trackball' 1 7/2 2 4 5 = 2.01
 # ms 9 10 20/1 6 4 .2
@@ -122,3 +190,4 @@ xinput --set-prop "$device_id" 'Evdev Middle Button Emulation' 1
 
 
 #set +x
+exit 0