umask 022
+if [[ $EUID == 1000 && $TERM == linux && ! $DISPLAY && $(tty) = /dev/tty1 && -x /usr/bin/startx ]] && \
+ tmp=$(systemctl status |& head) && \
+ grep -qi '^ *state: running' <<<"$tmp" && grep -qi '^ *failed: 0' <<<"$tmp" && grep -qi '^ *jobs: 0' <<<"$tmp"; then
+ startx
+fi
#### if (in
# noninteractive ssh shells or tty). tty because often i use it when
# Automatically added by the Guix install script.
if [ -n "$GUIX_ENVIRONMENT" ]; then
- if [[ $PS1 =~ (.*)"\\$" ]]; then
- PS1="${BASH_REMATCH[1]} [env]\\\$ "
- fi
+ if [[ $PS1 =~ (.*)"\\$" ]]; then
+ PS1="${BASH_REMATCH[1]} [env]\\\$ "
+ fi
fi
+
+# xsession is a debian thing. for parabola, we would use xinitrc, and I
+# just haven't tested if it will work the same on debian.
+
+# previous things: in past we put myx type script into
+# /etc/X11/xinit/xinitrc.d/desktop-20-autostart.sh
+# and installed it early in distro-begin
+
+# note, in xmonad we had to do this:
+# xsetroot -cursor_name left_ptr
+
+
+/a/exe/myx >/tmp/myx.log 2>&1
exec i3
fi
}
+# Combine files $@ into a single file with comments between them which
+# allow splitting them back with fsplit.
+#
+# Assumes file names do not have newlines in them.
+fcomb() {
+ local f comment out
+ # generated with cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c8
+ comment='# jvvuyUsq '
+ out=~/fcomb
+ rm -f $out
+ for f; do
+ echo "$comment$f" >>$out
+ cat "$f" >>$out
+ done
+}
+fsplit() {
+ local f fin line fin_lines
+ fin=~/fcomb
+ line=1
+ fin_lines=$(wc -l "$fin" | awk '{print $1}')
+ comment='# jvvuyUsq '
+ while (( line <= fin_lines )); do
+ f=$(sed -n "${line}s/^$comment//p" "$fin")
+ sed -n "$line,/^$comment/{/^$comment/d;p}" "$fin" >"$f"
+ line=$(( line + 1 + $(wc -l "$f" | awk '{print $1}') ))
+ done
+}
+
# * stuff that makes sense to be at the end
}
+# insensitive find plus edit
+ife() {
+ local tmps found_count i char file
+ local -a found_files
+ local -A button_file
+ tmps=$(ifn "$@")
+ mapfile -t found_files <<<"$tmps"
+ found_count=${#found_files[@]}
+ if (( ${#found_files[@]} == 1 )); then
+ m g ${found_files[0]}
+ else
+ i=0
+ for button in {a..z}; do
+ button_file[$button]="${found_files[$i]}"
+ echo $button: ${found_files[$i]}
+ i=$(( i + 1 ))
+ if (( i >= found_count )); then
+ break
+ fi
+ done
+ read -rsN1 -t 5 char ||:
+ file="${button_file[$char]}"
+
+ if [[ $file ]]; then
+ g "$file"
+ else
+ echo "no selection"
+ fi
+ fi
+}
+
export BASEFILE_DIR=/a/bin/fai-basefiles
;;
esac
- # recommends gets us geoclue (for darkening automatically at night i assume),
- # which recommends modemmanager, which is annoying to fix for the model01 keyboard.
- # commented because I dont use it much, and in nabia its named changed to redshift-gtk
- #pi --no-install-recommends gtk-redshift
-
##### setup X autostart
- # install for multiple display managers in case we use one
- dir=/etc/X11/xinit/xinitrc.d/
- sudo mkdir -p $dir
- sudo cp /a/bin/distro-setup/desktop-20-autostart.sh $dir
## disabled since i'm not using gdm atm
# dir=/etc/gdm3
# sudo mkdir -p $dir/PostLogin
- # sudo cp /a/bin/distro-setup/desktop-20-autostart.sh $dir/PostLogin/Default
+ # sudo cp /a/bin/distro-setup/myx $dir/PostLogin/Default
sudo mkdir -p /etc/lightdm/lightdm.conf.d
# etiona lightdm.log:
# [SeatDefaults] is now called [Seat:*], please update this configuration
sudo dd of=/etc/lightdm/lightdm.conf.d/12-iank.conf <<'EOF'
[Seat:*]
# display-setup-script=/a/bin/ds/lightdm-start
-session-setup-script=/a/bin/distro-setup/desktop-20-autostart.sh
+session-setup-script=/a/bin/distro-setup/myx
EOF
pi --no-install-recommends kdeconnect
-### kdeconnect for gnome. started in /a/bin/distro-setup/desktop-20-autostart.sh
-### but gnome + xmonad not working in flidas, so i disabled it
-# pi libgtk-3-dev python3-requests-oauthlib valac cmake python-nautilus libappindicator3-dev
-# cd /a/opt/indicator-kdeconnect
-# mkdir -p build
-# cd build
-# cmake .. -DCMAKE_INSTALL_PREFIX=/usr
-# make
-# sudo make install
-# # we can start it manually with /usr/lib/x86_64-linux-gnu/libexec/kdeconnectd
-# # it seems, according to
-# # /etc/xdg/autostart/kdeconnectd.desktop
-# # I'm not seeing the icon, but the clipboard replication is working
### begin model 01 arduino support ###
# ffs = ffmpeg stream
-# todo: learn to start working in one corner of the screen.
-
-# potential improvement: it might be nice that we could have a tall terminal bug only use
+# potential improvement: it might be nice that we could have a tall terminal but only use
# the top half for a 1080p stream, this is how:
# https://superuser.com/questions/1106674/how-to-add-blank-lines-above-the-bottom-in-terminal
-#
if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
##### end command line parsing ########
-host=live.iankelling.org:8000
+host=live.iankelling.org:443
if ip n show 10.2.0.1 | grep . &>/dev/null && \
[[ $(dig +timeout=1 +short @10.2.0.1 -x 10.2.0.2 2>&1 ||:) == kd.b8.nz. ]]; then
host=127.0.0.1:8000
stream_res=$primary_res
fi
-framerate=8
+# for 1080p, default 256k is poor quality. 500 is ok. 1500 is a bit
+# better, so go with that. Also, that is about 2x what is recommended
+# in https://livekit.io/webrtc/bitrate-guide (our framerate is lower).
+
+bitrate=$(( ( ${stream_res/x/*} ) / 1380 ))
+
+# 8 seems fine. be conservative by going a bit higher.
+framerate=10
keyframe_interval=$((framerate * 2))
# Monitor of default sink.
-vcodec libvpx
-g $keyframe_interval
-quality realtime
- # for 1080p, default 256k is poor quality. 500 is ok. 1500 is a bit better.
- -b:v 1500k
+ -b:v ${bitrate}k
-threads 2
-error-resilient 1
--- /dev/null
+#!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to change
+# to a recommended GPL license.
+
+# Copyright 2024 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.
+
+i3-msg "workspace 4"
+if ! pgrep "^prof$" >/dev/null; then
+ prof &
+fi
+if ! pgrep -f '^emacs -f my-znc-all$' >/dev/null; then
+ irc &
+fi
# limitations under the License.
-id=$(i3-msg -t get_tree | jq -e '.. | select(.name?) | select(.name | test("^e-iak")).id ')
+id=$(i3-msg -t get_tree | jq -e '.. | select(.name?) | select(.name | test("^e-iak ")).id')
if [[ $id ]]; then
h=$(i3-msg -t get_tree | jq -r ".. | select(.focused? == true) | .rect.height")
bindsym $mod+4 $ex "i3-split-maybe"; exec "abrowser -no-remote -P firefox-main-profile"
bindsym $mod+5 $ex "/a/bin/ds/stream-interlude"
bindsym $mod+6 $ex "i3-split-maybe"; exec "/usr/local/bin/start-tor-browser"
-bindsym $mod+7 $ex "/a/bin/ds/laptop-xrandr"
+bindsym $mod+7 $ex "/a/bin/ds/myx"
#bindsym $mod+6 $ex "/a/bin/redshift.sh"
# bindsym $mod+equal $ex "t s w; t in"
# bindsym $mod+Home $ex "t out"
bindsym $mod+r $ex "/a/bin/ds/xl"
bindsym $mod+t $ex "i3-set-layout splitv"
-bindsym $mod+Shift+t move workspace to output BIG-RIGHT primary
bindsym $mod+g $ex "i3-set-layout tabbed"
# eh, dont really like web page titles + a long browser name string.
for_window [class="firefox" instance="Navigator" window_role="browser"] title_format "b"
bindsym $mod+y $ex copyq-restart
+bindsym $mod+shift+y $ex "/a/exe/i3-chat"
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
cat bar.conf >> $dir/config
fi
-i3-msg reload
+move_arg=right
+if xrandr --listmonitors | awk '$2 == "BIG-RIGHT"' |grep . >/dev/null; then
+ cat >>$dir/config <<'EOF'
+# by default, new workspaces are created on whatever screen doesn't have
+# one active or else the current one. That is annoying, I have one
+# primary monitor, I don't want a new workspace created on secondary
+# monitor just because I happen be focused on it. This fixes that.
+workspace 1 output primary
+workspace 2 output BIG-LEFT
+workspace 3 output BIG-RIGHT
+workspace 4 output BIG-RIGHT
+workspace 5 output BIG-RIGHT
+workspace 6 output BIG-RIGHT
+workspace 7 output BIG-RIGHT
+workspace 8 output BIG-RIGHT
+workspace 9 output BIG-RIGHT
+workspace 10 output BIG-RIGHT
+EOF
+ move_arg="BIG-RIGHT primary"
+else
+ mon2=$(xrandr | awk '$2 == "connected" && $3 != "primary" {print $1}')
+ if [[ $mon2 ]]; then
+ cat >>$dir/config <<EOF
+# by default, new workspaces are created on whatever screen doesn't have
+# one active or else the current one. That is annoying, I have one
+# primary monitor, I don't want a new workspace created on secondary
+# monitor just because I happen be focused on it. This fixes that.
+workspace 1 output primary
+workspace 2 output $mon2
+workspace 3 output $mon2
+workspace 4 output primary
+workspace 5 output $mon2
+workspace 6 output $mon2
+workspace 7 output $mon2
+workspace 8 output $mon2
+workspace 9 output $mon2
+workspace 10 output $mon2
+EOF
+ fi
+fi
+
+ # shellcheck disable=SC2016
+echo 'bindsym $mod+Shift+t move workspace to output '$move_arg >>$dir/config
+
+if [[ $I3SOCK ]]; then
+ echo $0: i3-msg reload
+ i3-msg reload
+fi
# See the License for the specific language governing permissions and
# limitations under the License.
-# shellcheck source=/a/bin/ds/.bashrc
-if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi
-set -x
-type=model01
+
+set -e; . /usr/local/lib/bash-bear; set +e
+
+script_name="${0##*/}"
+
+
+m() { printf "$script_name: %s\n" "$*"; "$@"; }
+
+## disabed because unused
+# ms() {
+# xinput --set-ptr-feedback "$1" $2 ${3%/*} ${3#*/}
+# # running newer system that uses libinput and has far less
+# # customizability. I havent yet determined the best settings here.
+# if xinput --list-props "$1" | grep "libinput Accel Speed" &>/dev/null; then
+# m xinput --set-prop "$1" "libinput Accel Speed" 1
+# else
+# m xinput --set-prop "$1" 'Device Accel Profile' $4
+# m xinput --set-prop "$1" 'Device Accel Constant Deceleration' $5
+# m xinput --set-prop "$1" 'Device Accel Velocity Scaling' $6
+# fi
+# xinput --get-feedbacks "$1" | grep "threshold"
+# xinput --get-feedbacks "$1" | grep "accelNum\|accelDenom"
+# xinput --list-props "$1"
+# }
+# set_device_id() {
+# 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 $1 in
l) type=laptop ;;
- m) type=model01 ;;
+ m) type=keyboardio ;;
esac
-#set -x
-mi() {
- xinput --get-feedbacks "$1" | grep "threshold"
- xinput --get-feedbacks "$1" | grep "accelNum\|accelDenom"
- xinput --list-props "$1"
-}
-ms() {
- xinput --set-ptr-feedback "$1" $2 ${3%/*} ${3#*/}
- # running newer system that uses libinput and has far less
- # customizability. I havent yet determined the best settings here.
- if xinput --list-props "$1" | grep "libinput Accel Speed" &>/dev/null; then
- xinput --set-prop "$1" "libinput Accel Speed" 1
- else
- xinput --set-prop "$1" 'Device Accel Profile' $4
- xinput --set-prop "$1" 'Device Accel Constant Deceleration' $5
- xinput --set-prop "$1" 'Device Accel Velocity Scaling' $6
- fi
- mi "$1"
-}
-set_device_id() {
- if [[ $2 ]] && $2; then
- cmd="tail -n1"
+if [[ ! $type ]]; then
+ if xinput | grep -i keyboardio; then
+ type=keyboardio
else
- cmd="head -n1"
+ type=laptop
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
-}
-
-# 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
-
- # 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
+# start auto-repeat faster, but go slower.
+#
+# default via xset q is 660 25. (delay for autorepeat, repeat rate). At
+# one point I used 200 13, but while learning to use keyboardio, i found
+# it a bit too fast.
+m xset r rate 400 13 # decrease rate delay
+
+# # disabled because i'm not using it atm 2024
+# if set_device_id "SteelSeries World of Warcraft MMO Gaming Mouse"; then
+# ms "$device_id" 100 1000/1 7 4 1
+# # 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
+
# todo, differentiate for work pc
#/a/bin/radl
case $type in
- model01)
- # original saved with:
+ keyboardio)
+ # at some point, I found the international variant useful:
# setxkbmap -layout us -variant intl
- # xkbcomp $DISPLAY /a/c/etiona-2021-intl.xkb
- xkbcomp /a/c/model01.xkb $DISPLAY
+ # xkbcomp $DISPLAY xkbcomp-t9-intl.xkb
+ #
+ # I create these for a new os by comparing the diff with the default
+ # of previous os, then recreating the diff manually on the new
+ # default. the x2 version has changes on top of keyboardio, so
+ # create the keyboardio one first.
+ #
+ # xkbcomp $DISPLAY xkbcomp-t12.xkb
+ # cp xkbcomp-t12.xkb keyboardio-t12.xkb
+ # diff xkbcomp-t9.xkb keyboardio-t9.xkb
+ # g keyboardio-t12.xkb
+ # # finish editing
+ # cp keyboardio-t12.xkb x2-t12.xkb
+ # diff xkbcomp-t9.xkb x2-t9.xkb
+ # g x2-t12.xkb
+ m xkbcomp /a/c/keyboardio-t12.xkb $DISPLAY
;;
laptop)
- xkbcomp /a/c/x2.xkb $DISPLAY
-
+ m xkbcomp /a/c/x2-t12.xkb $DISPLAY
;;
esac
+## disabled because i'm not using it atm.
# for desktop and htpc
-if set_device_id "Logitech Unifying Device"; then
- xinput --set-prop "$device_id" 'Evdev Middle Button Emulation' 1
-fi
+# if set_device_id "Logitech Unifying Device"; then
+# xinput --set-prop "$device_id" 'Evdev Middle Button Emulation' 1
+# fi
## slow down ploopy trackball, until we recompile firmware
id=$(xinput list | grep -F 'Ploopy Corporation Trackball Mouse' | sed -rn 's/.*[[:space:]]id=([^[:space:]]*).*/\1/p' ||:)
if [[ $id ]]; then
- xinput --set-prop $id 'libinput Accel Speed' -0.7
+ m xinput --set-prop $id 'libinput Accel Speed' -0.7
fi
-set +x
exit 0
--- /dev/null
+xkb_keymap {
+xkb_keycodes "evdev+aliases(qwerty)" {
+ minimum = 8;
+ maximum = 255;
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <LCTL> = 37;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <TLDE> = 49;
+ <LFSH> = 50;
+ <BKSL> = 51;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+ <KPMU> = 63;
+ <LALT> = 64;
+ <SPCE> = 65;
+ <CAPS> = 66;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <NMLK> = 77;
+ <SCLK> = 78;
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPSU> = 82;
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+ <KPAD> = 86;
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KP0> = 90;
+ <KPDL> = 91;
+ <LVL3> = 92;
+ <LSGT> = 94;
+ <FK11> = 95;
+ <FK12> = 96;
+ <AB11> = 97;
+ <KATA> = 98;
+ <HIRA> = 99;
+ <HENK> = 100;
+ <HKTG> = 101;
+ <MUHE> = 102;
+ <JPCM> = 103;
+ <KPEN> = 104;
+ <RCTL> = 105;
+ <KPDV> = 106;
+ <PRSC> = 107;
+ <RALT> = 108;
+ <LNFD> = 109;
+ <HOME> = 110;
+ <UP> = 111;
+ <PGUP> = 112;
+ <LEFT> = 113;
+ <RGHT> = 114;
+ <END> = 115;
+ <DOWN> = 116;
+ <PGDN> = 117;
+ <INS> = 118;
+ <DELE> = 119;
+ <I120> = 120;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <KPEQ> = 125;
+ <I126> = 126;
+ <PAUS> = 127;
+ <I128> = 128;
+ <I129> = 129;
+ <HNGL> = 130;
+ <HJCV> = 131;
+ <AE13> = 132;
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+ <I147> = 147;
+ <I148> = 148;
+ <I149> = 149;
+ <I150> = 150;
+ <I151> = 151;
+ <I152> = 152;
+ <I153> = 153;
+ <I154> = 154;
+ <I155> = 155;
+ <I156> = 156;
+ <I157> = 157;
+ <I158> = 158;
+ <I159> = 159;
+ <I160> = 160;
+ <I161> = 161;
+ <I162> = 162;
+ <I163> = 163;
+ <I164> = 164;
+ <I165> = 165;
+ <I166> = 166;
+ <I167> = 167;
+ <I168> = 168;
+ <I169> = 169;
+ <I170> = 170;
+ <I171> = 171;
+ <I172> = 172;
+ <I173> = 173;
+ <I174> = 174;
+ <I175> = 175;
+ <I176> = 176;
+ <I177> = 177;
+ <I178> = 178;
+ <I179> = 179;
+ <I180> = 180;
+ <I181> = 181;
+ <I182> = 182;
+ <I183> = 183;
+ <I184> = 184;
+ <I185> = 185;
+ <I186> = 186;
+ <I187> = 187;
+ <I188> = 188;
+ <I189> = 189;
+ <I190> = 190;
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+ <LVL5> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+ <I208> = 208;
+ <I209> = 209;
+ <I210> = 210;
+ <I211> = 211;
+ <I212> = 212;
+ <I213> = 213;
+ <I214> = 214;
+ <I215> = 215;
+ <I216> = 216;
+ <I217> = 217;
+ <I218> = 218;
+ <I219> = 219;
+ <I220> = 220;
+ <I221> = 221;
+ <I222> = 222;
+ <I223> = 223;
+ <I224> = 224;
+ <I225> = 225;
+ <I226> = 226;
+ <I227> = 227;
+ <I228> = 228;
+ <I229> = 229;
+ <I230> = 230;
+ <I231> = 231;
+ <I232> = 232;
+ <I233> = 233;
+ <I234> = 234;
+ <I235> = 235;
+ <I236> = 236;
+ <I237> = 237;
+ <I238> = 238;
+ <I239> = 239;
+ <I240> = 240;
+ <I241> = 241;
+ <I242> = 242;
+ <I243> = 243;
+ <I244> = 244;
+ <I245> = 245;
+ <I246> = 246;
+ <I247> = 247;
+ <I248> = 248;
+ <I249> = 249;
+ <I250> = 250;
+ <I251> = 251;
+ <I252> = 252;
+ <I253> = 253;
+ <I254> = 254;
+ <I255> = 255;
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+ virtual indicator 12 = "Shift Lock";
+ virtual indicator 13 = "Group 2";
+ virtual indicator 14 = "Mouse Keys";
+ alias <AC12> = <BKSL>;
+ alias <ALGR> = <RALT>;
+ alias <MENU> = <COMP>;
+ alias <HZTG> = <TLDE>;
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ alias <OUTP> = <I235>;
+ alias <KITG> = <I236>;
+ alias <KIDN> = <I237>;
+ alias <KIUP> = <I238>;
+ alias <I121> = <MUTE>;
+ alias <I122> = <VOL->;
+ alias <I123> = <VOL+>;
+ alias <I124> = <POWR>;
+ alias <I125> = <KPEQ>;
+ alias <I127> = <PAUS>;
+ alias <I130> = <HNGL>;
+ alias <I131> = <HJCV>;
+ alias <I132> = <AE13>;
+ alias <I133> = <LWIN>;
+ alias <I134> = <RWIN>;
+ alias <I135> = <COMP>;
+ alias <I136> = <STOP>;
+ alias <I137> = <AGAI>;
+ alias <I138> = <PROP>;
+ alias <I139> = <UNDO>;
+ alias <I140> = <FRNT>;
+ alias <I141> = <COPY>;
+ alias <I142> = <OPEN>;
+ alias <I143> = <PAST>;
+ alias <I144> = <FIND>;
+ alias <I145> = <CUT>;
+ alias <I146> = <HELP>;
+ alias <I191> = <FK13>;
+ alias <I192> = <FK14>;
+ alias <I193> = <FK15>;
+ alias <I194> = <FK16>;
+ alias <I195> = <FK17>;
+ alias <I196> = <FK18>;
+ alias <I197> = <FK19>;
+ alias <I198> = <FK20>;
+ alias <I199> = <FK21>;
+ alias <I200> = <FK22>;
+ alias <I201> = <FK23>;
+ alias <I202> = <FK24>;
+ alias <MDSW> = <LVL5>;
+ alias <KPPT> = <I129>;
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_types "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ type "ONE_LEVEL" {
+ modifiers= none;
+ level_name[Level1]= "Any";
+ };
+ type "TWO_LEVEL" {
+ modifiers= Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+ type "ALPHABETIC" {
+ modifiers= Shift+Lock;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+ type "KEYPAD" {
+ modifiers= Shift+NumLock;
+ map[NumLock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ };
+ type "PC_ALT_LEVEL2" {
+ modifiers= Alt;
+ map[Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Alt";
+ };
+ type "PC_SUPER_LEVEL2" {
+ modifiers= Mod4;
+ map[Mod4]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Super";
+ };
+ type "PC_CONTROL_LEVEL2" {
+ modifiers= Control;
+ map[Control]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Control";
+ };
+ type "CTRL+ALT" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level2;
+ preserve[Shift]= Shift;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ preserve[Shift+LevelThree]= Shift;
+ map[Control+Alt]= Level5;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Ctrl+Alt";
+ };
+ type "THREE_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ };
+ type "FOUR_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level4;
+ map[Shift+NumLock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift/Numlock";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift/Numlock AltGr";
+ };
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level3;
+ map[Shift+NumLock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_X" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level1;
+ map[LevelThree]= Level2;
+ map[Shift+LevelThree]= Level3;
+ map[Control+Alt]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "AltGr";
+ level_name[Level3]= "Shift AltGr";
+ level_name[Level4]= "Ctrl+Alt";
+ };
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level4;
+ preserve[Lock]= Lock;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Caps / Shift AltGr";
+ };
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock]= Level5;
+ map[Shift+Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Lock";
+ };
+ type "EIGHT_LEVEL" {
+ modifiers= Shift+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level8;
+ map[Shift+Lock+LevelThree+LevelFive]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ preserve[Lock+LevelThree+LevelFive]= Lock;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ map[Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ map[Lock+LevelFive]= Level5;
+ map[Shift+Lock+LevelFive]= Level6;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ map[Lock+NumLock]= Level5;
+ map[Shift+Lock+NumLock]= Level6;
+ map[Lock+NumLock+LevelThree]= Level7;
+ map[Shift+Lock+NumLock+LevelThree]= Level8;
+ map[Lock+NumLock+LevelFive]= Level2;
+ map[Lock+NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_BY_CTRL" {
+ modifiers= Shift+Lock+Control+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[Control]= Level5;
+ map[Shift+Control]= Level6;
+ map[Lock+Control]= Level6;
+ map[Shift+Lock+Control]= Level5;
+ map[Control+LevelThree]= Level7;
+ map[Shift+Control+LevelThree]= Level8;
+ map[Lock+Control+LevelThree]= Level8;
+ map[Shift+Lock+Control+LevelThree]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ level_name[Level4]= "Shift Level3";
+ level_name[Level5]= "Ctrl";
+ level_name[Level6]= "Shift Ctrl";
+ level_name[Level7]= "Level3 Ctrl";
+ level_name[Level8]= "Shift Level3 Ctrl";
+ };
+ type "SHIFT+ALT" {
+ modifiers= Shift+Alt;
+ map[Shift+Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift+Alt";
+ };
+};
+
+xkb_compatibility "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ interpret.useModMapMods= AnyLevel;
+ interpret.repeat= False;
+ interpret.locking= False;
+ interpret ISO_Level2_Latch+Exactly(Shift) {
+ useModMapMods=level1;
+ action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
+ };
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+ interpret Num_Lock+AnyOf(all) {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+ interpret ISO_Level3_Shift+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret Alt_L+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Alt_R+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_L+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_R+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_L+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_R+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_L+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_R+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Scroll_Lock+AnyOf(all) {
+ virtualModifier= ScrollLock;
+ action= LockMods(modifiers=modMapMods);
+ };
+ interpret ISO_Level5_Shift+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Mode_switch+AnyOfOrNone(all) {
+ action= SetGroup(group=+1);
+ };
+ interpret ISO_Level3_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret ISO_Group_Latch+AnyOfOrNone(all) {
+ action= LatchGroup(group=2);
+ };
+ interpret ISO_Next_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=+1);
+ };
+ interpret ISO_Prev_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=1);
+ };
+ interpret ISO_Last_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=2);
+ };
+ interpret KP_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_End+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_Down+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_Begin+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_F2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_Divide+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_F3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_Multiply+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_F4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Subtract+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Separator+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_Add+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_0+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Insert+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Decimal+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret KP_Delete+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret F25+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret F26+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret F27+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret F29+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret F31+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret F33+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret F35+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default);
+ };
+ interpret Pointer_Button1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1);
+ };
+ interpret Pointer_Button2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2);
+ };
+ interpret Pointer_Button3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3);
+ };
+ interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret Pointer_DblClick1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1,count=2);
+ };
+ interpret Pointer_DblClick2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2,count=2);
+ };
+ interpret Pointer_DblClick3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=default,affect=both);
+ };
+ interpret Pointer_Drag1+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=1,affect=both);
+ };
+ interpret Pointer_Drag2+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=2,affect=both);
+ };
+ interpret Pointer_Drag3+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=3,affect=both);
+ };
+ interpret Pointer_EnableKeys+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=+1);
+ };
+ interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=-1);
+ };
+ interpret AccessX_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXKeys);
+ };
+ interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXFeedback);
+ };
+ interpret RepeatKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=RepeatKeys);
+ };
+ interpret SlowKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=SlowKeys);
+ };
+ interpret BounceKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=BounceKeys);
+ };
+ interpret StickyKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=StickyKeys);
+ };
+ interpret MouseKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Overlay1_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay1);
+ };
+ interpret Overlay2_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay2);
+ };
+ interpret AudibleBell_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AudibleBell);
+ };
+ interpret Terminate_Server+AnyOfOrNone(all) {
+ action= Terminate();
+ };
+ interpret Alt_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Alt_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Meta_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Meta_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Super_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Super_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Hyper_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Hyper_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Shift_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret Shift_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret XF86Switch_VT_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=1,!same);
+ };
+ interpret XF86Switch_VT_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=2,!same);
+ };
+ interpret XF86Switch_VT_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=3,!same);
+ };
+ interpret XF86Switch_VT_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=4,!same);
+ };
+ interpret XF86Switch_VT_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=5,!same);
+ };
+ interpret XF86Switch_VT_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=6,!same);
+ };
+ interpret XF86Switch_VT_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=7,!same);
+ };
+ interpret XF86Switch_VT_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=8,!same);
+ };
+ interpret XF86Switch_VT_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=9,!same);
+ };
+ interpret XF86Switch_VT_10+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=10,!same);
+ };
+ interpret XF86Switch_VT_11+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=11,!same);
+ };
+ interpret XF86Switch_VT_12+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=12,!same);
+ };
+ interpret XF86LogGrabInfo+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86LogWindowTree+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86Next_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret XF86Prev_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret ISO_Level5_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Caps_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+Exactly(Lock) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+AnyOf(all) {
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ group 2 = Mod5;
+ group 3 = Mod5;
+ group 4 = Mod5;
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= NumLock;
+ };
+ indicator "Scroll Lock" {
+ whichModState= locked;
+ modifiers= ScrollLock;
+ };
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Shift;
+ };
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= 0xfe;
+ };
+ indicator "Mouse Keys" {
+ indicatorDrivesKeyboard;
+ controls= mouseKeys;
+ };
+};
+
+xkb_symbols "pc+us+inet(evdev)+ctrl(nocaps)+terminate(ctrl_alt_bksp)" {
+
+ name[group1]="English (US)";
+
+ key <ESC> { [ Escape ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, Terminate_Server ]
+ };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ q, Q ]
+ };
+ key <AD02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ w, W ]
+ };
+ key <AD03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ e, E ]
+ };
+ key <AD04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ r, R ]
+ };
+ key <AD05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ t, T ]
+ };
+ key <AD06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ y, Y ]
+ };
+ key <AD07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ u, U ]
+ };
+ key <AD08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ i, I ]
+ };
+ key <AD09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ o, O ]
+ };
+ key <AD10> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ p, P ]
+ };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <AC01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ a, A ]
+ };
+ key <AC02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ s, S ]
+ };
+ key <AC03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ d, D ]
+ };
+ key <AC04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ f, F ]
+ };
+ key <AC05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ g, G ]
+ };
+ key <AC06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ h, H ]
+ };
+ key <AC07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ j, J ]
+ };
+ key <AC08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ k, K ]
+ };
+ key <AC09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ l, L ]
+ };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <TLDE> { [ grave, asciitilde ] };
+ key <LFSH> { [ Shift_L ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ z, Z ]
+ };
+ key <AB02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ x, X ]
+ };
+ key <AB03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ c, C ]
+ };
+ key <AB04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ v, V ]
+ };
+ key <AB05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ b, B ]
+ };
+ key <AB06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ n, N ]
+ };
+ key <AB07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ m, M ]
+ };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+ key <KPMU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ underscore, grave, KP_Multiply, KP_Multiply, XF86ClearGrab ]
+ };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <CAPS> {
+ type= "ONE_LEVEL",
+ symbols[Group1]= [ Control_L ]
+ };
+ key <FK01> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
+ };
+ key <FK02> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
+ };
+ key <FK03> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
+ };
+ key <FK04> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
+ };
+ key <FK05> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
+ };
+ key <FK06> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ]
+ };
+ key <FK07> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ]
+ };
+ key <FK08> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ]
+ };
+ key <FK09> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ]
+ };
+ key <FK10> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ]
+ };
+ key <NMLK> { [ Num_Lock ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPSU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ]
+ };
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_Begin, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+ key <KPAD> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ]
+ };
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ key <LVL3> { [ ISO_Level3_Shift ] };
+ key <LSGT> {
+ type= "FOUR_LEVEL",
+ symbols[Group1]= [ less, greater, bar, brokenbar ]
+ };
+ key <FK11> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
+ };
+ key <FK12> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
+ };
+ key <KATA> { [ Katakana ] };
+ key <HIRA> { [ Hiragana ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+ key <MUHE> { [ Muhenkan ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <RCTL> { [ Control_R ] };
+ key <KPDV> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ]
+ };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <RALT> { [ Multi_key, NoSymbol ] };
+ key <LNFD> { [ Linefeed ] };
+ key <HOME> { [ Home ] };
+ key <UP> { [ Up ] };
+ key <PGUP> { [ Prior ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <END> { [ End ] };
+ key <DOWN> { [ Down ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <MUTE> { [ XF86AudioMute ] };
+ key <VOL-> { [ XF86AudioLowerVolume ] };
+ key <VOL+> { [ XF86AudioRaiseVolume ] };
+ key <POWR> { [ XF86PowerOff ] };
+ key <KPEQ> { [ KP_Equal ] };
+ key <I126> { [ plusminus ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+ key <I128> { [ XF86LaunchA ] };
+ key <I129> { [ KP_Decimal, KP_Decimal ] };
+ key <HNGL> { [ Hangul ] };
+ key <HJCV> { [ Hangul_Hanja ] };
+ key <LWIN> { [ Super_L ] };
+ key <RWIN> { [ Super_R ] };
+ key <COMP> { [ Menu ] };
+ key <STOP> { [ Cancel ] };
+ key <AGAI> { [ Redo ] };
+ key <PROP> { [ SunProps ] };
+ key <UNDO> { [ Undo ] };
+ key <FRNT> { [ SunFront ] };
+ key <COPY> { [ XF86Copy ] };
+ key <OPEN> { [ XF86Open ] };
+ key <PAST> { [ XF86Paste ] };
+ key <FIND> { [ Find ] };
+ key <CUT> { [ XF86Cut ] };
+ key <HELP> { [ Help ] };
+ key <I147> { [ XF86MenuKB ] };
+ key <I148> { [ XF86Calculator ] };
+ key <I150> { [ XF86Sleep ] };
+ key <I151> { [ XF86WakeUp ] };
+ key <I152> { [ XF86Explorer ] };
+ key <I153> { [ XF86Send ] };
+ key <I155> { [ XF86Xfer ] };
+ key <I156> { [ XF86Launch1 ] };
+ key <I157> { [ XF86Launch2 ] };
+ key <I158> { [ XF86WWW ] };
+ key <I159> { [ XF86DOS ] };
+ key <I160> { [ XF86ScreenSaver ] };
+ key <I161> { [ XF86RotateWindows ] };
+ key <I162> { [ XF86TaskPane ] };
+ key <I163> { [ XF86Mail ] };
+ key <I164> { [ XF86Favorites ] };
+ key <I165> { [ XF86MyComputer ] };
+ key <I166> { [ XF86Back ] };
+ key <I167> { [ XF86Forward ] };
+ key <I169> { [ XF86Eject ] };
+ key <I170> { [ XF86Eject ] };
+ key <I171> { [ XF86AudioNext ] };
+ key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I173> { [ XF86AudioPrev ] };
+ key <I174> { [ XF86AudioStop, XF86Eject ] };
+ key <I175> { [ XF86AudioRecord ] };
+ key <I176> { [ XF86AudioRewind ] };
+ key <I177> { [ XF86Phone ] };
+ key <I179> { [ XF86Tools ] };
+ key <I180> { [ XF86HomePage ] };
+ key <I181> { [ XF86Reload ] };
+ key <I182> { [ XF86Close ] };
+ key <I185> { [ XF86ScrollUp ] };
+ key <I186> { [ XF86ScrollDown ] };
+ key <I187> { [ parenleft ] };
+ key <I188> { [ parenright ] };
+ key <I189> { [ XF86New ] };
+ key <I190> { [ Redo ] };
+ key <FK13> { [ XF86Tools ] };
+ key <FK14> { [ XF86Launch5 ] };
+ key <FK15> { [ XF86Launch6 ] };
+ key <FK16> { [ XF86Launch7 ] };
+ key <FK17> { [ XF86Launch8 ] };
+ key <FK18> { [ XF86Launch9 ] };
+ key <FK20> { [ XF86AudioMicMute ] };
+ key <FK21> { [ XF86TouchpadToggle ] };
+ key <FK22> { [ XF86TouchpadOn ] };
+ key <FK23> { [ XF86TouchpadOff ] };
+ key <LVL5> { [ ISO_Level5_Shift ] };
+ key <ALT> { [ NoSymbol, Alt_L ] };
+ key <META> { [ NoSymbol, Meta_L ] };
+ key <SUPR> { [ NoSymbol, Super_L ] };
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ key <I208> { [ XF86AudioPlay ] };
+ key <I209> { [ XF86AudioPause ] };
+ key <I210> { [ XF86Launch3 ] };
+ key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
+ key <I213> { [ XF86Suspend ] };
+ key <I214> { [ XF86Close ] };
+ key <I215> { [ XF86AudioPlay ] };
+ key <I216> { [ XF86AudioForward ] };
+ key <I218> { [ Print ] };
+ key <I220> { [ XF86WebCam ] };
+ key <I221> { [ XF86AudioPreset ] };
+ key <I223> { [ XF86Mail ] };
+ key <I224> { [ XF86Messenger ] };
+ key <I225> { [ XF86Search ] };
+ key <I226> { [ XF86Go ] };
+ key <I227> { [ XF86Finance ] };
+ key <I228> { [ XF86Game ] };
+ key <I229> { [ XF86Shop ] };
+ key <I231> { [ Cancel ] };
+ key <I232> { [ XF86MonBrightnessDown ] };
+ key <I233> { [ XF86MonBrightnessUp ] };
+ key <I234> { [ XF86AudioMedia ] };
+ key <I235> { [ XF86Display ] };
+ key <I236> { [ XF86KbdLightOnOff ] };
+ key <I237> { [ XF86KbdBrightnessDown ] };
+ key <I238> { [ XF86KbdBrightnessUp ] };
+ key <I239> { [ XF86Send ] };
+ key <I240> { [ XF86Reply ] };
+ key <I241> { [ XF86MailForward ] };
+ key <I242> { [ XF86Save ] };
+ key <I243> { [ XF86Documents ] };
+ key <I244> { [ XF86Battery ] };
+ key <I245> { [ XF86Bluetooth ] };
+ key <I246> { [ XF86WLAN ] };
+ key <I247> { [ XF86UWB ] };
+ key <I249> { [ XF86Next_VMode ] };
+ key <I250> { [ XF86Prev_VMode ] };
+ key <I251> { [ XF86MonBrightnessCycle ] };
+ key <I252> { [ XF86BrightnessAuto ] };
+ key <I253> { [ XF86DisplayOff ] };
+ key <I254> { [ XF86WWAN ] };
+ key <I255> { [ XF86RFKill ] };
+ modifier_map Control { <LCTL> };
+ modifier_map Shift { <LFSH> };
+ modifier_map Shift { <RTSH> };
+ modifier_map Mod1 { <LALT> };
+ modifier_map Control { <CAPS> };
+ modifier_map Mod2 { <NMLK> };
+ modifier_map Mod5 { <LVL3> };
+ modifier_map Control { <RCTL> };
+ modifier_map Mod1 { <RALT> };
+ modifier_map Mod4 { <LWIN> };
+ modifier_map Mod4 { <RWIN> };
+ modifier_map Mod3 { <LVL5> };
+ modifier_map Mod1 { <ALT> };
+ modifier_map Mod1 { <META> };
+ modifier_map Mod4 { <SUPR> };
+ modifier_map Mod4 { <HYPR> };
+};
+
+xkb_geometry "pc(pc105)" {
+
+ width= 470;
+ height= 180;
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ description= "Generic 105-key PC";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 18, 18 ] },
+ { [ 2, 1 ], [ 16, 16 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 38, 18 ] },
+ { [ 2, 1 ], [ 36, 16 ] }
+ };
+ shape "TABK" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "BKSL" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 0, 0 ], [ 28, 0 ], [ 28, 37 ], [ 5, 37 ],
+ [ 5, 18 ], [ 0, 18 ] },
+ { [ 2, 1 ], [ 26, 1 ], [ 26, 35 ], [ 7, 35 ],
+ [ 7, 16 ], [ 2, 16 ] },
+ approx= { [ 5, 0 ], [ 28, 37 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 33, 18 ] },
+ { [ 2, 1 ], [ 31, 16 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 25, 18 ] },
+ { [ 2, 1 ], [ 23, 16 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 50, 18 ] },
+ { [ 2, 1 ], [ 48, 16 ] }
+ };
+ shape "MODK" {
+ corner= 1,
+ { [ 27, 18 ] },
+ { [ 2, 1 ], [ 25, 16 ] }
+ };
+ shape "SMOD" {
+ corner= 1,
+ { [ 23, 18 ] },
+ { [ 2, 1 ], [ 21, 16 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 113, 18 ] },
+ { [ 2, 1 ], [ 111, 16 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 37, 18 ] },
+ { [ 2, 1 ], [ 35, 16 ] }
+ };
+ shape "KPAD" {
+ corner= 1,
+ { [ 18, 37 ] },
+ { [ 2, 1 ], [ 16, 35 ] }
+ };
+ shape "LEDS" { { [ 75, 20 ] } };
+ shape "LED" { { [ 5, 1 ] } };
+ section "Function" {
+ key.color= "grey20";
+ priority= 7;
+ top= 22;
+ left= 19;
+ width= 351;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <ESC>, "NORM", 1 },
+ { <FK01>, "NORM", 20, color="white" },
+ { <FK02>, "NORM", 1, color="white" },
+ { <FK03>, "NORM", 1, color="white" },
+ { <FK04>, "NORM", 1, color="white" },
+ { <FK05>, "NORM", 11, color="white" },
+ { <FK06>, "NORM", 1, color="white" },
+ { <FK07>, "NORM", 1, color="white" },
+ { <FK08>, "NORM", 1, color="white" },
+ { <FK09>, "NORM", 11, color="white" },
+ { <FK10>, "NORM", 1, color="white" },
+ { <FK11>, "NORM", 1, color="white" },
+ { <FK12>, "NORM", 1, color="white" },
+ { <PRSC>, "NORM", 8, color="white" },
+ { <SCLK>, "NORM", 1, color="white" },
+ { <PAUS>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 61;
+ left= 19;
+ width= 287;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <TLDE>, "NORM", 1 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <TAB>, "TABK", 1, color="grey20" },
+ { <AD01>, "NORM", 1 }, { <AD02>, "NORM", 1 },
+ { <AD03>, "NORM", 1 }, { <AD04>, "NORM", 1 },
+ { <AD05>, "NORM", 1 }, { <AD06>, "NORM", 1 },
+ { <AD07>, "NORM", 1 }, { <AD08>, "NORM", 1 },
+ { <AD09>, "NORM", 1 }, { <AD10>, "NORM", 1 },
+ { <AD11>, "NORM", 1 }, { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <CAPS>, "CAPS", 1, color="grey20" },
+ { <AC01>, "NORM", 1 }, { <AC02>, "NORM", 1 },
+ { <AC03>, "NORM", 1 }, { <AC04>, "NORM", 1 },
+ { <AC05>, "NORM", 1 }, { <AC06>, "NORM", 1 },
+ { <AC07>, "NORM", 1 }, { <AC08>, "NORM", 1 },
+ { <AC09>, "NORM", 1 }, { <AC10>, "NORM", 1 },
+ { <AC11>, "NORM", 1 }, { <BKSL>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <LFSH>, "LFSH", 1, color="grey20" },
+ { <LSGT>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LCTL>, "MODK", 1, color="grey20" },
+ { <LWIN>, "SMOD", 1, color="grey20" },
+ { <LALT>, "SMOD", 1, color="grey20" },
+ { <SPCE>, "SPCE", 1 },
+ { <RALT>, "SMOD", 1, color="grey20" },
+ { <RWIN>, "SMOD", 1, color="grey20" },
+ { <MENU>, "SMOD", 1, color="grey20" },
+ { <RCTL>, "SMOD", 1, color="grey20" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey20";
+ priority= 9;
+ top= 61;
+ left= 312;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "grey20";
+ priority= 10;
+ top= 61;
+ left= 376;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1, color="white" },
+ { <KP8>, "NORM", 1, color="white" },
+ { <KP9>, "NORM", 1, color="white" },
+ { <KPAD>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1, color="white" },
+ { <KP5>, "NORM", 1, color="white" },
+ { <KP6>, "NORM", 1, color="white" }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1, color="white" },
+ { <KP2>, "NORM", 1, color="white" },
+ { <KP3>, "NORM", 1, color="white" },
+ { <KPEN>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1, color="white" },
+ { <KPDL>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Keypad" section
+
+ solid "LedPanel" {
+ top= 22;
+ left= 377;
+ priority= 0;
+ color= "grey10";
+ shape= "LEDS";
+ };
+ indicator "Num Lock" {
+ top= 37;
+ left= 382;
+ priority= 1;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Caps Lock" {
+ top= 37;
+ left= 407;
+ priority= 2;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Scroll Lock" {
+ top= 37;
+ left= 433;
+ priority= 3;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ text "NumLockLabel" {
+ top= 25;
+ left= 378;
+ priority= 4;
+ width= 19.8;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Num\nLock";
+ };
+ text "CapsLockLabel" {
+ top= 25;
+ left= 403;
+ priority= 5;
+ width= 26.4;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Caps\nLock";
+ };
+ text "ScrollLockLabel" {
+ top= 25;
+ left= 428;
+ priority= 6;
+ width= 39.6;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Scroll\nLock";
+ };
+};
+
+};
+++ /dev/null
-#!/bin/bash
-# I, Ian Kelling, follow the GNU license recommendations at
-# https://www.gnu.org/licenses/license-recommendations.en.html. They
-# recommend that small programs, < 300 lines, be licensed under the
-# Apache License 2.0. This file contains or is part of one or more small
-# programs. If a small program grows beyond 300 lines, I plan to switch
-# its license to GPL.
-
-# Copyright 2024 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 -e; . /usr/local/lib/bash-bear; set +e
-
-xf=$(mktemp)
-xrandr >$xf
-
-# eg eDP-1 connected primary
-laptop_out=$(awk '$3 == "primary" {print $1}' $xf)
-output=$(grep -E "^(HDMI|DP)[^ ]* connected [0-9]" $xf| awk '{print $1}' ||:)
-
-edid() {
- card=$1
- sha256sum </sys/class/drm/$card/edid | grep -oE '^.{10}'
-}
-
-restart=false
-left_right_arg=--right-of
-if [[ $output ]]; then
-
- mode=$(grep -A1 -E "^$output" $xf | tail -n1 | awk '{print $1}')
-
- primary_res=$(awk '$2 == "connected" && $3 == "primary" { print $4 }' $xf | sed 's/+.*//')
- primary_x=${primary_res%x*}
-
- x=${mode%x*}
- y=${mode#*x}
-
- half_x=$(( x / 2 ))
-
- x_offset=$primary_x
-
- # identify monitors that are always on the left.
- if [[ $output == HDMI2 && $(edid card0-HDMI-A-2) == 192efbdcef ]] || \
- [[ $output == HDMI-1 && $(edid card1-HDMI-A-1 ) == 7c58f9ac1e ]]; then
- left_right_arg=--left-of
- x_offset=0
- fi
-
- # some monitors need off then on to become active
- if $restart; then
- xrandr --output $output --off
- sleep 2
- fi
-
-
- # eg: 3840x2160
- echo mode=$mode
- xrandr --output $output $left_right_arg $laptop_out --mode $mode
-
-
- # This splits a monitor into 2 virtual screens, which makes it split
- # into 2 workspaces in i3, which is a much more convenient setup for
- # managing windows.
- # todo: add an option to turn this off
- # todo: do this on systems with just 1 monitor.
- #
- # /298 & 336 are millimeters. I took them from a monitor I was using. I
- # don't know if they are important, I assume not important enough to
- # change for different monitors.
-
- for x in LEFT RIGHT; do
- if xrandr --listmonitors | awk '$2 == BIG-'$x |grep . >/dev/null; then
- xrandr --delmonitor BIG-$x
- fi
- done
- xrandr --setmonitor BIG-LEFT $half_x/298x$y/336+0+$x_offset $output
- xrandr --setmonitor BIG-RIGHT $half_x/298x$y/336+$(( x_offset + half_x ))+0 none
-
-
- for i in 2 3 4 5 6 7 8 9 10; do
- # if the workspace is already there, this will fail.
- # if the workspace doesn't exist yet, it fails with:
- # ERROR: No output matched
- i3-msg '[workspace="'$i'"]' move workspace to output $output ||:
- done
-else
- xrandr --auto
-
-fi
--- /dev/null
+#!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to change
+# to a recommended GPL license.
+
+# Copyright 2024 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 -e; . /usr/local/lib/bash-bear; set +e
+
+script_name="${0##*/}"
+usage() {
+ cat <<EOF
+Usage: $script_name [OPTIONS]
+
+Turns on/off secondary monitor.
+
+Sets resolution.
+
+Alters i3 config.
+
+-n Dry run
+
+-r Restart secondary monitor
+
+-s No stream setup. Normally, split monitor into 2 virtual screens and
+ set max resolution 2560x1440
+
+
+-h|--help Print help and exit.
+
+Note: Uses GNU getopt options parsing style
+EOF
+ exit $1
+}
+edid() {
+ card=$1
+ sha256sum </sys/class/drm/$card/edid | grep -oE '^.{10}'
+}
+
+i3() {
+ if [[ $I3SOCK ]]; then
+ i3-msg "$@"
+ fi
+}
+
+move-ws() {
+ local target_out output tmps
+ target_out=$1
+ shift
+
+ if [[ ! ${ws_out[*]} ]]; then
+ declare -a ws_out
+ tmps=$(i3 -t get_workspaces)
+ if [[ ! $tmps ]]; then
+ return 0
+ fi
+ tmps=$(jq -r '.[] | .num, .output' <<<"$tmps")
+ while read -r ws; do
+ read -r output || break
+ ws_out["$ws"]=$output
+ done <<<"$tmps"
+ fi
+
+ for ws; do
+ if [[ ${ws_out[$ws]} && ${ws_out[$ws]} != "$target_out" ]]; then
+ # if the workspace is already there, this will fail.
+ # if the workspace doesn't exist yet, it fails with:
+ # ERROR: No output matched
+ m i3 '[workspace="'$ws'"]' move workspace to output $target_out
+ fi
+ done
+}
+
+date "+%A, %B %d, %r, %S seconds"
+
+##### begin command line parsing ########
+
+dry_run=false
+stream=true
+restart=false
+temp=$(getopt -l help nrs "$@") || usage 1
+eval set -- "$temp"
+while true; do
+ case $1 in
+ -n) dry_run=true ;;
+ -r) restart=true ;;
+ -s) stream=false ;;
+ -h|--help) usage 0 ;;
+ --) shift; break ;;
+ *) echo "$0: Internal error! unexpected args: $*" ; exit 1 ;;
+ esac
+ shift
+done
+
+##### end command line parsing ########
+
+
+xf=$(mktemp)
+xrandr >$xf
+
+m() { printf "$script_name: %s\n" "$*"; "$@"; }
+if $dry_run; then
+ m() { printf "$script_name: %s\n" "$*"; }
+fi
+
+for mon_suffix in LEFT RIGHT; do
+ if xrandr --listmonitors | awk '$2 == "BIG-'$mon_suffix\" |grep . >/dev/null; then
+ m xrandr --delmonitor BIG-$mon_suffix
+ fi
+done
+
+
+secondary_out=$(awk '$2 == "connected" && $3 != "primary" {print $1}' $xf)
+primary_info=$(awk '$2 == "connected" && $3 == "primary" {print $1,$4}' $xf)
+
+# res_info eg: 3840x2160+1920+0
+read -r primary_out primary_res_info <<<"$primary_info"
+
+primary_res=${primary_res_info%%+*}
+primary_x=${primary_res%x*}
+primary_y=${primary_res#*x}
+
+
+if [[ $secondary_out ]]; then
+
+ # some monitors need off then on to become active
+ if $restart; then
+ m xrandr --output $secondary_out --off
+ m sleep 2
+ fi
+
+ x_offset=$primary_x
+ left_right_arg=--right-of
+ if [[ $secondary_out == HDMI2 && $(edid card0-HDMI-A-2) == 192efbdcef ]] || \
+ [[ $secondary_out == HDMI-1 && $(edid card1-HDMI-A-1 ) == 7c58f9ac1e ]] || \
+ [[ $secondary_out == DP-1 && $(edid card1-DP-1 ) == f3364bc6c1 ]]; then
+ left_right_arg=--left-of
+ x_offset=0
+ fi
+ left_right_arg="$left_right_arg $primary_out"
+
+ target_out=$secondary_out
+ target_res=$(grep -A1 -E "^$secondary_out " $xf | tail -n1 | awk '{print $1}')
+ target_x=${target_res%x*}
+ target_y=${target_res#*x}
+else
+ # disables any leftover secondary.
+ xrandr --auto
+ target_out=$primary_out
+ x_offset=0
+ target_res=$primary_res
+ target_x=$primary_x
+ target_y=$primary_y
+fi
+
+
+
+if $stream && (( target_x > 1280 )); then
+
+ if (( target_x > 2560 )); then
+ target_x=2560
+ target_y=1440
+ target_res=${target_x}x$target_y
+ fi
+
+ if [[ $secondary_out || $primary_res != "$target_res" ]]; then
+ m xrandr --output $target_out $left_right_arg --mode $target_res
+ fi
+
+ half_x=$(( target_x / 2 ))
+ # 298 & 336 are millimeters. I took them from a monitor I was using. I
+ # don't know if they are important, I assume not important enough to
+ # change for different monitors.
+ m xrandr --setmonitor BIG-LEFT $half_x/298x$target_y/336+$x_offset+0 $target_out
+ m xrandr --setmonitor BIG-RIGHT $half_x/298x$target_y/336+$(( x_offset + half_x ))+0 none
+
+ move-ws BIG-LEFT 2
+ move-ws BIG-RIGHT 3 4 5 6 7 8 9 10
+
+else
+ m xrandr --output $target_out $left_right_arg --mode $target_res
+ move-ws $target_out 2 3 5 6 7 8 9 10
+fi
+
+m /a/bin/ds/i3-sway/gen
+m /a/exe/input-setup
+
+echo -n "myx end: "
+date "+%A, %B %d, %r, %S seconds"
i2c-tools
i3lock
i3status
+ icecast2
iftop
iotop
info
--- /dev/null
+xkb_keymap {
+xkb_keycodes "evdev+aliases(qwerty)" {
+ minimum = 8;
+ maximum = 255;
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <LCTL> = 37;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <TLDE> = 49;
+ <LFSH> = 50;
+ <BKSL> = 51;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+ <KPMU> = 63;
+ <LALT> = 64;
+ <SPCE> = 65;
+ <CAPS> = 66;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <NMLK> = 77;
+ <SCLK> = 78;
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPSU> = 82;
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+ <KPAD> = 86;
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KP0> = 90;
+ <KPDL> = 91;
+ <LVL3> = 92;
+ <LSGT> = 94;
+ <FK11> = 95;
+ <FK12> = 96;
+ <AB11> = 97;
+ <KATA> = 98;
+ <HIRA> = 99;
+ <HENK> = 100;
+ <HKTG> = 101;
+ <MUHE> = 102;
+ <JPCM> = 103;
+ <KPEN> = 104;
+ <RCTL> = 105;
+ <KPDV> = 106;
+ <PRSC> = 107;
+ <RALT> = 108;
+ <LNFD> = 109;
+ <HOME> = 110;
+ <UP> = 111;
+ <PGUP> = 112;
+ <LEFT> = 113;
+ <RGHT> = 114;
+ <END> = 115;
+ <DOWN> = 116;
+ <PGDN> = 117;
+ <INS> = 118;
+ <DELE> = 119;
+ <I120> = 120;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <KPEQ> = 125;
+ <I126> = 126;
+ <PAUS> = 127;
+ <I128> = 128;
+ <I129> = 129;
+ <HNGL> = 130;
+ <HJCV> = 131;
+ <AE13> = 132;
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+ <I147> = 147;
+ <I148> = 148;
+ <I149> = 149;
+ <I150> = 150;
+ <I151> = 151;
+ <I152> = 152;
+ <I153> = 153;
+ <I154> = 154;
+ <I155> = 155;
+ <I156> = 156;
+ <I157> = 157;
+ <I158> = 158;
+ <I159> = 159;
+ <I160> = 160;
+ <I161> = 161;
+ <I162> = 162;
+ <I163> = 163;
+ <I164> = 164;
+ <I165> = 165;
+ <I166> = 166;
+ <I167> = 167;
+ <I168> = 168;
+ <I169> = 169;
+ <I170> = 170;
+ <I171> = 171;
+ <I172> = 172;
+ <I173> = 173;
+ <I174> = 174;
+ <I175> = 175;
+ <I176> = 176;
+ <I177> = 177;
+ <I178> = 178;
+ <I179> = 179;
+ <I180> = 180;
+ <I181> = 181;
+ <I182> = 182;
+ <I183> = 183;
+ <I184> = 184;
+ <I185> = 185;
+ <I186> = 186;
+ <I187> = 187;
+ <I188> = 188;
+ <I189> = 189;
+ <I190> = 190;
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+ <LVL5> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+ <I208> = 208;
+ <I209> = 209;
+ <I210> = 210;
+ <I211> = 211;
+ <I212> = 212;
+ <I213> = 213;
+ <I214> = 214;
+ <I215> = 215;
+ <I216> = 216;
+ <I217> = 217;
+ <I218> = 218;
+ <I219> = 219;
+ <I220> = 220;
+ <I221> = 221;
+ <I222> = 222;
+ <I223> = 223;
+ <I224> = 224;
+ <I225> = 225;
+ <I226> = 226;
+ <I227> = 227;
+ <I228> = 228;
+ <I229> = 229;
+ <I230> = 230;
+ <I231> = 231;
+ <I232> = 232;
+ <I233> = 233;
+ <I234> = 234;
+ <I235> = 235;
+ <I236> = 236;
+ <I237> = 237;
+ <I238> = 238;
+ <I239> = 239;
+ <I240> = 240;
+ <I241> = 241;
+ <I242> = 242;
+ <I243> = 243;
+ <I244> = 244;
+ <I245> = 245;
+ <I246> = 246;
+ <I247> = 247;
+ <I248> = 248;
+ <I249> = 249;
+ <I250> = 250;
+ <I251> = 251;
+ <I252> = 252;
+ <I253> = 253;
+ <I254> = 254;
+ <I255> = 255;
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+ virtual indicator 12 = "Shift Lock";
+ virtual indicator 13 = "Group 2";
+ virtual indicator 14 = "Mouse Keys";
+ alias <AC12> = <BKSL>;
+ alias <ALGR> = <RALT>;
+ alias <MENU> = <COMP>;
+ alias <HZTG> = <TLDE>;
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ alias <OUTP> = <I235>;
+ alias <KITG> = <I236>;
+ alias <KIDN> = <I237>;
+ alias <KIUP> = <I238>;
+ alias <I121> = <MUTE>;
+ alias <I122> = <VOL->;
+ alias <I123> = <VOL+>;
+ alias <I124> = <POWR>;
+ alias <I125> = <KPEQ>;
+ alias <I127> = <PAUS>;
+ alias <I130> = <HNGL>;
+ alias <I131> = <HJCV>;
+ alias <I132> = <AE13>;
+ alias <I133> = <LWIN>;
+ alias <I134> = <RWIN>;
+ alias <I135> = <COMP>;
+ alias <I136> = <STOP>;
+ alias <I137> = <AGAI>;
+ alias <I138> = <PROP>;
+ alias <I139> = <UNDO>;
+ alias <I140> = <FRNT>;
+ alias <I141> = <COPY>;
+ alias <I142> = <OPEN>;
+ alias <I143> = <PAST>;
+ alias <I144> = <FIND>;
+ alias <I145> = <CUT>;
+ alias <I146> = <HELP>;
+ alias <I191> = <FK13>;
+ alias <I192> = <FK14>;
+ alias <I193> = <FK15>;
+ alias <I194> = <FK16>;
+ alias <I195> = <FK17>;
+ alias <I196> = <FK18>;
+ alias <I197> = <FK19>;
+ alias <I198> = <FK20>;
+ alias <I199> = <FK21>;
+ alias <I200> = <FK22>;
+ alias <I201> = <FK23>;
+ alias <I202> = <FK24>;
+ alias <MDSW> = <LVL5>;
+ alias <KPPT> = <I129>;
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_types "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ type "ONE_LEVEL" {
+ modifiers= none;
+ level_name[Level1]= "Any";
+ };
+ type "TWO_LEVEL" {
+ modifiers= Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+ type "ALPHABETIC" {
+ modifiers= Shift+Lock;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+ type "KEYPAD" {
+ modifiers= Shift+NumLock;
+ map[NumLock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ };
+ type "PC_ALT_LEVEL2" {
+ modifiers= Alt;
+ map[Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Alt";
+ };
+ type "PC_SUPER_LEVEL2" {
+ modifiers= Mod4;
+ map[Mod4]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Super";
+ };
+ type "PC_CONTROL_LEVEL2" {
+ modifiers= Control;
+ map[Control]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Control";
+ };
+ type "CTRL+ALT" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level2;
+ preserve[Shift]= Shift;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ preserve[Shift+LevelThree]= Shift;
+ map[Control+Alt]= Level5;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Ctrl+Alt";
+ };
+ type "THREE_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ };
+ type "FOUR_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level4;
+ map[Shift+NumLock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift/Numlock";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift/Numlock AltGr";
+ };
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level3;
+ map[Shift+NumLock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_X" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level1;
+ map[LevelThree]= Level2;
+ map[Shift+LevelThree]= Level3;
+ map[Control+Alt]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "AltGr";
+ level_name[Level3]= "Shift AltGr";
+ level_name[Level4]= "Ctrl+Alt";
+ };
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level4;
+ preserve[Lock]= Lock;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Caps / Shift AltGr";
+ };
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock]= Level5;
+ map[Shift+Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Lock";
+ };
+ type "EIGHT_LEVEL" {
+ modifiers= Shift+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level8;
+ map[Shift+Lock+LevelThree+LevelFive]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ preserve[Lock+LevelThree+LevelFive]= Lock;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ map[Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ map[Lock+LevelFive]= Level5;
+ map[Shift+Lock+LevelFive]= Level6;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ map[Lock+NumLock]= Level5;
+ map[Shift+Lock+NumLock]= Level6;
+ map[Lock+NumLock+LevelThree]= Level7;
+ map[Shift+Lock+NumLock+LevelThree]= Level8;
+ map[Lock+NumLock+LevelFive]= Level2;
+ map[Lock+NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_BY_CTRL" {
+ modifiers= Shift+Lock+Control+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[Control]= Level5;
+ map[Shift+Control]= Level6;
+ map[Lock+Control]= Level6;
+ map[Shift+Lock+Control]= Level5;
+ map[Control+LevelThree]= Level7;
+ map[Shift+Control+LevelThree]= Level8;
+ map[Lock+Control+LevelThree]= Level8;
+ map[Shift+Lock+Control+LevelThree]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ level_name[Level4]= "Shift Level3";
+ level_name[Level5]= "Ctrl";
+ level_name[Level6]= "Shift Ctrl";
+ level_name[Level7]= "Level3 Ctrl";
+ level_name[Level8]= "Shift Level3 Ctrl";
+ };
+ type "SHIFT+ALT" {
+ modifiers= Shift+Alt;
+ map[Shift+Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift+Alt";
+ };
+};
+
+xkb_compatibility "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ interpret.useModMapMods= AnyLevel;
+ interpret.repeat= False;
+ interpret.locking= False;
+ interpret ISO_Level2_Latch+Exactly(Shift) {
+ useModMapMods=level1;
+ action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
+ };
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+ interpret Num_Lock+AnyOf(all) {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+ interpret ISO_Level3_Shift+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret Alt_L+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Alt_R+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_L+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_R+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_L+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_R+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_L+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_R+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Scroll_Lock+AnyOf(all) {
+ virtualModifier= ScrollLock;
+ action= LockMods(modifiers=modMapMods);
+ };
+ interpret ISO_Level5_Shift+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Mode_switch+AnyOfOrNone(all) {
+ action= SetGroup(group=+1);
+ };
+ interpret ISO_Level3_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret ISO_Group_Latch+AnyOfOrNone(all) {
+ action= LatchGroup(group=2);
+ };
+ interpret ISO_Next_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=+1);
+ };
+ interpret ISO_Prev_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=1);
+ };
+ interpret ISO_Last_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=2);
+ };
+ interpret KP_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_End+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_Down+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_Begin+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_F2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_Divide+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_F3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_Multiply+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_F4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Subtract+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Separator+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_Add+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_0+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Insert+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Decimal+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret KP_Delete+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret F25+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret F26+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret F27+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret F29+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret F31+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret F33+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret F35+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default);
+ };
+ interpret Pointer_Button1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1);
+ };
+ interpret Pointer_Button2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2);
+ };
+ interpret Pointer_Button3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3);
+ };
+ interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret Pointer_DblClick1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1,count=2);
+ };
+ interpret Pointer_DblClick2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2,count=2);
+ };
+ interpret Pointer_DblClick3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=default,affect=both);
+ };
+ interpret Pointer_Drag1+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=1,affect=both);
+ };
+ interpret Pointer_Drag2+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=2,affect=both);
+ };
+ interpret Pointer_Drag3+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=3,affect=both);
+ };
+ interpret Pointer_EnableKeys+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=+1);
+ };
+ interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=-1);
+ };
+ interpret AccessX_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXKeys);
+ };
+ interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXFeedback);
+ };
+ interpret RepeatKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=RepeatKeys);
+ };
+ interpret SlowKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=SlowKeys);
+ };
+ interpret BounceKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=BounceKeys);
+ };
+ interpret StickyKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=StickyKeys);
+ };
+ interpret MouseKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Overlay1_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay1);
+ };
+ interpret Overlay2_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay2);
+ };
+ interpret AudibleBell_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AudibleBell);
+ };
+ interpret Terminate_Server+AnyOfOrNone(all) {
+ action= Terminate();
+ };
+ interpret Alt_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Alt_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Meta_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Meta_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Super_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Super_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Hyper_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Hyper_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Shift_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret Shift_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret XF86Switch_VT_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=1,!same);
+ };
+ interpret XF86Switch_VT_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=2,!same);
+ };
+ interpret XF86Switch_VT_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=3,!same);
+ };
+ interpret XF86Switch_VT_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=4,!same);
+ };
+ interpret XF86Switch_VT_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=5,!same);
+ };
+ interpret XF86Switch_VT_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=6,!same);
+ };
+ interpret XF86Switch_VT_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=7,!same);
+ };
+ interpret XF86Switch_VT_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=8,!same);
+ };
+ interpret XF86Switch_VT_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=9,!same);
+ };
+ interpret XF86Switch_VT_10+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=10,!same);
+ };
+ interpret XF86Switch_VT_11+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=11,!same);
+ };
+ interpret XF86Switch_VT_12+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=12,!same);
+ };
+ interpret XF86LogGrabInfo+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86LogWindowTree+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86Next_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret XF86Prev_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret ISO_Level5_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Caps_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+Exactly(Lock) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+AnyOf(all) {
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ group 2 = Mod5;
+ group 3 = Mod5;
+ group 4 = Mod5;
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= NumLock;
+ };
+ indicator "Scroll Lock" {
+ whichModState= locked;
+ modifiers= ScrollLock;
+ };
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Shift;
+ };
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= 0xfe;
+ };
+ indicator "Mouse Keys" {
+ indicatorDrivesKeyboard;
+ controls= mouseKeys;
+ };
+};
+
+xkb_symbols "pc+us+inet(evdev)+ctrl(nocaps)+terminate(ctrl_alt_bksp)" {
+
+ name[group1]="English (US)";
+
+ key <ESC> { [ Escape ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, Terminate_Server ]
+ };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ q, Q ]
+ };
+ key <AD02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ w, W ]
+ };
+ key <AD03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ e, E ]
+ };
+ key <AD04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ r, R ]
+ };
+ key <AD05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ t, T ]
+ };
+ key <AD06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ y, Y ]
+ };
+ key <AD07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ u, U ]
+ };
+ key <AD08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ i, I ]
+ };
+ key <AD09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ o, O ]
+ };
+ key <AD10> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ p, P ]
+ };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <AC01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ a, A ]
+ };
+ key <AC02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ s, S ]
+ };
+ key <AC03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ d, D ]
+ };
+ key <AC04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ f, F ]
+ };
+ key <AC05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ g, G ]
+ };
+ key <AC06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ h, H ]
+ };
+ key <AC07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ j, J ]
+ };
+ key <AC08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ k, K ]
+ };
+ key <AC09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ l, L ]
+ };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <TLDE> { [ grave, asciitilde ] };
+ key <LFSH> { [ Shift_L ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ z, Z ]
+ };
+ key <AB02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ x, X ]
+ };
+ key <AB03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ c, C ]
+ };
+ key <AB04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ v, V ]
+ };
+ key <AB05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ b, B ]
+ };
+ key <AB06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ n, N ]
+ };
+ key <AB07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ m, M ]
+ };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+ key <KPMU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ underscore, underscore, underscore, underscore, XF86ClearGrab ]
+ };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <CAPS> {
+ type= "ONE_LEVEL",
+ symbols[Group1]= [ Control_L ]
+ };
+ key <FK01> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
+ };
+ key <FK02> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
+ };
+ key <FK03> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
+ };
+ key <FK04> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
+ };
+ key <FK05> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
+ };
+ key <FK06> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ]
+ };
+ key <FK07> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ]
+ };
+ key <FK08> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ]
+ };
+ key <FK09> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ]
+ };
+ key <FK10> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ]
+ };
+ key <NMLK> { [ Num_Lock ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPSU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ]
+ };
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_Begin, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+ key <KPAD> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ]
+ };
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ key <LVL3> { [ ISO_Level3_Shift ] };
+ key <LSGT> {
+ type= "FOUR_LEVEL",
+ symbols[Group1]= [ less, greater, bar, brokenbar ]
+ };
+ key <FK11> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
+ };
+ key <FK12> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
+ };
+ key <KATA> { [ Katakana ] };
+ key <HIRA> { [ Hiragana ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+ key <MUHE> { [ Muhenkan ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <RCTL> { [ Control_R ] };
+ key <KPDV> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ]
+ };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <LNFD> { [ Linefeed ] };
+ key <HOME> { [ Home ] };
+ key <UP> { [ Up ] };
+ key <PGUP> { [ Prior ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <END> { [ End ] };
+ key <DOWN> { [ Down ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <MUTE> { [ XF86AudioMute ] };
+ key <VOL-> { [ XF86AudioLowerVolume ] };
+ key <VOL+> { [ XF86AudioRaiseVolume ] };
+ key <POWR> { [ XF86PowerOff ] };
+ key <KPEQ> { [ KP_Equal ] };
+ key <I126> { [ plusminus ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+ key <I128> { [ XF86LaunchA ] };
+ key <I129> { [ KP_Decimal, KP_Decimal ] };
+ key <HNGL> { [ Hangul ] };
+ key <HJCV> { [ Hangul_Hanja ] };
+ key <LWIN> { [ Super_L ] };
+ key <RWIN> { [ Super_R ] };
+ key <COMP> { [ Menu ] };
+ key <STOP> { [ Cancel ] };
+ key <AGAI> { [ Redo ] };
+ key <PROP> { [ SunProps ] };
+ key <UNDO> { [ Undo ] };
+ key <FRNT> { [ SunFront ] };
+ key <COPY> { [ XF86Copy ] };
+ key <OPEN> { [ XF86Open ] };
+ key <PAST> { [ XF86Paste ] };
+ key <FIND> { [ Find ] };
+ key <CUT> { [ XF86Cut ] };
+ key <HELP> { [ Help ] };
+ key <I147> { [ XF86MenuKB ] };
+ key <I148> { [ XF86Calculator ] };
+ key <I150> { [ XF86Sleep ] };
+ key <I151> { [ XF86WakeUp ] };
+ key <I152> { [ XF86Explorer ] };
+ key <I153> { [ XF86Send ] };
+ key <I155> { [ XF86Xfer ] };
+ key <I156> { [ XF86Launch1 ] };
+ key <I157> { [ XF86Launch2 ] };
+ key <I158> { [ XF86WWW ] };
+ key <I159> { [ XF86DOS ] };
+ key <I160> { [ XF86ScreenSaver ] };
+ key <I161> { [ XF86RotateWindows ] };
+ key <I162> { [ XF86TaskPane ] };
+ key <I163> { [ XF86Mail ] };
+ key <I164> { [ XF86Favorites ] };
+ key <I165> { [ XF86MyComputer ] };
+ key <I166> { [ XF86Back ] };
+ key <I167> { [ XF86Forward ] };
+ key <I169> { [ XF86Eject ] };
+ key <I170> { [ XF86Eject ] };
+ key <I171> { [ XF86AudioNext ] };
+ key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I173> { [ XF86AudioPrev ] };
+ key <I174> { [ XF86AudioStop, XF86Eject ] };
+ key <I175> { [ XF86AudioRecord ] };
+ key <I176> { [ XF86AudioRewind ] };
+ key <I177> { [ XF86Phone ] };
+ key <I179> { [ XF86Tools ] };
+ key <I180> { [ XF86HomePage ] };
+ key <I181> { [ XF86Reload ] };
+ key <I182> { [ XF86Close ] };
+ key <I185> { [ XF86ScrollUp ] };
+ key <I186> { [ XF86ScrollDown ] };
+ key <I187> { [ parenleft ] };
+ key <I188> { [ parenright ] };
+ key <I189> { [ XF86New ] };
+ key <I190> { [ Redo ] };
+ key <FK13> { [ XF86Tools ] };
+ key <FK14> { [ XF86Launch5 ] };
+ key <FK15> { [ XF86Launch6 ] };
+ key <FK16> { [ XF86Launch7 ] };
+ key <FK17> { [ XF86Launch8 ] };
+ key <FK18> { [ XF86Launch9 ] };
+ key <FK20> { [ XF86AudioMicMute ] };
+ key <FK21> { [ XF86TouchpadToggle ] };
+ key <FK22> { [ XF86TouchpadOn ] };
+ key <FK23> { [ XF86TouchpadOff ] };
+ key <LVL5> { [ ISO_Level5_Shift ] };
+ key <ALT> { [ NoSymbol, Alt_L ] };
+ key <META> { [ NoSymbol, Meta_L ] };
+ key <SUPR> { [ NoSymbol, Super_L ] };
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ key <I208> { [ XF86AudioPlay ] };
+ key <I209> { [ XF86AudioPause ] };
+ key <I210> { [ XF86Launch3 ] };
+ key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
+ key <I213> { [ XF86Suspend ] };
+ key <I214> { [ XF86Close ] };
+ key <I215> { [ XF86AudioPlay ] };
+ key <I216> { [ XF86AudioForward ] };
+ key <I218> { [ Print ] };
+ key <I220> { [ XF86WebCam ] };
+ key <I221> { [ XF86AudioPreset ] };
+ key <I223> { [ XF86Mail ] };
+ key <I224> { [ XF86Messenger ] };
+ key <I225> { [ XF86Search ] };
+ key <I226> { [ XF86Go ] };
+ key <I227> { [ XF86Finance ] };
+ key <I228> { [ XF86Game ] };
+ key <I229> { [ XF86Shop ] };
+ key <I231> { [ Cancel ] };
+ key <I232> { [ XF86MonBrightnessDown ] };
+ key <I233> { [ XF86MonBrightnessUp ] };
+ key <I234> { [ XF86AudioMedia ] };
+ key <I235> { [ XF86Display ] };
+ key <I236> { [ XF86KbdLightOnOff ] };
+ key <I237> { [ XF86KbdBrightnessDown ] };
+ key <I238> { [ XF86KbdBrightnessUp ] };
+ key <I239> { [ XF86Send ] };
+ key <I240> { [ XF86Reply ] };
+ key <I241> { [ XF86MailForward ] };
+ key <I242> { [ XF86Save ] };
+ key <I243> { [ XF86Documents ] };
+ key <I244> { [ XF86Battery ] };
+ key <I245> { [ XF86Bluetooth ] };
+ key <I246> { [ XF86WLAN ] };
+ key <I247> { [ XF86UWB ] };
+ key <I249> { [ XF86Next_VMode ] };
+ key <I250> { [ XF86Prev_VMode ] };
+ key <I251> { [ XF86MonBrightnessCycle ] };
+ key <I252> { [ XF86BrightnessAuto ] };
+ key <I253> { [ XF86DisplayOff ] };
+ key <I254> { [ XF86WWAN ] };
+ key <I255> { [ XF86RFKill ] };
+ modifier_map Control { <LCTL> };
+ modifier_map Shift { <LFSH> };
+ modifier_map Shift { <RTSH> };
+ modifier_map Mod1 { <LALT> };
+ modifier_map Control { <CAPS> };
+ modifier_map Mod2 { <NMLK> };
+ modifier_map Mod5 { <LVL3> };
+ modifier_map Control { <RCTL> };
+ modifier_map Mod1 { <RALT> };
+ modifier_map Mod4 { <LWIN> };
+ modifier_map Mod4 { <RWIN> };
+ modifier_map Mod3 { <LVL5> };
+ modifier_map Mod1 { <ALT> };
+ modifier_map Mod1 { <META> };
+ modifier_map Mod4 { <SUPR> };
+ modifier_map Mod4 { <HYPR> };
+};
+
+xkb_geometry "pc(pc105)" {
+
+ width= 470;
+ height= 180;
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ description= "Generic 105-key PC";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 18, 18 ] },
+ { [ 2, 1 ], [ 16, 16 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 38, 18 ] },
+ { [ 2, 1 ], [ 36, 16 ] }
+ };
+ shape "TABK" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "BKSL" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 0, 0 ], [ 28, 0 ], [ 28, 37 ], [ 5, 37 ],
+ [ 5, 18 ], [ 0, 18 ] },
+ { [ 2, 1 ], [ 26, 1 ], [ 26, 35 ], [ 7, 35 ],
+ [ 7, 16 ], [ 2, 16 ] },
+ approx= { [ 5, 0 ], [ 28, 37 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 33, 18 ] },
+ { [ 2, 1 ], [ 31, 16 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 25, 18 ] },
+ { [ 2, 1 ], [ 23, 16 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 50, 18 ] },
+ { [ 2, 1 ], [ 48, 16 ] }
+ };
+ shape "MODK" {
+ corner= 1,
+ { [ 27, 18 ] },
+ { [ 2, 1 ], [ 25, 16 ] }
+ };
+ shape "SMOD" {
+ corner= 1,
+ { [ 23, 18 ] },
+ { [ 2, 1 ], [ 21, 16 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 113, 18 ] },
+ { [ 2, 1 ], [ 111, 16 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 37, 18 ] },
+ { [ 2, 1 ], [ 35, 16 ] }
+ };
+ shape "KPAD" {
+ corner= 1,
+ { [ 18, 37 ] },
+ { [ 2, 1 ], [ 16, 35 ] }
+ };
+ shape "LEDS" { { [ 75, 20 ] } };
+ shape "LED" { { [ 5, 1 ] } };
+ section "Function" {
+ key.color= "grey20";
+ priority= 7;
+ top= 22;
+ left= 19;
+ width= 351;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <ESC>, "NORM", 1 },
+ { <FK01>, "NORM", 20, color="white" },
+ { <FK02>, "NORM", 1, color="white" },
+ { <FK03>, "NORM", 1, color="white" },
+ { <FK04>, "NORM", 1, color="white" },
+ { <FK05>, "NORM", 11, color="white" },
+ { <FK06>, "NORM", 1, color="white" },
+ { <FK07>, "NORM", 1, color="white" },
+ { <FK08>, "NORM", 1, color="white" },
+ { <FK09>, "NORM", 11, color="white" },
+ { <FK10>, "NORM", 1, color="white" },
+ { <FK11>, "NORM", 1, color="white" },
+ { <FK12>, "NORM", 1, color="white" },
+ { <PRSC>, "NORM", 8, color="white" },
+ { <SCLK>, "NORM", 1, color="white" },
+ { <PAUS>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 61;
+ left= 19;
+ width= 287;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <TLDE>, "NORM", 1 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <TAB>, "TABK", 1, color="grey20" },
+ { <AD01>, "NORM", 1 }, { <AD02>, "NORM", 1 },
+ { <AD03>, "NORM", 1 }, { <AD04>, "NORM", 1 },
+ { <AD05>, "NORM", 1 }, { <AD06>, "NORM", 1 },
+ { <AD07>, "NORM", 1 }, { <AD08>, "NORM", 1 },
+ { <AD09>, "NORM", 1 }, { <AD10>, "NORM", 1 },
+ { <AD11>, "NORM", 1 }, { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <CAPS>, "CAPS", 1, color="grey20" },
+ { <AC01>, "NORM", 1 }, { <AC02>, "NORM", 1 },
+ { <AC03>, "NORM", 1 }, { <AC04>, "NORM", 1 },
+ { <AC05>, "NORM", 1 }, { <AC06>, "NORM", 1 },
+ { <AC07>, "NORM", 1 }, { <AC08>, "NORM", 1 },
+ { <AC09>, "NORM", 1 }, { <AC10>, "NORM", 1 },
+ { <AC11>, "NORM", 1 }, { <BKSL>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <LFSH>, "LFSH", 1, color="grey20" },
+ { <LSGT>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LCTL>, "MODK", 1, color="grey20" },
+ { <LWIN>, "SMOD", 1, color="grey20" },
+ { <LALT>, "SMOD", 1, color="grey20" },
+ { <SPCE>, "SPCE", 1 },
+ { <RALT>, "SMOD", 1, color="grey20" },
+ { <RWIN>, "SMOD", 1, color="grey20" },
+ { <MENU>, "SMOD", 1, color="grey20" },
+ { <RCTL>, "SMOD", 1, color="grey20" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey20";
+ priority= 9;
+ top= 61;
+ left= 312;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "grey20";
+ priority= 10;
+ top= 61;
+ left= 376;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1, color="white" },
+ { <KP8>, "NORM", 1, color="white" },
+ { <KP9>, "NORM", 1, color="white" },
+ { <KPAD>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1, color="white" },
+ { <KP5>, "NORM", 1, color="white" },
+ { <KP6>, "NORM", 1, color="white" }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1, color="white" },
+ { <KP2>, "NORM", 1, color="white" },
+ { <KP3>, "NORM", 1, color="white" },
+ { <KPEN>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1, color="white" },
+ { <KPDL>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Keypad" section
+
+ solid "LedPanel" {
+ top= 22;
+ left= 377;
+ priority= 0;
+ color= "grey10";
+ shape= "LEDS";
+ };
+ indicator "Num Lock" {
+ top= 37;
+ left= 382;
+ priority= 1;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Caps Lock" {
+ top= 37;
+ left= 407;
+ priority= 2;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Scroll Lock" {
+ top= 37;
+ left= 433;
+ priority= 3;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ text "NumLockLabel" {
+ top= 25;
+ left= 378;
+ priority= 4;
+ width= 19.8;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Num\nLock";
+ };
+ text "CapsLockLabel" {
+ top= 25;
+ left= 403;
+ priority= 5;
+ width= 26.4;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Caps\nLock";
+ };
+ text "ScrollLockLabel" {
+ top= 25;
+ left= 428;
+ priority= 6;
+ width= 39.6;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Scroll\nLock";
+ };
+};
+
+};
#-A FORWARD -i brvpn -j REJECT
# but I'm thinking firewall from inside is simpler.
-# prevent dns leaks, openvpn runs as root, allow root to
-# make non-vpn dns calls, but not transmission which does not run as root.
-# openvpn needs this in order to lookup the ip of the vpn server
-# before it's connected to it. We could hardcode the vpn ips in the
-# config, but our vpn service provider gave us dns, so the ip might change.
--A OUTPUT -p udp -m udp --dport 53 -m owner --uid-owner root -j ACCEPT
+# prevent dns leaks. note: if we needed openvpn to do initial dns, we could
+# add -m owner --uid-owner root to the output rules, but we just connect to
+# ip addresses.
+-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
--A OUTPUT -p tcp -m tcp --dport 53 -m owner --uid-owner root -j ACCEPT
+-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
# transmission-remote
-A OUTPUT -p tcp -m tcp --sport 9091 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9091 -j ACCEPT
-# 1302 is used by mullvad
--A OUTPUT -p udp -m udp --dport 1302 -j ACCEPT
--A INPUT -p udp -m udp --sport 1302 -j ACCEPT
+# 1196 is used by mullvad
+-A OUTPUT -p udp -m udp --dport 1196 -j ACCEPT
+-A INPUT -p udp -m udp --sport 1196 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
fi
fi
+# t11 uses dhclient.conf
dhclient_restart=false
# man dhclient.conf
-if ! grep -qP '\bdomain-name-servers\b' /etc/dhcp/dhclient.conf; then
- sed -i 's/^ *request/request domain-name-servers,/' /etc/dhcp/dhclient.conf
+f=/etc/dhcp/dhclient.conf
+if [[ -e $f ]]; then
+ if $trust; then
+ if ! grep -qP '\bdomain-name-servers\b' $f; then
+ sed -i 's/^ *request/request domain-name-servers,/' $f
+ dhclient_restart=true
+ e $0: dhclient_restart=true
+ fi
+ else
+ if grep -qP '\bdomain-name-servers\b' $f; then
+ sed -i 's/^ *request domain-name-servers,/request/' $f
+ dhclient_restart=true
+ e $0: dhclient_restart=true
+ fi
+ fi
+fi
+
+# t12 uses dhclient.conf
+f=/etc/dhcpcd.conf
+# note: haven't tested
+if ! $trust; then
+ line="nooption domain_name_servers"
+fi
+if [[ -e $f ]] && ! echo $line | cedit $f; then
dhclient_restart=true
e $0: dhclient_restart=true
fi
# rm -f /run/systemd/resolved.conf.d/*$gateway_if*
- if $dhclient_restart && grep -Pq "^ *auto ($gateway_if|.* $gateway_if( |$))" /etc/network/interfaces; then
+ if $dhclient_restart && grep -Pq "^ *auto ($gateway_if|.* $gateway_if( |$))" /etc/network/interfaces &>/dev/null; then
m ifdown $gateway_if
m ifup $gateway_if
fi
--- /dev/null
+xkb_keymap {
+xkb_keycodes "evdev+aliases(qwerty)" {
+ minimum = 8;
+ maximum = 255;
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <LCTL> = 64;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <TLDE> = 49;
+ <LFSH> = 50;
+ <BKSL> = 51;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+ <KPMU> = 105;
+ <LALT> = 108;
+ <SPCE> = 65;
+ #<CAPS> = 66;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <NMLK> = 77;
+ <SCLK> = 78;
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPSU> = 82;
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+ <KPAD> = 86;
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KP0> = 90;
+ <KPDL> = 91;
+ <LVL3> = 92;
+ <LSGT> = 94;
+ <FK11> = 95;
+ <FK12> = 96;
+ <AB11> = 97;
+ <KATA> = 98;
+ <HIRA> = 99;
+ <HENK> = 100;
+ <HKTG> = 101;
+ <MUHE> = 102;
+ <JPCM> = 103;
+ <KPEN> = 104;
+ # <RCTL> = 105;
+ <KPDV> = 106;
+ <PRSC> = 107;
+ <RALT> = 135;
+ <LNFD> = 109;
+ <HOME> = 110;
+ <UP> = 111;
+ <PGUP> = 112;
+ <LEFT> = 113;
+ <RGHT> = 114;
+ <END> = 115;
+ <DOWN> = 116;
+ <PGDN> = 117;
+ <INS> = 118;
+ <DELE> = 119;
+ <I120> = 120;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <KPEQ> = 37;
+ <I126> = 126;
+ <PAUS> = 127;
+ <I128> = 128;
+ <I129> = 129;
+ <HNGL> = 130;
+ <HJCV> = 131;
+ <AE13> = 132;
+ <LWIN> = 133;
+ <RWIN> = 134;
+ # <COMP> = 135;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+ <I147> = 147;
+ <I148> = 148;
+ <I149> = 149;
+ <I150> = 150;
+ <I151> = 151;
+ <I152> = 152;
+ <I153> = 153;
+ <I154> = 154;
+ <I155> = 155;
+ <I156> = 156;
+ <I157> = 157;
+ <I158> = 158;
+ <I159> = 159;
+ <I160> = 160;
+ <I161> = 161;
+ <I162> = 162;
+ <I163> = 163;
+ <I164> = 164;
+ <I165> = 165;
+ <I166> = 166;
+ <I167> = 167;
+ <I168> = 168;
+ <I169> = 169;
+ <I170> = 170;
+ <I171> = 171;
+ <I172> = 172;
+ <I173> = 173;
+ <I174> = 174;
+ <I175> = 175;
+ <I176> = 176;
+ <I177> = 177;
+ <I178> = 178;
+ <I179> = 179;
+ <I180> = 180;
+ <I181> = 181;
+ <I182> = 182;
+ <I183> = 183;
+ <I184> = 184;
+ <I185> = 185;
+ <I186> = 186;
+ <I187> = 187;
+ <I188> = 188;
+ <I189> = 189;
+ <I190> = 190;
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+ <LVL5> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+ <I208> = 208;
+ <I209> = 209;
+ <I210> = 210;
+ <I211> = 211;
+ <I212> = 212;
+ <I213> = 213;
+ <I214> = 214;
+ <I215> = 215;
+ <I216> = 216;
+ <I217> = 217;
+ <I218> = 218;
+ <I219> = 219;
+ <I220> = 220;
+ <I221> = 221;
+ <I222> = 222;
+ <I223> = 223;
+ <I224> = 224;
+ <I225> = 225;
+ <I226> = 226;
+ <I227> = 227;
+ <I228> = 228;
+ <I229> = 229;
+ <I230> = 230;
+ <I231> = 231;
+ <I232> = 232;
+ <I233> = 233;
+ <I234> = 234;
+ <I235> = 235;
+ <I236> = 236;
+ <I237> = 237;
+ <I238> = 238;
+ <I239> = 239;
+ <I240> = 240;
+ <I241> = 241;
+ <I242> = 242;
+ <I243> = 243;
+ <I244> = 244;
+ <I245> = 245;
+ <I246> = 246;
+ <I247> = 247;
+ <I248> = 248;
+ <I249> = 249;
+ <I250> = 250;
+ <I251> = 251;
+ <I252> = 252;
+ <I253> = 253;
+ <I254> = 254;
+ <I255> = 255;
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+ virtual indicator 12 = "Shift Lock";
+ virtual indicator 13 = "Group 2";
+ virtual indicator 14 = "Mouse Keys";
+ alias <AC12> = <BKSL>;
+ alias <ALGR> = <RALT>;
+ alias <MENU> = <COMP>;
+ alias <HZTG> = <TLDE>;
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ alias <OUTP> = <I235>;
+ alias <KITG> = <I236>;
+ alias <KIDN> = <I237>;
+ alias <KIUP> = <I238>;
+ alias <I121> = <MUTE>;
+ alias <I122> = <VOL->;
+ alias <I123> = <VOL+>;
+ alias <I124> = <POWR>;
+ alias <I125> = <KPEQ>;
+ alias <I127> = <PAUS>;
+ alias <I130> = <HNGL>;
+ alias <I131> = <HJCV>;
+ alias <I132> = <AE13>;
+ alias <I133> = <LWIN>;
+ alias <I134> = <RWIN>;
+ alias <I135> = <COMP>;
+ alias <I136> = <STOP>;
+ alias <I137> = <AGAI>;
+ alias <I138> = <PROP>;
+ alias <I139> = <UNDO>;
+ alias <I140> = <FRNT>;
+ alias <I141> = <COPY>;
+ alias <I142> = <OPEN>;
+ alias <I143> = <PAST>;
+ alias <I144> = <FIND>;
+ alias <I145> = <CUT>;
+ alias <I146> = <HELP>;
+ alias <I191> = <FK13>;
+ alias <I192> = <FK14>;
+ alias <I193> = <FK15>;
+ alias <I194> = <FK16>;
+ alias <I195> = <FK17>;
+ alias <I196> = <FK18>;
+ alias <I197> = <FK19>;
+ alias <I198> = <FK20>;
+ alias <I199> = <FK21>;
+ alias <I200> = <FK22>;
+ alias <I201> = <FK23>;
+ alias <I202> = <FK24>;
+ alias <MDSW> = <LVL5>;
+ alias <KPPT> = <I129>;
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_types "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ type "ONE_LEVEL" {
+ modifiers= none;
+ level_name[Level1]= "Any";
+ };
+ type "TWO_LEVEL" {
+ modifiers= Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+ type "ALPHABETIC" {
+ modifiers= Shift+Lock;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+ type "KEYPAD" {
+ modifiers= Shift+NumLock;
+ map[NumLock]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ };
+ type "PC_ALT_LEVEL2" {
+ modifiers= Alt;
+ map[Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Alt";
+ };
+ type "PC_SUPER_LEVEL2" {
+ modifiers= Mod4;
+ map[Mod4]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Super";
+ };
+ type "PC_CONTROL_LEVEL2" {
+ modifiers= Control;
+ map[Control]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Control";
+ };
+ type "CTRL+ALT" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level2;
+ preserve[Shift]= Shift;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ preserve[Shift+LevelThree]= Shift;
+ map[Control+Alt]= Level5;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Ctrl+Alt";
+ };
+ type "THREE_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ };
+ type "FOUR_LEVEL" {
+ modifiers= Shift+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level4;
+ map[Shift+NumLock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift/Numlock";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift/Numlock AltGr";
+ };
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers= Shift+NumLock+LevelThree;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[NumLock+LevelThree]= Level3;
+ map[Shift+NumLock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Number";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ };
+ type "FOUR_LEVEL_X" {
+ modifiers= Shift+Control+Alt+LevelThree;
+ map[Shift]= Level1;
+ map[LevelThree]= Level2;
+ map[Shift+LevelThree]= Level3;
+ map[Control+Alt]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "AltGr";
+ level_name[Level3]= "Shift AltGr";
+ level_name[Level4]= "Ctrl+Alt";
+ };
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level4;
+ preserve[Lock]= Lock;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level3;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Caps / Shift AltGr";
+ };
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers= Shift+Lock+LevelThree;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock]= Level5;
+ map[Shift+Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "Lock";
+ };
+ type "EIGHT_LEVEL" {
+ modifiers= Shift+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level8;
+ map[Shift+Lock+LevelThree+LevelFive]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers= Shift+Lock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level3;
+ preserve[Lock+LevelThree]= Lock;
+ map[Shift+Lock+LevelThree]= Level4;
+ preserve[Shift+Lock+LevelThree]= Lock;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ map[Lock+LevelFive]= Level6;
+ map[Shift+Lock+LevelFive]= Level5;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ preserve[Lock+LevelThree+LevelFive]= Lock;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK" {
+ modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;
+ map[Shift]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[LevelFive]= Level5;
+ map[Shift+LevelFive]= Level6;
+ preserve[Shift+LevelFive]= Shift;
+ map[LevelThree+LevelFive]= Level7;
+ map[Shift+LevelThree+LevelFive]= Level8;
+ map[NumLock]= Level5;
+ map[Shift+NumLock]= Level6;
+ preserve[Shift+NumLock]= Shift;
+ map[NumLock+LevelThree]= Level7;
+ map[Shift+NumLock+LevelThree]= Level8;
+ map[Shift+NumLock+LevelFive]= Level2;
+ map[NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;
+ map[Lock]= Level2;
+ map[Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
+ map[Lock+LevelFive]= Level5;
+ map[Shift+Lock+LevelFive]= Level6;
+ map[Lock+LevelThree+LevelFive]= Level7;
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;
+ map[Lock+NumLock]= Level5;
+ map[Shift+Lock+NumLock]= Level6;
+ map[Lock+NumLock+LevelThree]= Level7;
+ map[Shift+Lock+NumLock+LevelThree]= Level8;
+ map[Lock+NumLock+LevelFive]= Level2;
+ map[Lock+NumLock+LevelThree+LevelFive]= Level3;
+ map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level4;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "AltGr";
+ level_name[Level4]= "Shift AltGr";
+ level_name[Level5]= "X";
+ level_name[Level6]= "X Shift";
+ level_name[Level7]= "X AltGr";
+ level_name[Level8]= "X Shift AltGr";
+ };
+ type "EIGHT_LEVEL_BY_CTRL" {
+ modifiers= Shift+Lock+Control+LevelThree;
+ map[Shift]= Level2;
+ map[Lock]= Level2;
+ map[LevelThree]= Level3;
+ map[Shift+LevelThree]= Level4;
+ map[Lock+LevelThree]= Level4;
+ map[Shift+Lock+LevelThree]= Level3;
+ map[Control]= Level5;
+ map[Shift+Control]= Level6;
+ map[Lock+Control]= Level6;
+ map[Shift+Lock+Control]= Level5;
+ map[Control+LevelThree]= Level7;
+ map[Shift+Control+LevelThree]= Level8;
+ map[Lock+Control+LevelThree]= Level8;
+ map[Shift+Lock+Control+LevelThree]= Level7;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ level_name[Level3]= "Level3";
+ level_name[Level4]= "Shift Level3";
+ level_name[Level5]= "Ctrl";
+ level_name[Level6]= "Shift Ctrl";
+ level_name[Level7]= "Level3 Ctrl";
+ level_name[Level8]= "Shift Level3 Ctrl";
+ };
+ type "SHIFT+ALT" {
+ modifiers= Shift+Alt;
+ map[Shift+Alt]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift+Alt";
+ };
+};
+
+xkb_compatibility "complete" {
+
+ virtual_modifiers NumLock,Alt,LevelThree,LevelFive,Meta,Super,Hyper,ScrollLock;
+
+ interpret.useModMapMods= AnyLevel;
+ interpret.repeat= False;
+ interpret.locking= False;
+ interpret ISO_Level2_Latch+Exactly(Shift) {
+ useModMapMods=level1;
+ action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
+ };
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+ interpret Num_Lock+AnyOf(all) {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+ interpret ISO_Level3_Shift+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOf(all) {
+ virtualModifier= LevelThree;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret Alt_L+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Alt_R+AnyOf(all) {
+ virtualModifier= Alt;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_L+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Meta_R+AnyOf(all) {
+ virtualModifier= Meta;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_L+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Super_R+AnyOf(all) {
+ virtualModifier= Super;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_L+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Hyper_R+AnyOf(all) {
+ virtualModifier= Hyper;
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ interpret Scroll_Lock+AnyOf(all) {
+ virtualModifier= ScrollLock;
+ action= LockMods(modifiers=modMapMods);
+ };
+ interpret ISO_Level5_Shift+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOf(all) {
+ virtualModifier= LevelFive;
+ useModMapMods=level1;
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Mode_switch+AnyOfOrNone(all) {
+ action= SetGroup(group=+1);
+ };
+ interpret ISO_Level3_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelThree,clearLocks);
+ };
+ interpret ISO_Level3_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+ };
+ interpret ISO_Level3_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelThree);
+ };
+ interpret ISO_Group_Latch+AnyOfOrNone(all) {
+ action= LatchGroup(group=2);
+ };
+ interpret ISO_Next_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=+1);
+ };
+ interpret ISO_Prev_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=1);
+ };
+ interpret ISO_Last_Group+AnyOfOrNone(all) {
+ action= LockGroup(group=2);
+ };
+ interpret KP_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_End+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret KP_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_Down+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=+1);
+ };
+ interpret KP_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret KP_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+0);
+ };
+ interpret KP_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+0);
+ };
+ interpret KP_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret KP_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+0,y=-1);
+ };
+ interpret KP_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret KP_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_Begin+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret KP_F2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_Divide+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret KP_F3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_Multiply+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret KP_F4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Subtract+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=3);
+ };
+ interpret KP_Separator+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_Add+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret KP_0+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Insert+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=lock);
+ };
+ interpret KP_Decimal+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret KP_Delete+AnyOfOrNone(all) {
+ repeat= True;
+ action= LockPtrBtn(button=default,affect=unlock);
+ };
+ interpret F25+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=1);
+ };
+ interpret F26+AnyOfOrNone(all) {
+ repeat= True;
+ action= SetPtrDflt(affect=button,button=2);
+ };
+ interpret F27+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=-1);
+ };
+ interpret F29+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=-1);
+ };
+ interpret F31+AnyOfOrNone(all) {
+ repeat= True;
+ action= PtrBtn(button=default);
+ };
+ interpret F33+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=-1,y=+1);
+ };
+ interpret F35+AnyOfOrNone(all) {
+ repeat= True;
+ action= MovePtr(x=+1,y=+1);
+ };
+ interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default);
+ };
+ interpret Pointer_Button1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1);
+ };
+ interpret Pointer_Button2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2);
+ };
+ interpret Pointer_Button3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3);
+ };
+ interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
+ action= PtrBtn(button=default,count=2);
+ };
+ interpret Pointer_DblClick1+AnyOfOrNone(all) {
+ action= PtrBtn(button=1,count=2);
+ };
+ interpret Pointer_DblClick2+AnyOfOrNone(all) {
+ action= PtrBtn(button=2,count=2);
+ };
+ interpret Pointer_DblClick3+AnyOfOrNone(all) {
+ action= PtrBtn(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=default,affect=both);
+ };
+ interpret Pointer_Drag1+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=1,affect=both);
+ };
+ interpret Pointer_Drag2+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=2,affect=both);
+ };
+ interpret Pointer_Drag3+AnyOfOrNone(all) {
+ action= LockPtrBtn(button=3,affect=both);
+ };
+ interpret Pointer_EnableKeys+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=+1);
+ };
+ interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
+ action= SetPtrDflt(affect=button,button=-1);
+ };
+ interpret AccessX_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXKeys);
+ };
+ interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AccessXFeedback);
+ };
+ interpret RepeatKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=RepeatKeys);
+ };
+ interpret SlowKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=SlowKeys);
+ };
+ interpret BounceKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=BounceKeys);
+ };
+ interpret StickyKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=StickyKeys);
+ };
+ interpret MouseKeys_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Overlay1_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay1);
+ };
+ interpret Overlay2_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=Overlay2);
+ };
+ interpret AudibleBell_Enable+AnyOfOrNone(all) {
+ action= LockControls(controls=AudibleBell);
+ };
+ interpret Terminate_Server+AnyOfOrNone(all) {
+ action= Terminate();
+ };
+ interpret Alt_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Alt_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Alt,clearLocks);
+ };
+ interpret Meta_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Meta_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Meta,clearLocks);
+ };
+ interpret Super_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Super_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Super,clearLocks);
+ };
+ interpret Hyper_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Hyper_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Hyper,clearLocks);
+ };
+ interpret Shift_L+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret Shift_R+AnyOfOrNone(all) {
+ action= SetMods(modifiers=Shift,clearLocks);
+ };
+ interpret XF86Switch_VT_1+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=1,!same);
+ };
+ interpret XF86Switch_VT_2+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=2,!same);
+ };
+ interpret XF86Switch_VT_3+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=3,!same);
+ };
+ interpret XF86Switch_VT_4+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=4,!same);
+ };
+ interpret XF86Switch_VT_5+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=5,!same);
+ };
+ interpret XF86Switch_VT_6+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=6,!same);
+ };
+ interpret XF86Switch_VT_7+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=7,!same);
+ };
+ interpret XF86Switch_VT_8+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=8,!same);
+ };
+ interpret XF86Switch_VT_9+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=9,!same);
+ };
+ interpret XF86Switch_VT_10+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=10,!same);
+ };
+ interpret XF86Switch_VT_11+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=11,!same);
+ };
+ interpret XF86Switch_VT_12+AnyOfOrNone(all) {
+ repeat= True;
+ action= SwitchScreen(screen=12,!same);
+ };
+ interpret XF86LogGrabInfo+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86LogWindowTree+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
+ };
+ interpret XF86Next_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret XF86Prev_VMode+AnyOfOrNone(all) {
+ repeat= True;
+ action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+ };
+ interpret ISO_Level5_Shift+AnyOfOrNone(all) {
+ action= SetMods(modifiers=LevelFive,clearLocks);
+ };
+ interpret ISO_Level5_Latch+AnyOfOrNone(all) {
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+ };
+ interpret ISO_Level5_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=LevelFive);
+ };
+ interpret Caps_Lock+AnyOfOrNone(all) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+Exactly(Lock) {
+ action= LockMods(modifiers=Lock);
+ };
+ interpret Any+AnyOf(all) {
+ action= SetMods(modifiers=modMapMods,clearLocks);
+ };
+ group 2 = Mod5;
+ group 3 = Mod5;
+ group 4 = Mod5;
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= NumLock;
+ };
+ indicator "Scroll Lock" {
+ whichModState= locked;
+ modifiers= ScrollLock;
+ };
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= locked;
+ modifiers= Shift;
+ };
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= 0xfe;
+ };
+ indicator "Mouse Keys" {
+ indicatorDrivesKeyboard;
+ controls= mouseKeys;
+ };
+};
+
+xkb_symbols "pc+us+inet(evdev)+ctrl(nocaps)+terminate(ctrl_alt_bksp)" {
+
+ name[group1]="English (US)";
+
+ key <ESC> { [ Escape ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ BackSpace, BackSpace, NoSymbol, NoSymbol, Terminate_Server ]
+ };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ q, Q ]
+ };
+ key <AD02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ w, W ]
+ };
+ key <AD03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ e, E ]
+ };
+ key <AD04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ r, R ]
+ };
+ key <AD05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ t, T ]
+ };
+ key <AD06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ y, Y ]
+ };
+ key <AD07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ u, U ]
+ };
+ key <AD08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ i, I ]
+ };
+ key <AD09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ o, O ]
+ };
+ key <AD10> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ p, P ]
+ };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <AC01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ a, A ]
+ };
+ key <AC02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ s, S ]
+ };
+ key <AC03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ d, D ]
+ };
+ key <AC04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ f, F ]
+ };
+ key <AC05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ g, G ]
+ };
+ key <AC06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ h, H ]
+ };
+ key <AC07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ j, J ]
+ };
+ key <AC08> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ k, K ]
+ };
+ key <AC09> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ l, L ]
+ };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <TLDE> { [ grave, asciitilde ] };
+ key <LFSH> { [ Shift_L ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB01> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ z, Z ]
+ };
+ key <AB02> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ x, X ]
+ };
+ key <AB03> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ c, C ]
+ };
+ key <AB04> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ v, V ]
+ };
+ key <AB05> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ b, B ]
+ };
+ key <AB06> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ n, N ]
+ };
+ key <AB07> {
+ type= "ALPHABETIC",
+ symbols[Group1]= [ m, M ]
+ };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+ key <KPMU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ underscore, grave, KP_Multiply, KP_Multiply, XF86ClearGrab ]
+ };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <CAPS> {
+ type= "ONE_LEVEL",
+ symbols[Group1]= [ Control_L ]
+ };
+ key <FK01> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
+ };
+ key <FK02> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
+ };
+ key <FK03> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
+ };
+ key <FK04> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
+ };
+ key <FK05> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
+ };
+ key <FK06> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ]
+ };
+ key <FK07> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ]
+ };
+ key <FK08> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ]
+ };
+ key <FK09> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ]
+ };
+ key <FK10> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ]
+ };
+ key <NMLK> { [ Num_Lock ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPSU> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ]
+ };
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_Begin, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+ key <KPAD> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ]
+ };
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ key <LVL3> { [ ISO_Level3_Shift ] };
+ key <LSGT> {
+ type= "FOUR_LEVEL",
+ symbols[Group1]= [ less, greater, bar, brokenbar ]
+ };
+ key <FK11> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
+ };
+ key <FK12> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
+ };
+ key <KATA> { [ Katakana ] };
+ key <HIRA> { [ Hiragana ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+ key <MUHE> { [ Muhenkan ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <RCTL> { [ Control_R ] };
+ key <KPDV> {
+ type= "CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ]
+ };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <RALT> { [ Multi_key, NoSymbol ] };
+ key <LNFD> { [ Linefeed ] };
+ key <HOME> { [ Home ] };
+ key <UP> { [ Up ] };
+ key <PGUP> { [ Prior ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <END> { [ End ] };
+ key <DOWN> { [ Down ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <MUTE> { [ XF86AudioMute ] };
+ key <VOL-> { [ XF86AudioLowerVolume ] };
+ key <VOL+> { [ XF86AudioRaiseVolume ] };
+ key <POWR> { [ XF86PowerOff ] };
+ key <KPEQ> { [ KP_Equal ] };
+ key <I126> { [ plusminus ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+ key <I128> { [ XF86LaunchA ] };
+ key <I129> { [ KP_Decimal, KP_Decimal ] };
+ key <HNGL> { [ Hangul ] };
+ key <HJCV> { [ Hangul_Hanja ] };
+ key <LWIN> { [ Super_L ] };
+ key <RWIN> { [ Super_R ] };
+ key <COMP> { [ Menu ] };
+ key <STOP> { [ Cancel ] };
+ key <AGAI> { [ Redo ] };
+ key <PROP> { [ SunProps ] };
+ key <UNDO> { [ Undo ] };
+ key <FRNT> { [ SunFront ] };
+ key <COPY> { [ XF86Copy ] };
+ key <OPEN> { [ XF86Open ] };
+ key <PAST> { [ XF86Paste ] };
+ key <FIND> { [ Find ] };
+ key <CUT> { [ XF86Cut ] };
+ key <HELP> { [ Help ] };
+ key <I147> { [ XF86MenuKB ] };
+ key <I148> { [ XF86Calculator ] };
+ key <I150> { [ XF86Sleep ] };
+ key <I151> { [ XF86WakeUp ] };
+ key <I152> { [ XF86Explorer ] };
+ key <I153> { [ XF86Send ] };
+ key <I155> { [ XF86Xfer ] };
+ key <I156> { [ XF86Launch1 ] };
+ key <I157> { [ XF86Launch2 ] };
+ key <I158> { [ XF86WWW ] };
+ key <I159> { [ XF86DOS ] };
+ key <I160> { [ XF86ScreenSaver ] };
+ key <I161> { [ XF86RotateWindows ] };
+ key <I162> { [ XF86TaskPane ] };
+ key <I163> { [ XF86Mail ] };
+ key <I164> { [ XF86Favorites ] };
+ key <I165> { [ XF86MyComputer ] };
+ key <I166> { [ XF86Back ] };
+ key <I167> { [ XF86Forward ] };
+ key <I169> { [ XF86Eject ] };
+ key <I170> { [ XF86Eject ] };
+ key <I171> { [ XF86AudioNext ] };
+ key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I173> { [ XF86AudioPrev ] };
+ key <I174> { [ XF86AudioStop, XF86Eject ] };
+ key <I175> { [ XF86AudioRecord ] };
+ key <I176> { [ XF86AudioRewind ] };
+ key <I177> { [ XF86Phone ] };
+ key <I179> { [ XF86Tools ] };
+ key <I180> { [ XF86HomePage ] };
+ key <I181> { [ XF86Reload ] };
+ key <I182> { [ XF86Close ] };
+ key <I185> { [ XF86ScrollUp ] };
+ key <I186> { [ XF86ScrollDown ] };
+ key <I187> { [ parenleft ] };
+ key <I188> { [ parenright ] };
+ key <I189> { [ XF86New ] };
+ key <I190> { [ Redo ] };
+ key <FK13> { [ XF86Tools ] };
+ key <FK14> { [ XF86Launch5 ] };
+ key <FK15> { [ XF86Launch6 ] };
+ key <FK16> { [ XF86Launch7 ] };
+ key <FK17> { [ XF86Launch8 ] };
+ key <FK18> { [ XF86Launch9 ] };
+ key <FK20> { [ XF86AudioMicMute ] };
+ key <FK21> { [ XF86TouchpadToggle ] };
+ key <FK22> { [ XF86TouchpadOn ] };
+ key <FK23> { [ XF86TouchpadOff ] };
+ key <LVL5> { [ ISO_Level5_Shift ] };
+ key <ALT> { [ NoSymbol, Alt_L ] };
+ key <META> { [ NoSymbol, Meta_L ] };
+ key <SUPR> { [ NoSymbol, Super_L ] };
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ key <I208> { [ XF86AudioPlay ] };
+ key <I209> { [ XF86AudioPause ] };
+ key <I210> { [ XF86Launch3 ] };
+ key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
+ key <I213> { [ XF86Suspend ] };
+ key <I214> { [ XF86Close ] };
+ key <I215> { [ XF86AudioPlay ] };
+ key <I216> { [ XF86AudioForward ] };
+ key <I218> { [ Print ] };
+ key <I220> { [ XF86WebCam ] };
+ key <I221> { [ XF86AudioPreset ] };
+ key <I223> { [ XF86Mail ] };
+ key <I224> { [ XF86Messenger ] };
+ key <I225> { [ XF86Search ] };
+ key <I226> { [ XF86Go ] };
+ key <I227> { [ XF86Finance ] };
+ key <I228> { [ XF86Game ] };
+ key <I229> { [ XF86Shop ] };
+ key <I231> { [ Cancel ] };
+ key <I232> { [ XF86MonBrightnessDown ] };
+ key <I233> { [ XF86MonBrightnessUp ] };
+ key <I234> { [ XF86AudioMedia ] };
+ key <I235> { [ XF86Display ] };
+ key <I236> { [ XF86KbdLightOnOff ] };
+ key <I237> { [ XF86KbdBrightnessDown ] };
+ key <I238> { [ XF86KbdBrightnessUp ] };
+ key <I239> { [ XF86Send ] };
+ key <I240> { [ XF86Reply ] };
+ key <I241> { [ XF86MailForward ] };
+ key <I242> { [ XF86Save ] };
+ key <I243> { [ XF86Documents ] };
+ key <I244> { [ XF86Battery ] };
+ key <I245> { [ XF86Bluetooth ] };
+ key <I246> { [ XF86WLAN ] };
+ key <I247> { [ XF86UWB ] };
+ key <I249> { [ XF86Next_VMode ] };
+ key <I250> { [ XF86Prev_VMode ] };
+ key <I251> { [ XF86MonBrightnessCycle ] };
+ key <I252> { [ XF86BrightnessAuto ] };
+ key <I253> { [ XF86DisplayOff ] };
+ key <I254> { [ XF86WWAN ] };
+ key <I255> { [ XF86RFKill ] };
+ modifier_map Control { <LCTL> };
+ modifier_map Shift { <LFSH> };
+ modifier_map Shift { <RTSH> };
+ modifier_map Mod1 { <LALT> };
+ modifier_map Control { <CAPS> };
+ modifier_map Mod2 { <NMLK> };
+ modifier_map Mod5 { <LVL3> };
+ modifier_map Control { <RCTL> };
+ modifier_map Mod1 { <RALT> };
+ modifier_map Mod4 { <LWIN> };
+ modifier_map Mod4 { <RWIN> };
+ modifier_map Mod3 { <LVL5> };
+ modifier_map Mod1 { <ALT> };
+ modifier_map Mod1 { <META> };
+ modifier_map Mod4 { <SUPR> };
+ modifier_map Mod4 { <HYPR> };
+};
+
+xkb_geometry "pc(pc105)" {
+
+ width= 470;
+ height= 180;
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ description= "Generic 105-key PC";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 18, 18 ] },
+ { [ 2, 1 ], [ 16, 16 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 38, 18 ] },
+ { [ 2, 1 ], [ 36, 16 ] }
+ };
+ shape "TABK" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "BKSL" {
+ corner= 1,
+ { [ 28, 18 ] },
+ { [ 2, 1 ], [ 26, 16 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 0, 0 ], [ 28, 0 ], [ 28, 37 ], [ 5, 37 ],
+ [ 5, 18 ], [ 0, 18 ] },
+ { [ 2, 1 ], [ 26, 1 ], [ 26, 35 ], [ 7, 35 ],
+ [ 7, 16 ], [ 2, 16 ] },
+ approx= { [ 5, 0 ], [ 28, 37 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 33, 18 ] },
+ { [ 2, 1 ], [ 31, 16 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 25, 18 ] },
+ { [ 2, 1 ], [ 23, 16 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 50, 18 ] },
+ { [ 2, 1 ], [ 48, 16 ] }
+ };
+ shape "MODK" {
+ corner= 1,
+ { [ 27, 18 ] },
+ { [ 2, 1 ], [ 25, 16 ] }
+ };
+ shape "SMOD" {
+ corner= 1,
+ { [ 23, 18 ] },
+ { [ 2, 1 ], [ 21, 16 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 113, 18 ] },
+ { [ 2, 1 ], [ 111, 16 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 37, 18 ] },
+ { [ 2, 1 ], [ 35, 16 ] }
+ };
+ shape "KPAD" {
+ corner= 1,
+ { [ 18, 37 ] },
+ { [ 2, 1 ], [ 16, 35 ] }
+ };
+ shape "LEDS" { { [ 75, 20 ] } };
+ shape "LED" { { [ 5, 1 ] } };
+ section "Function" {
+ key.color= "grey20";
+ priority= 7;
+ top= 22;
+ left= 19;
+ width= 351;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <ESC>, "NORM", 1 },
+ { <FK01>, "NORM", 20, color="white" },
+ { <FK02>, "NORM", 1, color="white" },
+ { <FK03>, "NORM", 1, color="white" },
+ { <FK04>, "NORM", 1, color="white" },
+ { <FK05>, "NORM", 11, color="white" },
+ { <FK06>, "NORM", 1, color="white" },
+ { <FK07>, "NORM", 1, color="white" },
+ { <FK08>, "NORM", 1, color="white" },
+ { <FK09>, "NORM", 11, color="white" },
+ { <FK10>, "NORM", 1, color="white" },
+ { <FK11>, "NORM", 1, color="white" },
+ { <FK12>, "NORM", 1, color="white" },
+ { <PRSC>, "NORM", 8, color="white" },
+ { <SCLK>, "NORM", 1, color="white" },
+ { <PAUS>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 61;
+ left= 19;
+ width= 287;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <TLDE>, "NORM", 1 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <TAB>, "TABK", 1, color="grey20" },
+ { <AD01>, "NORM", 1 }, { <AD02>, "NORM", 1 },
+ { <AD03>, "NORM", 1 }, { <AD04>, "NORM", 1 },
+ { <AD05>, "NORM", 1 }, { <AD06>, "NORM", 1 },
+ { <AD07>, "NORM", 1 }, { <AD08>, "NORM", 1 },
+ { <AD09>, "NORM", 1 }, { <AD10>, "NORM", 1 },
+ { <AD11>, "NORM", 1 }, { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <CAPS>, "CAPS", 1, color="grey20" },
+ { <AC01>, "NORM", 1 }, { <AC02>, "NORM", 1 },
+ { <AC03>, "NORM", 1 }, { <AC04>, "NORM", 1 },
+ { <AC05>, "NORM", 1 }, { <AC06>, "NORM", 1 },
+ { <AC07>, "NORM", 1 }, { <AC08>, "NORM", 1 },
+ { <AC09>, "NORM", 1 }, { <AC10>, "NORM", 1 },
+ { <AC11>, "NORM", 1 }, { <BKSL>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <LFSH>, "LFSH", 1, color="grey20" },
+ { <LSGT>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LCTL>, "MODK", 1, color="grey20" },
+ { <LWIN>, "SMOD", 1, color="grey20" },
+ { <LALT>, "SMOD", 1, color="grey20" },
+ { <SPCE>, "SPCE", 1 },
+ { <RALT>, "SMOD", 1, color="grey20" },
+ { <RWIN>, "SMOD", 1, color="grey20" },
+ { <MENU>, "SMOD", 1, color="grey20" },
+ { <RCTL>, "SMOD", 1, color="grey20" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey20";
+ priority= 9;
+ top= 61;
+ left= 312;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "grey20";
+ priority= 10;
+ top= 61;
+ left= 376;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1, color="white" },
+ { <KP8>, "NORM", 1, color="white" },
+ { <KP9>, "NORM", 1, color="white" },
+ { <KPAD>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1, color="white" },
+ { <KP5>, "NORM", 1, color="white" },
+ { <KP6>, "NORM", 1, color="white" }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1, color="white" },
+ { <KP2>, "NORM", 1, color="white" },
+ { <KP3>, "NORM", 1, color="white" },
+ { <KPEN>, "KPAD", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1, color="white" },
+ { <KPDL>, "NORM", 1, color="white" }
+ };
+ };
+ }; // End of "Keypad" section
+
+ solid "LedPanel" {
+ top= 22;
+ left= 377;
+ priority= 0;
+ color= "grey10";
+ shape= "LEDS";
+ };
+ indicator "Num Lock" {
+ top= 37;
+ left= 382;
+ priority= 1;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Caps Lock" {
+ top= 37;
+ left= 407;
+ priority= 2;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ indicator "Scroll Lock" {
+ top= 37;
+ left= 433;
+ priority= 3;
+ onColor= "green";
+ offColor= "green30";
+ shape= "LED";
+ };
+ text "NumLockLabel" {
+ top= 25;
+ left= 378;
+ priority= 4;
+ width= 19.8;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Num\nLock";
+ };
+ text "CapsLockLabel" {
+ top= 25;
+ left= 403;
+ priority= 5;
+ width= 26.4;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Caps\nLock";
+ };
+ text "ScrollLockLabel" {
+ top= 25;
+ left= 428;
+ priority= 6;
+ width= 39.6;
+ height= 10;
+ XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
+ text= "Scroll\nLock";
+ };
+};
+
+};