From 71b59977ada2544af4778eeecde6e73e80cad4aa Mon Sep 17 00:00:00 2001 From: "wayo.cavazos" Date: Fri, 17 Feb 2006 07:43:21 +0000 Subject: [PATCH] Switch between desktops using keyboard in factory --- contrib/factory/factory.factor | 40 +++++++++++++++------------------- contrib/x11/x.factor | 3 +++ 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/contrib/factory/factory.factor b/contrib/factory/factory.factor index 74bea36e82..f39f297324 100644 --- a/contrib/factory/factory.factor +++ b/contrib/factory/factory.factor @@ -275,31 +275,24 @@ M: wm-root handle-button-press-event ( event wm-root -- ) ! M: wm-root handle-key-press-event ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! M: wm-root handle-key-press-event ( event wm-root -- ) -! drop -! { { [ dup XKeyEvent-keycode 67 = ] -! [ workspace-1 get switch-to-workspace ] } -! { [ dup XKeyEvent-keycode 68 = ] -! [ workspace-2 get switch-to-workspace ] } -! { [ dup XKeyEvent-keycode 69 = ] -! [ workspace-3 get switch-to-workspace ] } -! { [ dup XKeyEvent-keycode 70 = ] -! [ workspace-4 get switch-to-workspace ] } } -! cond ; +SYMBOL: f1-keycode 67 f1-keycode set-global +SYMBOL: f2-keycode 68 f2-keycode set-global +SYMBOL: f3-keycode 69 f3-keycode set-global +SYMBOL: f4-keycode 70 f4-keycode set-global + +: grab-keys ( -- ) +f1-keycode get Mod1Mask False GrabModeAsync GrabModeAsync grab-key +f2-keycode get Mod1Mask False GrabModeAsync GrabModeAsync grab-key +f3-keycode get Mod1Mask False GrabModeAsync GrabModeAsync grab-key +f4-keycode get Mod1Mask False GrabModeAsync GrabModeAsync grab-key ; M: wm-root handle-key-press-event ( event wm-root -- ) - drop - { { [ dup XKeyEvent-keycode 67 = ] - [ "Switch to workspace 1" print drop ] } - { [ dup XKeyEvent-keycode 68 = ] - [ "Switch to workspace 2" print drop ] } - { [ dup XKeyEvent-keycode 69 = ] - [ "Switch to workspace 3" print drop ] } - { [ dup XKeyEvent-keycode 70 = ] - [ "Switch to workspace 4" print drop ] } - { [ t ] - [ "wm-root ignoring key press" print drop ] } } - cond ; +drop +{ { [ dup XKeyEvent-keycode f1-keycode get = ] [ workspace-1 get switch-to ] } + { [ dup XKeyEvent-keycode f2-keycode get = ] [ workspace-2 get switch-to ] } + { [ dup XKeyEvent-keycode f3-keycode get = ] [ workspace-3 get switch-to ] } + { [ dup XKeyEvent-keycode f4-keycode get = ] [ workspace-4 get switch-to ] } + { [ t ] [ "wm-root ignoring key press" print drop ] } } cond ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -592,6 +585,7 @@ SYMBOL: window-list root get [ make-drag-gc ] with-win drag-gc set root get [ black-pixel get set-window-background clear-window ] with-win root get create-wm-root + root get [ grab-keys ] with-win setup-root-menu setup-window-list setup-workspace-menu diff --git a/contrib/x11/x.factor b/contrib/x11/x.factor index 223c7673d2..f1c78f2f2b 100644 --- a/contrib/x11/x.factor +++ b/contrib/x11/x.factor @@ -251,6 +251,9 @@ dup length 1 - [ swap 2nth draw-line ] each-with ; : ungrab-pointer ( time -- ) >r dpy get r> XUngrabPointer drop ; +: grab-key ( keycode modifiers owner-events pointer-mode keyboard-mode -- ) +>r >r >r >r >r dpy get r> r> win get r> r> r> XGrabKey drop ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 14 - Inter-Client Communication Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!