From 09517a87e3eba441b9bc301a4672be6401b3b7a5 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 26 Feb 2010 18:30:51 -0800 Subject: [PATCH] rename game.input.linux to game.input.x11, make x>hid-bit-order a hook on system --- basis/game/input/input.factor | 2 +- basis/game/input/linux/linux.factor | 92 ------------------- basis/game/input/{linux => x11}/authors.txt | 0 basis/game/input/{linux => x11}/platforms.txt | 0 basis/game/input/{linux => x11}/summary.txt | 0 basis/game/input/{linux => x11}/tags.txt | 0 basis/game/input/x11/x11.factor | 92 +++++++++++++++++++ 7 files changed, 93 insertions(+), 93 deletions(-) delete mode 100644 basis/game/input/linux/linux.factor rename basis/game/input/{linux => x11}/authors.txt (100%) rename basis/game/input/{linux => x11}/platforms.txt (100%) rename basis/game/input/{linux => x11}/summary.txt (100%) rename basis/game/input/{linux => x11}/tags.txt (100%) create mode 100644 basis/game/input/x11/x11.factor diff --git a/basis/game/input/input.factor b/basis/game/input/input.factor index f27e1f36d1..9b514e77e0 100644 --- a/basis/game/input/input.factor +++ b/basis/game/input/input.factor @@ -108,6 +108,6 @@ SYMBOLS: pressed released ; { { [ os windows? ] [ "game.input.xinput" require ] } { [ os macosx? ] [ "game.input.iokit" require ] } - { [ os linux? ] [ "game.input.linux" require ] } + { [ os linux? ] [ "game.input.x11" require ] } [ ] } cond diff --git a/basis/game/input/linux/linux.factor b/basis/game/input/linux/linux.factor deleted file mode 100644 index cd482ae604..0000000000 --- a/basis/game/input/linux/linux.factor +++ /dev/null @@ -1,92 +0,0 @@ -! Copyright (C) 2010 Erik Charlebois, William Schlieper. -! See http://factorcode.org/license.txt for BSD license. -USING: alien.c-types alien.syntax arrays kernel game.input namespaces -classes bit-arrays sequences vectors x11 x11.xlib ; -IN: game.input.linux - -LIBRARY: xlib -FUNCTION: int XQueryKeymap ( Display* display, char[32] keys_return ) ; - -SINGLETON: linux-game-input-backend - -linux-game-input-backend game-input-backend set-global - -M: linux-game-input-backend (open-game-input) - ; - -M: linux-game-input-backend (close-game-input) - ; - -M: linux-game-input-backend (reset-game-input) - ; - -M: linux-game-input-backend get-controllers - { } ; - -M: linux-game-input-backend product-string - drop "" ; - -M: linux-game-input-backend product-id - drop f ; - -M: linux-game-input-backend instance-id - drop f ; - -M: linux-game-input-backend read-controller - drop controller-state new ; - -M: linux-game-input-backend calibrate-controller - drop ; - -M: linux-game-input-backend vibrate-controller - 3drop ; - -CONSTANT: x>hid-bit-order { - 0 0 0 0 0 0 0 0 - 0 41 30 31 32 33 34 35 - 36 37 38 39 45 46 42 43 - 20 26 8 21 23 28 24 12 - 18 19 47 48 40 224 4 22 - 7 9 10 11 13 14 15 51 - 52 53 225 49 29 27 6 25 - 5 17 16 54 55 56 229 85 - 226 44 57 58 59 60 61 62 - 63 64 65 66 67 83 71 95 - 96 97 86 92 93 94 87 91 - 90 89 98 99 0 0 0 68 - 69 0 0 0 0 0 0 0 - 88 228 84 70 0 0 74 82 - 75 80 79 77 81 78 73 76 - 127 129 128 102 103 0 72 0 - 0 0 0 227 231 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 -} - -: x-bits>hid-bits ( bit-array -- bit-array ) - 256 iota [ 2array ] { } 2map-as [ first ] filter [ second ] map - x>hid-bit-order [ nth ] curry map - 256 swap [ t swap pick set-nth ] each ; - -M: linux-game-input-backend read-keyboard - dpy get 256 [ XQueryKeymap drop ] keep - x-bits>hid-bits keyboard-state boa ; - -M: linux-game-input-backend read-mouse - 0 0 0 0 2 mouse-state boa ; - -M: linux-game-input-backend reset-mouse - ; diff --git a/basis/game/input/linux/authors.txt b/basis/game/input/x11/authors.txt similarity index 100% rename from basis/game/input/linux/authors.txt rename to basis/game/input/x11/authors.txt diff --git a/basis/game/input/linux/platforms.txt b/basis/game/input/x11/platforms.txt similarity index 100% rename from basis/game/input/linux/platforms.txt rename to basis/game/input/x11/platforms.txt diff --git a/basis/game/input/linux/summary.txt b/basis/game/input/x11/summary.txt similarity index 100% rename from basis/game/input/linux/summary.txt rename to basis/game/input/x11/summary.txt diff --git a/basis/game/input/linux/tags.txt b/basis/game/input/x11/tags.txt similarity index 100% rename from basis/game/input/linux/tags.txt rename to basis/game/input/x11/tags.txt diff --git a/basis/game/input/x11/x11.factor b/basis/game/input/x11/x11.factor new file mode 100644 index 0000000000..4e6f610531 --- /dev/null +++ b/basis/game/input/x11/x11.factor @@ -0,0 +1,92 @@ +! Copyright (C) 2010 Erik Charlebois, William Schlieper. +! See http://factorcode.org/license.txt for BSD license. +USING: arrays kernel game.input namespaces +classes bit-arrays system sequences vectors x11 x11.xlib ; +IN: game.input.x11 + +SINGLETON: x11-game-input-backend + +x11-game-input-backend game-input-backend set-global + +M: x11-game-input-backend (open-game-input) + ; + +M: x11-game-input-backend (close-game-input) + ; + +M: x11-game-input-backend (reset-game-input) + ; + +M: x11-game-input-backend get-controllers + { } ; + +M: x11-game-input-backend product-string + drop "" ; + +M: x11-game-input-backend product-id + drop f ; + +M: x11-game-input-backend instance-id + drop f ; + +M: x11-game-input-backend read-controller + drop controller-state new ; + +M: x11-game-input-backend calibrate-controller + drop ; + +M: x11-game-input-backend vibrate-controller + 3drop ; + +HOOK: x>hid-bit-order os ( -- x ) + +M: linux x>hid-bit-order + { + 0 0 0 0 0 0 0 0 + 0 41 30 31 32 33 34 35 + 36 37 38 39 45 46 42 43 + 20 26 8 21 23 28 24 12 + 18 19 47 48 40 224 4 22 + 7 9 10 11 13 14 15 51 + 52 53 225 49 29 27 6 25 + 5 17 16 54 55 56 229 85 + 226 44 57 58 59 60 61 62 + 63 64 65 66 67 83 71 95 + 96 97 86 92 93 94 87 91 + 90 89 98 99 0 0 0 68 + 69 0 0 0 0 0 0 0 + 88 228 84 70 0 0 74 82 + 75 80 79 77 81 78 73 76 + 127 129 128 102 103 0 72 0 + 0 0 0 227 231 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + } ; inline + +: x-bits>hid-bits ( bit-array -- bit-array ) + 256 iota [ 2array ] { } 2map-as [ first ] filter [ second ] map + x>hid-bit-order [ nth ] curry map + 256 swap [ t swap pick set-nth ] each ; + +M: x11-game-input-backend read-keyboard + dpy get 256 [ XQueryKeymap drop ] keep + x-bits>hid-bits keyboard-state boa ; + +M: x11-game-input-backend read-mouse + 0 0 0 0 2 mouse-state boa ; + +M: x11-game-input-backend reset-mouse + ;