{-# LINE 2 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
module Graphics.UI.Gtk.Gdk.Keymap (
Keymap,
KeymapClass,
castToKeymap,
toKeymap,
KeymapKey,
keymapGetDefault,
keymapGetForDisplay,
keymapLookupKey,
keymapTranslateKeyboardState,
keymapGetEntriesForKeyval,
keymapGetEntriesForKeycode,
keymapGetDirection,
keymapHaveBidiLayouts,
keymapGetCapsLockState,
keymapDirectionChanged,
keymapKeysChanged,
keymapStateChanged,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import Graphics.UI.Gtk.Gdk.Enums (Modifier(..))
import Graphics.UI.Gtk.Gdk.Keys (KeyVal (..))
import Graphics.Rendering.Pango.Enums
{-# LINE 129 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
import Graphics.UI.Gtk.Types
{-# LINE 130 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
import Graphics.UI.Gtk.Signals
{-# LINE 131 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
import Graphics.UI.Gtk.General.Structs (KeymapKey (..))
{-# LINE 134 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
keymapGetDefault ::
IO Keymap
keymapGetDefault :: IO Keymap
keymapGetDefault =
(ForeignPtr Keymap -> Keymap, FinalizerPtr Keymap)
-> IO (Ptr Keymap) -> IO Keymap
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr Keymap -> Keymap, FinalizerPtr Keymap)
forall {a}. (ForeignPtr Keymap -> Keymap, FinalizerPtr a)
mkKeymap (IO (Ptr Keymap) -> IO Keymap) -> IO (Ptr Keymap) -> IO Keymap
forall a b. (a -> b) -> a -> b
$
IO (Ptr Keymap)
gdk_keymap_get_default
{-# LINE 145 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
keymapGetForDisplay ::
Display
-> IO Keymap
keymapGetForDisplay :: Display -> IO Keymap
keymapGetForDisplay Display
display =
(ForeignPtr Keymap -> Keymap, FinalizerPtr Keymap)
-> IO (Ptr Keymap) -> IO Keymap
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr Keymap -> Keymap, FinalizerPtr Keymap)
forall {a}. (ForeignPtr Keymap -> Keymap, FinalizerPtr a)
mkKeymap (IO (Ptr Keymap) -> IO Keymap) -> IO (Ptr Keymap) -> IO Keymap
forall a b. (a -> b) -> a -> b
$
(\(Display ForeignPtr Display
arg1) -> ForeignPtr Display
-> (Ptr Display -> IO (Ptr Keymap)) -> IO (Ptr Keymap)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Display
arg1 ((Ptr Display -> IO (Ptr Keymap)) -> IO (Ptr Keymap))
-> (Ptr Display -> IO (Ptr Keymap)) -> IO (Ptr Keymap)
forall a b. (a -> b) -> a -> b
$ \Ptr Display
argPtr1 ->Ptr Display -> IO (Ptr Keymap)
gdk_keymap_get_for_display Ptr Display
argPtr1)
{-# LINE 157 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
display
keymapLookupKey :: KeymapClass self
=> (Maybe self)
-> KeymapKey
-> IO Int
keymapLookupKey :: forall self. KeymapClass self => Maybe self -> KeymapKey -> IO Int
keymapLookupKey Maybe self
Nothing KeymapKey
key =
(CUInt -> Int) -> IO CUInt -> IO Int
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CUInt -> IO Int) -> IO CUInt -> IO Int
forall a b. (a -> b) -> a -> b
$
Int -> (Ptr KeymapKey -> IO CUInt) -> IO CUInt
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
12 ((Ptr KeymapKey -> IO CUInt) -> IO CUInt)
-> (Ptr KeymapKey -> IO CUInt) -> IO CUInt
forall a b. (a -> b) -> a -> b
$ \ Ptr KeymapKey
keyPtr -> do
Ptr KeymapKey -> KeymapKey -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr KeymapKey
keyPtr KeymapKey
key
(\(Keymap ForeignPtr Keymap
arg1) Ptr ()
arg2 -> ForeignPtr Keymap -> (Ptr Keymap -> IO CUInt) -> IO CUInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CUInt) -> IO CUInt)
-> (Ptr Keymap -> IO CUInt) -> IO CUInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> Ptr () -> IO CUInt
gdk_keymap_lookup_key Ptr Keymap
argPtr1 Ptr ()
arg2)
{-# LINE 176 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(Keymap nullForeignPtr)
(Ptr KeymapKey -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr KeymapKey
keyPtr)
keymapLookupKey (Just self
self) KeymapKey
key =
(CUInt -> Int) -> IO CUInt -> IO Int
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CUInt -> IO Int) -> IO CUInt -> IO Int
forall a b. (a -> b) -> a -> b
$
Int -> (Ptr KeymapKey -> IO CUInt) -> IO CUInt
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
12 ((Ptr KeymapKey -> IO CUInt) -> IO CUInt)
-> (Ptr KeymapKey -> IO CUInt) -> IO CUInt
forall a b. (a -> b) -> a -> b
$ \ Ptr KeymapKey
keyPtr -> do
Ptr KeymapKey -> KeymapKey -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr KeymapKey
keyPtr KeymapKey
key
(\(Keymap ForeignPtr Keymap
arg1) Ptr ()
arg2 -> ForeignPtr Keymap -> (Ptr Keymap -> IO CUInt) -> IO CUInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CUInt) -> IO CUInt)
-> (Ptr Keymap -> IO CUInt) -> IO CUInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> Ptr () -> IO CUInt
gdk_keymap_lookup_key Ptr Keymap
argPtr1 Ptr ()
arg2)
{-# LINE 183 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(toKeymap self)
(Ptr KeymapKey -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr KeymapKey
keyPtr)
keymapTranslateKeyboardState :: KeymapClass self => self
-> Int
-> Modifier
-> Int
-> IO (Maybe (Int, Int, Int, Modifier))
keymapTranslateKeyboardState :: forall self.
KeymapClass self =>
self
-> Int -> Modifier -> Int -> IO (Maybe (Int, Int, Int, Modifier))
keymapTranslateKeyboardState self
self Int
hardwareKeycode Modifier
state Int
group =
(Ptr CUInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CUInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier)))
-> (Ptr CUInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. (a -> b) -> a -> b
$ \Ptr CUInt
keyvalPtr ->
(Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier)))
-> (Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
effectiveGroupPtr ->
(Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier)))
-> (Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
levelPtr ->
(Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier)))
-> (Ptr CInt -> IO (Maybe (Int, Int, Int, Modifier)))
-> IO (Maybe (Int, Int, Int, Modifier))
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
modifierPtr -> do
Bool
success <- (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) CUInt
arg2 CInt
arg3 CInt
arg4 Ptr CUInt
arg5 Ptr CInt
arg6 Ptr CInt
arg7 Ptr CInt
arg8 -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap
-> CUInt
-> CInt
-> CInt
-> Ptr CUInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> IO CInt
gdk_keymap_translate_keyboard_state Ptr Keymap
argPtr1 CUInt
arg2 CInt
arg3 CInt
arg4 Ptr CUInt
arg5 Ptr CInt
arg6 Ptr CInt
arg7 Ptr CInt
arg8)
{-# LINE 208 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(self -> Keymap
forall o. KeymapClass o => o -> Keymap
toKeymap self
self)
(Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
hardwareKeycode)
((Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Modifier -> Int) -> Modifier -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modifier -> Int
forall a. Enum a => a -> Int
fromEnum) Modifier
state)
(Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
group)
Ptr CUInt
keyvalPtr
Ptr CInt
effectiveGroupPtr
Ptr CInt
levelPtr
Ptr CInt
modifierPtr
if Bool
success
then do
CUInt
keyval <- Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CUInt
keyvalPtr
CInt
effectiveGroup <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
effectiveGroupPtr
CInt
level <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
levelPtr
CInt
modifier <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
modifierPtr
Maybe (Int, Int, Int, Modifier)
-> IO (Maybe (Int, Int, Int, Modifier))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ((Int, Int, Int, Modifier) -> Maybe (Int, Int, Int, Modifier)
forall a. a -> Maybe a
Just (CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CUInt
keyval
,CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
effectiveGroup
,CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
level
,Int -> Modifier
forall a. Enum a => Int -> a
toEnum (Int -> Modifier) -> Int -> Modifier
forall a b. (a -> b) -> a -> b
$ CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
modifier))
else Maybe (Int, Int, Int, Modifier)
-> IO (Maybe (Int, Int, Int, Modifier))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe (Int, Int, Int, Modifier)
forall a. Maybe a
Nothing
keymapGetEntriesForKeyval :: KeymapClass self => self
-> KeyVal
-> IO (Maybe [KeymapKey])
keymapGetEntriesForKeyval :: forall self.
KeymapClass self =>
self -> KeyVal -> IO (Maybe [KeymapKey])
keymapGetEntriesForKeyval self
self KeyVal
keyval =
(Ptr CInt -> IO (Maybe [KeymapKey])) -> IO (Maybe [KeymapKey])
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Maybe [KeymapKey])) -> IO (Maybe [KeymapKey]))
-> (Ptr CInt -> IO (Maybe [KeymapKey])) -> IO (Maybe [KeymapKey])
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
nKeysPtr ->
Int
-> (Ptr (Ptr KeymapKey) -> IO (Maybe [KeymapKey]))
-> IO (Maybe [KeymapKey])
forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b
allocaArray Int
0 ((Ptr (Ptr KeymapKey) -> IO (Maybe [KeymapKey]))
-> IO (Maybe [KeymapKey]))
-> (Ptr (Ptr KeymapKey) -> IO (Maybe [KeymapKey]))
-> IO (Maybe [KeymapKey])
forall a b. (a -> b) -> a -> b
$ \ Ptr (Ptr KeymapKey)
keysPtr -> do
Bool
success <- (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) CUInt
arg2 Ptr (Ptr ())
arg3 Ptr CInt
arg4 -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> CUInt -> Ptr (Ptr ()) -> Ptr CInt -> IO CInt
gdk_keymap_get_entries_for_keyval Ptr Keymap
argPtr1 CUInt
arg2 Ptr (Ptr ())
arg3 Ptr CInt
arg4)
{-# LINE 247 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(self -> Keymap
forall o. KeymapClass o => o -> Keymap
toKeymap self
self)
(KeyVal -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral KeyVal
keyval)
(Ptr (Ptr KeymapKey) -> Ptr (Ptr ())
forall a b. Ptr a -> Ptr b
castPtr Ptr (Ptr KeymapKey)
keysPtr)
Ptr CInt
nKeysPtr
if Bool
success
then do
Int
nKeys <- (CInt -> Int) -> IO CInt -> IO Int
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
nKeysPtr
[Ptr KeymapKey]
keys <- Int -> Ptr (Ptr KeymapKey) -> IO [Ptr KeymapKey]
forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
nKeys Ptr (Ptr KeymapKey)
keysPtr
[KeymapKey]
keyList <- (Ptr KeymapKey -> IO KeymapKey)
-> [Ptr KeymapKey] -> IO [KeymapKey]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM Ptr KeymapKey -> IO KeymapKey
forall a. Storable a => Ptr a -> IO a
peek [Ptr KeymapKey]
keys
Ptr () -> IO ()
g_free (Ptr (Ptr KeymapKey) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr (Ptr KeymapKey)
keysPtr)
Maybe [KeymapKey] -> IO (Maybe [KeymapKey])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ([KeymapKey] -> Maybe [KeymapKey]
forall a. a -> Maybe a
Just [KeymapKey]
keyList)
else Maybe [KeymapKey] -> IO (Maybe [KeymapKey])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe [KeymapKey]
forall a. Maybe a
Nothing
keymapGetEntriesForKeycode :: KeymapClass self => self
-> Int
-> IO (Maybe ([KeymapKey], [KeyVal]))
keymapGetEntriesForKeycode :: forall self.
KeymapClass self =>
self -> Int -> IO (Maybe ([KeymapKey], [KeyVal]))
keymapGetEntriesForKeycode self
self Int
hardwareKeycode =
(Ptr CInt -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal])))
-> (Ptr CInt -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
nEntriesPtr ->
Int
-> (Ptr (Ptr KeymapKey) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b
allocaArray Int
0 ((Ptr (Ptr KeymapKey) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal])))
-> (Ptr (Ptr KeymapKey) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. (a -> b) -> a -> b
$ \ Ptr (Ptr KeymapKey)
keysPtr ->
Int
-> (Ptr (Ptr CUInt) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b
allocaArray Int
0 ((Ptr (Ptr CUInt) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal])))
-> (Ptr (Ptr CUInt) -> IO (Maybe ([KeymapKey], [KeyVal])))
-> IO (Maybe ([KeymapKey], [KeyVal]))
forall a b. (a -> b) -> a -> b
$ \ Ptr (Ptr CUInt)
keyvalsPtr -> do
Bool
success <- (CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) CUInt
arg2 Ptr (Ptr ())
arg3 Ptr (Ptr CUInt)
arg4 Ptr CInt
arg5 -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap
-> CUInt -> Ptr (Ptr ()) -> Ptr (Ptr CUInt) -> Ptr CInt -> IO CInt
gdk_keymap_get_entries_for_keycode Ptr Keymap
argPtr1 CUInt
arg2 Ptr (Ptr ())
arg3 Ptr (Ptr CUInt)
arg4 Ptr CInt
arg5)
{-# LINE 275 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(self -> Keymap
forall o. KeymapClass o => o -> Keymap
toKeymap self
self)
(Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
hardwareKeycode)
(Ptr (Ptr KeymapKey) -> Ptr (Ptr ())
forall a b. Ptr a -> Ptr b
castPtr Ptr (Ptr KeymapKey)
keysPtr)
Ptr (Ptr CUInt)
keyvalsPtr
Ptr CInt
nEntriesPtr
if Bool
success
then do
Int
nEntries <- (CInt -> Int) -> IO CInt -> IO Int
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
forall a b. (a -> b) -> a -> b
$ Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
nEntriesPtr
[Ptr KeymapKey]
keys <- Int -> Ptr (Ptr KeymapKey) -> IO [Ptr KeymapKey]
forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
nEntries Ptr (Ptr KeymapKey)
keysPtr
[Ptr CUInt]
keyvals <- Int -> Ptr (Ptr CUInt) -> IO [Ptr CUInt]
forall a. Storable a => Int -> Ptr a -> IO [a]
peekArray Int
nEntries Ptr (Ptr CUInt)
keyvalsPtr
[KeyVal]
keyvalsList <- (Ptr CUInt -> IO KeyVal) -> [Ptr CUInt] -> IO [KeyVal]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (\Ptr CUInt
x -> (CUInt -> KeyVal) -> IO CUInt -> IO KeyVal
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CUInt -> KeyVal
forall a b. (Integral a, Num b) => a -> b
fromIntegral (IO CUInt -> IO KeyVal) -> IO CUInt -> IO KeyVal
forall a b. (a -> b) -> a -> b
$ Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CUInt
x) [Ptr CUInt]
keyvals
[KeymapKey]
keysList <- (Ptr KeymapKey -> IO KeymapKey)
-> [Ptr KeymapKey] -> IO [KeymapKey]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM Ptr KeymapKey -> IO KeymapKey
forall a. Storable a => Ptr a -> IO a
peek [Ptr KeymapKey]
keys
Ptr () -> IO ()
g_free (Ptr (Ptr KeymapKey) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr (Ptr KeymapKey)
keysPtr)
Ptr () -> IO ()
g_free (Ptr (Ptr CUInt) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr (Ptr CUInt)
keyvalsPtr)
Maybe ([KeymapKey], [KeyVal]) -> IO (Maybe ([KeymapKey], [KeyVal]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (([KeymapKey], [KeyVal]) -> Maybe ([KeymapKey], [KeyVal])
forall a. a -> Maybe a
Just ([KeymapKey]
keysList, [KeyVal]
keyvalsList))
else Maybe ([KeymapKey], [KeyVal]) -> IO (Maybe ([KeymapKey], [KeyVal]))
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ([KeymapKey], [KeyVal])
forall a. Maybe a
Nothing
keymapGetDirection :: KeymapClass self => self
-> IO PangoDirection
keymapGetDirection :: forall self. KeymapClass self => self -> IO PangoDirection
keymapGetDirection self
self =
(CInt -> PangoDirection) -> IO CInt -> IO PangoDirection
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Int -> PangoDirection
forall a. Enum a => Int -> a
toEnum (Int -> PangoDirection) -> (CInt -> Int) -> CInt -> PangoDirection
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) (IO CInt -> IO PangoDirection) -> IO CInt -> IO PangoDirection
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> IO CInt
gdk_keymap_get_direction Ptr Keymap
argPtr1)
{-# LINE 302 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(toKeymap self)
keymapHaveBidiLayouts :: KeymapClass self => self
-> IO Bool
keymapHaveBidiLayouts :: forall self. KeymapClass self => self -> IO Bool
keymapHaveBidiLayouts self
self =
(CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> IO CInt
gdk_keymap_have_bidi_layouts Ptr Keymap
argPtr1)
{-# LINE 316 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(toKeymap self)
keymapGetCapsLockState :: KeymapClass self => self
-> IO Bool
keymapGetCapsLockState :: forall self. KeymapClass self => self -> IO Bool
keymapGetCapsLockState self
self =
(CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(Keymap ForeignPtr Keymap
arg1) -> ForeignPtr Keymap -> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Keymap
arg1 ((Ptr Keymap -> IO CInt) -> IO CInt)
-> (Ptr Keymap -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr Keymap
argPtr1 ->Ptr Keymap -> IO CInt
gdk_keymap_get_caps_lock_state Ptr Keymap
argPtr1)
{-# LINE 329 "./Graphics/UI/Gtk/Gdk/Keymap.chs" #-}
(toKeymap self)
keymapDirectionChanged :: KeymapClass self => Signal self (IO ())
keymapDirectionChanged :: forall self. KeymapClass self => Signal self (IO ())
keymapDirectionChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
SignalName -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE SignalName
"direction_changed")
keymapKeysChanged :: KeymapClass self => Signal self (IO ())
keymapKeysChanged :: forall self. KeymapClass self => Signal self (IO ())
keymapKeysChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
SignalName -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE SignalName
"keys_changed")
keymapStateChanged :: KeymapClass self => Signal self (IO ())
keymapStateChanged :: forall self. KeymapClass self => Signal self (IO ())
keymapStateChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
SignalName -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE SignalName
"state_changed")
foreign import ccall safe "gdk_keymap_get_default"
gdk_keymap_get_default :: (IO (Ptr Keymap))
foreign import ccall safe "gdk_keymap_get_for_display"
gdk_keymap_get_for_display :: ((Ptr Display) -> (IO (Ptr Keymap)))
foreign import ccall safe "gdk_keymap_lookup_key"
gdk_keymap_lookup_key :: ((Ptr Keymap) -> ((Ptr ()) -> (IO CUInt)))
foreign import ccall safe "gdk_keymap_translate_keyboard_state"
gdk_keymap_translate_keyboard_state :: ((Ptr Keymap) -> (CUInt -> (CInt -> (CInt -> ((Ptr CUInt) -> ((Ptr CInt) -> ((Ptr CInt) -> ((Ptr CInt) -> (IO CInt)))))))))
foreign import ccall safe "gdk_keymap_get_entries_for_keyval"
gdk_keymap_get_entries_for_keyval :: ((Ptr Keymap) -> (CUInt -> ((Ptr (Ptr ())) -> ((Ptr CInt) -> (IO CInt)))))
foreign import ccall unsafe "g_free"
g_free :: ((Ptr ()) -> (IO ()))
foreign import ccall safe "gdk_keymap_get_entries_for_keycode"
gdk_keymap_get_entries_for_keycode :: ((Ptr Keymap) -> (CUInt -> ((Ptr (Ptr ())) -> ((Ptr (Ptr CUInt)) -> ((Ptr CInt) -> (IO CInt))))))
foreign import ccall safe "gdk_keymap_get_direction"
gdk_keymap_get_direction :: ((Ptr Keymap) -> (IO CInt))
foreign import ccall safe "gdk_keymap_have_bidi_layouts"
gdk_keymap_have_bidi_layouts :: ((Ptr Keymap) -> (IO CInt))
foreign import ccall safe "gdk_keymap_get_caps_lock_state"
gdk_keymap_get_caps_lock_state :: ((Ptr Keymap) -> (IO CInt))