Last active
February 9, 2024 15:35
-
-
Save stephenwithav/defea061554b540e8567059797fd5bcf to your computer and use it in GitHub Desktop.
mousekeys
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
keysym F7 = MouseKeys_Enable | |
keysym Caps_Lock = MouseKeys_Enable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Add additional MouseKey keybindings for Xorg. | |
// /usr/share/X11/xkb/compat/mousekeys | |
// Specifically: | |
// u i o -> 7 8 9 | |
// j l -> 4 6 | |
// m , . -> 1 2 3 | |
// b -> Left Click | |
// n -> Right Click | |
// g -> Hold/Release Left mouse button | |
// h -> Hold/Release Right mouse button | |
// t -> Scroll up with mouse wheel | |
// y -> Scroll down with mouse wheel | |
// Interpretations for arrow keys and a bunch of other | |
// common keysyms which make it possible to bind "mouse" | |
// keys using xmodmap and activate or deactivate them | |
// from the keyboard. | |
default partial xkb_compatibility "mousekeys" { | |
// Keypad actions. | |
// | |
interpret.repeat= True; | |
interpret KP_1 { | |
action = MovePtr(x=-1,y= +1); | |
}; | |
interpret KP_End { | |
action = MovePtr(x=-1,y= +1); | |
}; | |
interpret m { | |
action = MovePtr(x=-10,y= +10); | |
}; | |
interpret KP_2 { | |
action = MovePtr(x=+0,y= +1); | |
}; | |
interpret KP_Down { | |
action = MovePtr(x=+0,y= +1); | |
}; | |
interpret comma { | |
action = MovePtr(x=+0,y= +10); | |
}; | |
interpret KP_3 { | |
action = MovePtr(x=+1,y=+1); | |
}; | |
interpret KP_Next { | |
action = MovePtr(x=+1,y=+1); | |
}; | |
interpret period { | |
action = MovePtr(x=+10,y=+10); | |
}; | |
interpret KP_4 { | |
action = MovePtr(x=-1,y=+0); | |
}; | |
interpret KP_Left { | |
action = MovePtr(x=-1,y=+0); | |
}; | |
interpret j { | |
action = MovePtr(x=-10,y=+0); | |
}; | |
interpret KP_6 { | |
action = MovePtr(x=+1,y=+0); | |
}; | |
interpret KP_Right { | |
action = MovePtr(x=+1,y=+0); | |
}; | |
interpret l { | |
action = MovePtr(x=+10,y=+0); | |
}; | |
interpret KP_7 { | |
action = MovePtr(x=-1,y=-1); | |
}; | |
interpret KP_Home { | |
action = MovePtr(x=-1,y=-1); | |
}; | |
interpret u { | |
action = MovePtr(x=-10,y=-10); | |
}; | |
interpret KP_8 { | |
action = MovePtr(x=+0,y=-1); | |
}; | |
interpret KP_Up { | |
action = MovePtr(x=+0,y=-1); | |
}; | |
interpret i { | |
action = MovePtr(x=+0,y=-10); | |
}; | |
interpret KP_9 { | |
action = MovePtr(x=+1,y=-1); | |
}; | |
interpret KP_Prior { | |
action = MovePtr(x=+1,y=-1); | |
}; | |
interpret o { | |
action = MovePtr(x=+10,y=-10); | |
}; | |
// Button clicks/actions | |
interpret b { | |
action = PointerButton(button=1); | |
}; | |
interpret n { | |
action = PointerButton(button=3); | |
}; | |
interpret B { | |
action = PointerButton(button=1); | |
}; | |
interpret N { | |
action = PointerButton(button=3); | |
}; | |
interpret g { | |
action = LockPointerButton(button=1); | |
}; | |
interpret h { | |
action = LockPointerButton(button=3); | |
}; | |
interpret G { | |
action = LockPointerButton(button=1); | |
}; | |
interpret H { | |
action = LockPointerButton(button=3); | |
}; | |
interpret t { | |
action = PointerButton(button=4); | |
}; | |
interpret y { | |
action = PointerButton(button=5); | |
}; | |
interpret T { | |
action = PointerButton(button=4); | |
}; | |
interpret Y { | |
action = PointerButton(button=5); | |
}; | |
// End clicks/actions | |
interpret KP_5 { | |
action = PointerButton(button=default); | |
}; | |
interpret KP_Begin { | |
action = PointerButton(button=default); | |
}; | |
interpret KP_F2 { | |
action = SetPtrDflt(affect=defaultButton,button=1); | |
}; | |
interpret KP_Divide { | |
action = SetPtrDflt(affect=defaultButton,button=1); | |
}; | |
interpret KP_F3 { | |
action = SetPtrDflt(affect=defaultButton,button=2); | |
}; | |
interpret KP_Multiply { | |
action = SetPtrDflt(affect=defaultButton,button=2); | |
}; | |
interpret KP_F4 { | |
action = SetPtrDflt(affect=defaultButton,button=3); | |
}; | |
interpret KP_Subtract { | |
action = SetPtrDflt(affect=defaultButton,button=3); | |
}; | |
interpret KP_Separator { | |
action = PointerButton(button=default,count=2); | |
}; | |
interpret KP_Add { | |
action = PointerButton(button=default,count=2); | |
}; | |
interpret KP_0 { | |
action = LockPointerButton(button=default,affect=lock); | |
}; | |
interpret KP_Insert { | |
action = LockPointerButton(button=default,affect=lock); | |
}; | |
interpret KP_Decimal { | |
action = LockPointerButton(button=default,affect=unlock); | |
}; | |
interpret KP_Delete { | |
action = LockPointerButton(button=default,affect=unlock); | |
}; | |
// Additional mappings for Solaris keypad compatibility | |
interpret F25 { // aka KP_Divide | |
action = SetPtrDflt(affect=defaultButton,button=1); | |
}; | |
interpret F26 { // aka KP_Multiply | |
action = SetPtrDflt(affect=defaultButton,button=2); | |
}; | |
interpret F27 { // aka KP_Home | |
action = MovePtr(x=-1,y=-1); | |
}; | |
interpret F29 { // aka KP_Prior | |
action = MovePtr(x=+1,y=-1); | |
}; | |
interpret F31 { // aka KP_Begin | |
action = PointerButton(button=default); | |
}; | |
interpret F33 { // aka KP_End | |
action = MovePtr(x=-1,y= +1); | |
}; | |
interpret F35 { // aka KP_Next | |
action = MovePtr(x=+1,y=+1); | |
}; | |
interpret.repeat= False; | |
// New Keysym Actions. | |
// | |
interpret Pointer_Button_Dflt { | |
action= PointerButton(button=default); | |
}; | |
interpret Pointer_Button1 { | |
action= PointerButton(button=1); | |
}; | |
interpret Pointer_Button2 { | |
action= PointerButton(button=2); | |
}; | |
interpret Pointer_Button3 { | |
action= PointerButton(button=3); | |
}; | |
interpret Pointer_DblClick_Dflt { | |
action= PointerButton(button=default,count=2); | |
}; | |
interpret Pointer_DblClick1 { | |
action= PointerButton(button=1,count=2); | |
}; | |
interpret Pointer_DblClick2 { | |
action= PointerButton(button=2,count=2); | |
}; | |
interpret Pointer_DblClick3 { | |
action= PointerButton(button=3,count=2); | |
}; | |
interpret Pointer_Drag_Dflt { | |
action= LockPointerButton(button=default); | |
}; | |
interpret Pointer_Drag1 { | |
action= LockPointerButton(button=1); | |
}; | |
interpret Pointer_Drag2 { | |
action= LockPointerButton(button=2); | |
}; | |
interpret Pointer_Drag3 { | |
action= LockPointerButton(button=3); | |
}; | |
interpret Pointer_EnableKeys { | |
action= LockControls(controls=MouseKeys); | |
}; | |
interpret Pointer_Accelerate { | |
action= LockControls(controls=MouseKeysAccel); | |
}; | |
interpret Pointer_DfltBtnNext { | |
action= SetPtrDflt(affect=defaultButton,button= +1); | |
}; | |
interpret Pointer_DfltBtnPrev { | |
action= SetPtrDflt(affect=defaultButton,button= -1); | |
}; | |
// Allow an indicator for MouseKeys. | |
indicator "Mouse Keys" { | |
// !allowExplicit; | |
indicatorDrivesKeyboard; | |
controls= MouseKeys; | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/sh | |
xkbset sticky -twokey latchlock | |
xkbset exp =sticky =latchlock | |
xmodmap .Xmodmap | |
xset s off | |
xset -dpms |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment