CONSTANT: modifiers {
{ S+ $ NSShiftKeyMask }
{ C+ $ NSControlKeyMask }
- { A+ $ NSCommandKeyMask }
- { M+ $ NSAlternateKeyMask }
+ { M+ $ NSCommandKeyMask }
+ { A+ $ NSAlternateKeyMask }
}
CONSTANT: key-codes
} define-command-map
os macosx? [
- [ "⌘A" ] [ T{ key-down f { A+ } "a" } gesture>string ] unit-test
- [ "B" ] [ T{ key-down f f "b" } gesture>string ] unit-test
+ { "⌘A" } [ T{ key-down f { M+ } "a" } gesture>string ] unit-test
+ { "B" } [ T{ key-down f f "b" } gesture>string ] unit-test
- [ "⌃X" ] [
+ { "⌃X" } [
[
{ $command testing "testing" com-test-1 } print-element
] with-string-writer
] unit-test
] [
- [ "A+a" ] [ T{ key-down f { A+ } "a" } gesture>string ] unit-test
- [ "b" ] [ T{ key-down f f "b" } gesture>string ] unit-test
+ { "A+a" } [ T{ key-down f { A+ } "a" } gesture>string ] unit-test
+ { "b" } [ T{ key-down f f "b" } gesture>string ] unit-test
- [ "C+x" ] [
+ { "C+x" } [
[
{ $command testing "testing" com-test-1 } print-element
] with-string-writer
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs calendar colors.constants
combinators combinators.short-circuit documents
-documents.elements fonts fry grouping kernel locals make math
-math.functions math.order math.ranges math.rectangles
-math.vectors models models.arrow namespaces opengl sequences
-sorting splitting system timers ui.baseline-alignment
+documents.elements fonts fry grouping kernel literals locals
+make math math.functions math.order math.ranges math.rectangles
+math.vectors models models.arrow namespaces opengl opengl.gl
+sequences sorting splitting system timers ui.baseline-alignment
ui.clipboards ui.commands ui.gadgets ui.gadgets.borders
ui.gadgets.line-support ui.gadgets.menus ui.gadgets.scrollers
-ui.gestures ui.pens.solid ui.render ui.text ui.theme unicode
-opengl.gl ;
+ui.gestures ui.pens.solid ui.render ui.text ui.theme unicode ;
IN: ui.gadgets.editors
TUPLE: editor < line-gadget
{ redo-action com-redo }
{ T{ key-down f f "DELETE" } delete-next-character }
{ T{ key-down f f "BACKSPACE" } delete-previous-character }
+ { T{ key-down f { S+ } "DELETE" } delete-next-character }
{ T{ key-down f { S+ } "BACKSPACE" } delete-previous-character }
- { T{ key-down f { C+ } "DELETE" } delete-next-word }
- { T{ key-down f { C+ } "BACKSPACE" } delete-previous-word }
- { T{ key-down f { A+ } "DELETE" } delete-to-end-of-line }
- { T{ key-down f { A+ } "BACKSPACE" } delete-to-start-of-line }
-} os unix? [ {
+ { T{ key-down f ${ os macosx? A+ C+ ? } "DELETE" } delete-next-word }
+ { T{ key-down f ${ os macosx? A+ C+ ? } "BACKSPACE" } delete-previous-word }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "DELETE" } delete-to-end-of-line }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "BACKSPACE" } delete-to-start-of-line }
+} os macosx? [ {
+ { T{ key-down f { C+ } "DELETE" } delete-next-character }
+ { T{ key-down f { C+ } "BACKSPACE" } delete-previous-character }
+} append ] when os unix? [ {
+ ! { T{ key-down f { C+ } "t" } transpose-character }
{ T{ key-down f { C+ } "d" } delete-next-character }
{ T{ key-down f { C+ } "h" } delete-previous-character }
{ T{ key-down f { C+ } "u" } delete-to-start-of-line }
{ T{ button-down } position-caret }
{ T{ key-down f f "LEFT" } previous-character }
{ T{ key-down f f "RIGHT" } next-character }
- { T{ key-down f { C+ } "LEFT" } previous-word }
- { T{ key-down f { C+ } "RIGHT" } next-word }
+ { T{ key-down f ${ os macosx? A+ C+ ? } "LEFT" } previous-word }
+ { T{ key-down f ${ os macosx? A+ C+ ? } "RIGHT" } next-word }
{ T{ key-down f f "HOME" } start-of-line }
{ T{ key-down f f "END" } end-of-line }
- { T{ key-down f { C+ } "HOME" } start-of-document }
- { T{ key-down f { C+ } "END" } end-of-document }
-} os unix? [ {
+ ! { T{ key-down f ${ os macosx? A+ C+ ? } "UP" } start-of-paragraph }
+ ! { T{ key-down f ${ os macosx? A+ C+ ? } "DOWN" } end-of-paragraph }
+ { T{ key-down f ${ os macosx? A+ C+ ? } "HOME" } start-of-document }
+ { T{ key-down f ${ os macosx? A+ C+ ? } "END" } end-of-document }
+} os macosx? [ {
+ { T{ key-down f { M+ } "LEFT" } start-of-line }
+ { T{ key-down f { M+ } "RIGHT" } end-of-line }
+ ! { T{ key-down f { M+ } "UP" } start-of-paragraph }
+ ! { T{ key-down f { M+ } "DOWN" } end-of-paragraph }
+ { T{ key-down f { M+ } "HOME" } start-of-document }
+ { T{ key-down f { M+ } "END" } end-of-document }
+} append ] when os unix? [ {
{ T{ key-down f { C+ } "b" } previous-character }
{ T{ key-down f { C+ } "f" } next-character }
{ T{ key-down f { C+ } "a" } start-of-line }
{ T{ key-down f { C+ } "l" } select-line }
{ T{ key-down f { S+ } "LEFT" } select-previous-character }
{ T{ key-down f { S+ } "RIGHT" } select-next-character }
- { T{ key-down f { S+ C+ } "LEFT" } select-previous-word }
- { T{ key-down f { S+ C+ } "RIGHT" } select-next-word }
+ { T{ key-down f ${ S+ os macosx? A+ C+ ? } "LEFT" } select-previous-word }
+ { T{ key-down f ${ S+ os macosx? A+ C+ ? } "RIGHT" } select-next-word }
{ T{ key-down f { S+ } "HOME" } select-start-of-line }
{ T{ key-down f { S+ } "END" } select-end-of-line }
- { T{ key-down f { S+ C+ } "HOME" } select-start-of-document }
- { T{ key-down f { S+ C+ } "END" } select-end-of-document }
-} define-command-map
+ ! { T{ key-down f ${ S+ os macosx? A+ C+ ? } "UP" } select-start-of-paragraph }
+ ! { T{ key-down f ${ S+ os macosx? A+ C+ ? } "DOWN" } select-end-of-paragraph }
+ { T{ key-down f ${ S+ os macosx? A+ C+ ? } "HOME" } select-start-of-document }
+ { T{ key-down f ${ S+ os macosx? A+ C+ ? } "END" } select-end-of-document }
+} os macosx? [ {
+ { T{ key-down f { S+ M+ } "LEFT" } select-start-of-line }
+ { T{ key-down f { S+ M+ } "RIGHT" } select-end-of-line }
+ ! { T{ key-down f ${ S+ M+ } "UP" } select-start-of-paragraph }
+ ! { T{ key-down f ${ S+ M+ } "DOWN" } select-end-of-paragraph }
+ { T{ key-down f { S+ M+ } "HOME" } select-start-of-document }
+ { T{ key-down f { S+ M+ } "END" } select-end-of-document }
+} append ] when define-command-map
: editor-menu ( editor -- )
{
{ $description "Control key modifier." } ;
HELP: A+
-{ $description "Alt key modifier." } ;
+{ $description "Alt key modifier. This is the Option key on Mac OS X." } ;
HELP: M+
-{ $description "Meta key modifier. This is the Command key on Mac OS X and the Windows key on other Unices and Windows." } ;
+{ $description "Meta key modifier. This is the Command key on Mac OS X and the Windows key on other Unix and Windows platforms." } ;
HELP: S+
{ $description "Shift key modifier." } ;
"On Mac OS X, the modifier keys map as follows:"
{ $table
{ { $link S+ } "Shift" }
- { { $link A+ } "Command (Apple)" }
+ { { $link A+ } "Option" }
{ { $link C+ } "Control" }
- { { $link M+ } "Option" }
+ { { $link M+ } "Command (Apple)" }
}
"On Windows and X11:"
{ $table
M: macosx modifiers>string
[
{
- { A+ [ "\u002318" ] }
- { M+ [ "\u002325" ] }
+ { M+ [ "\u002318" ] }
+ { A+ [ "\u002325" ] }
{ S+ [ "\u0021e7" ] }
{ C+ [ "\u002303" ] }
} case
USING: accessors arrays assocs classes combinators
combinators.short-circuit compiler.units debugger fonts fry help
help.apropos help.crossref help.home help.markup help.stylesheet
-help.topics io.styles kernel locals make math.vectors models
-namespaces sequences sets ui ui.commands ui.gadgets ui.gadgets.borders
-ui.gadgets.editors ui.gadgets.glass ui.gadgets.panes
-ui.gadgets.scrollers ui.gadgets.status-bar ui.gadgets.toolbar
-ui.gadgets.tracks ui.gadgets.viewports ui.gadgets.worlds ui.gestures
-ui.pens.solid ui.theme ui.tools.browser.history
-ui.tools.browser.popups ui.tools.common unicode vocabs ;
+help.topics io.styles kernel literals locals make math math.vectors
+models namespaces sequences sets system ui ui.commands
+ui.gadgets ui.gadgets.borders ui.gadgets.editors
+ui.gadgets.glass ui.gadgets.panes ui.gadgets.scrollers
+ui.gadgets.status-bar ui.gadgets.toolbar ui.gadgets.tracks
+ui.gadgets.viewports ui.gadgets.worlds ui.gestures ui.pens.solid
+ui.theme ui.tools.browser.history ui.tools.browser.popups
+ui.tools.common unicode vocabs ;
IN: ui.tools.browser
TUPLE: browser-gadget < tool history scroller search-field popup ;
\ glossary H{ { +nullary+ t } } define-command
browser-gadget "toolbar" f {
- { T{ key-down f { A+ } "LEFT" } com-back }
- { T{ key-down f { A+ } "RIGHT" } com-forward }
- { T{ key-down f { A+ } "H" } com-home }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "LEFT" } com-back }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "RIGHT" } com-forward }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "HOME" } com-home }
{ T{ key-down f f "F1" } browser-help }
- { T{ key-down f { A+ } "F1" } glossary }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "F1" } glossary }
} define-command-map
: ?show-help ( link browser -- )
: com-next ( browser -- ) [ next-article ] navigate ;
browser-gadget "navigation" "Commands for navigating in the article hierarchy" {
- { T{ key-down f { A+ } "u" } com-up }
- { T{ key-down f { A+ } "p" } com-prev }
- { T{ key-down f { A+ } "n" } com-next }
- { T{ key-down f { A+ } "k" } com-show-outgoing-links }
- { T{ key-down f { A+ } "K" } com-show-incoming-links }
-} define-command-map
+ { T{ key-down f ${ os macosx? M+ A+ ? } "UP" } com-up }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "p" } com-prev }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "n" } com-next }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "k" } com-show-outgoing-links }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "K" } com-show-incoming-links }
+} os macosx? [ {
+ { T{ key-down f { M+ } "[" } com-back }
+ { T{ key-down f { M+ } "]" } com-forward }
+} append ] when define-command-map
browser-gadget "multi-touch" f {
{ left-action com-back }
: com-font-size-minus ( browser -- )
-2 adjust-help-font-size model>> notify-connections ;
+: com-font-size-normal ( browser -- )
+ font-size-span default-style get font-size of -
+ adjust-help-font-size model>> notify-connections ;
+
browser-gadget "fonts" f {
- { T{ key-down f { A+ } "+" } com-font-size-plus }
- { T{ key-down f { A+ } "=" } com-font-size-plus }
- { T{ key-down f { A+ } "_" } com-font-size-minus }
- { T{ key-down f { A+ } "-" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "+" } com-font-size-plus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "=" } com-font-size-plus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "_" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "-" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "0" } com-font-size-normal }
} define-command-map
MAIN: browser-window
listener-gadget "toolbar" f {
{ f restart-listener }
- { T{ key-down f { A+ } "u" } com-auto-use }
- { T{ key-down f { A+ } "k" } clear-output }
- { T{ key-down f { A+ } "K" } clear-stack }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "u" } com-auto-use }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "k" } clear-output }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "K" } clear-stack }
{ T{ key-down f f "F1" } com-help }
} define-command-map
listener-gadget "scrolling"
"The listener's scroller can be scrolled from the keyboard."
{
- { T{ key-down f { A+ } "UP" } com-scroll-up }
- { T{ key-down f { A+ } "DOWN" } com-scroll-down }
- { T{ key-down f { A+ } "PAGE_UP" } com-page-up }
- { T{ key-down f { A+ } "PAGE_DOWN" } com-page-down }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "UP" } com-scroll-up }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "DOWN" } com-scroll-down }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "PAGE_UP" } com-page-up }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "PAGE_DOWN" } com-page-down }
} define-command-map
listener-gadget "multi-touch" f {
: com-font-size-minus ( listener -- )
-2 adjust-listener-font-size ;
+: com-font-size-normal ( listener -- )
+ default-font-size over input>> font>> size>> -
+ adjust-listener-font-size ;
+
listener-gadget "fonts" f {
- { T{ key-down f { A+ } "+" } com-font-size-plus }
- { T{ key-down f { A+ } "=" } com-font-size-plus }
- { T{ key-down f { A+ } "_" } com-font-size-minus }
- { T{ key-down f { A+ } "-" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "+" } com-font-size-plus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "=" } com-font-size-plus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "_" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "-" } com-font-size-minus }
+ { T{ key-down f ${ os macosx? M+ C+ ? } "0" } com-font-size-normal }
} define-command-map
! Copyright (C) 2006, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: memory namespaces system ui ui.backend ui.commands
-ui.gestures ui.tools.browser ui.tools.common ui.tools.error-list
-ui.tools.listener vocabs.refresh ;
+USING: kernel literals memory namespaces sequences system ui
+ui.backend ui.commands ui.gestures ui.tools.browser
+ui.tools.common ui.tools.error-list ui.tools.listener
+vocabs.refresh ;
IN: ui.tools
\ refresh-all H{ { +nullary+ t } { +listener+ t } } define-command
\ com-exit H{ { +nullary+ t } } define-command
tool "tool-switching" f {
- { T{ key-down f { A+ } "l" } show-listener }
- { T{ key-down f { A+ } "L" } listener-window }
- { T{ key-down f { A+ } "b" } show-browser }
- { T{ key-down f { A+ } "B" } browser-window }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "l" } show-listener }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "L" } listener-window }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "b" } show-browser }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "B" } browser-window }
} define-command-map
tool "common" f {
- { T{ key-down f { A+ } "w" } close-window }
- { T{ key-down f { A+ } "F" } toggle-fullscreen }
- { T{ key-down f { A+ } "q" } com-exit }
+ { T{ key-down f ${ os macosx? M+ A+ ? } "q" } com-exit }
{ T{ key-down f f "F2" } refresh-all }
{ T{ key-down f f "F3" } show-error-list }
-} define-command-map
+} os macosx? {
+ { T{ key-down f { M+ } "w" } close-window }
+ { T{ key-down f { M+ } "q" } com-exit }
+ { T{ key-down f { C+ M+ } "f" } toggle-fullscreen }
+} {
+ { T{ key-down f { C+ } "w" } close-window }
+ { T{ key-down f { C+ } "F4" } close-window }
+ { T{ key-down f { A+ } "F4" } com-exit }
+ { T{ key-down f f "F11" } ? toggle-fullscreen }
+} ? prepend define-command-map
: ui-tools-main ( -- )
f ui-stop-after-last-window? set-global