\hypertarget{group__Ecore__FB__Group}{}\section{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}
\label{group__Ecore__FB__Group}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}


Functions used to set up and shut down the Ecore\+\_\+\+Framebuffer functions.  


\subsection*{Modules}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Ecore__FB__Calibrate__Group}{Framebuffer Calibration Functions}
\begin{DoxyCompactList}\small\item\em Functions that calibrate the screen. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__FB__Group_ga891e523f10745c1999352a0c73a786f8}{}\#define {\bfseries E\+V\+\_\+\+C\+N\+T}~(E\+V\+\_\+\+M\+A\+X+1)\label{group__Ecore__FB__Group_ga891e523f10745c1999352a0c73a786f8}

\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{}typedef struct \+\_\+\+Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device \hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device}\label{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}

\begin{DoxyCompactList}\small\item\em Input device handler. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__FB__Group_ga0c94b4f178809f8c4ff237759e41c8da}{}typedef enum \hyperlink{group__Ecore__FB__Group_ga226d05e7ffc07e7fb86aa76a95e1d0e8}{\+\_\+\+Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device\+\_\+\+Cap} \hyperlink{group__Ecore__FB__Group_ga0c94b4f178809f8c4ff237759e41c8da}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device\+\_\+\+Cap}\label{group__Ecore__FB__Group_ga0c94b4f178809f8c4ff237759e41c8da}

\begin{DoxyCompactList}\small\item\em Device capabilities. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__FB__Group_ga226d05e7ffc07e7fb86aa76a95e1d0e8}{}enum \hyperlink{group__Ecore__FB__Group_ga226d05e7ffc07e7fb86aa76a95e1d0e8}{\+\_\+\+Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device\+\_\+\+Cap} \{ \\*
{\bfseries E\+C\+O\+R\+E\+\_\+\+F\+B\+\_\+\+I\+N\+P\+U\+T\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+C\+A\+P\+\_\+\+N\+O\+N\+E} = 0x00000000, 
\\*
{\bfseries E\+C\+O\+R\+E\+\_\+\+F\+B\+\_\+\+I\+N\+P\+U\+T\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+C\+A\+P\+\_\+\+R\+E\+L\+A\+T\+I\+V\+E} = 0x00000001, 
\\*
{\bfseries E\+C\+O\+R\+E\+\_\+\+F\+B\+\_\+\+I\+N\+P\+U\+T\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+C\+A\+P\+\_\+\+A\+B\+S\+O\+L\+U\+T\+E} = 0x00000002, 
\\*
{\bfseries E\+C\+O\+R\+E\+\_\+\+F\+B\+\_\+\+I\+N\+P\+U\+T\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+C\+A\+P\+\_\+\+K\+E\+Y\+S\+\_\+\+O\+R\+\_\+\+B\+U\+T\+T\+O\+N\+S} = 0x00000004
 \}\label{group__Ecore__FB__Group_ga226d05e7ffc07e7fb86aa76a95e1d0e8}

\begin{DoxyCompactList}\small\item\em Device capabilities. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__FB__Group_ga7a2e6367072975dbd32d5c88102b5272}{}static void {\bfseries nosigint} (int val)\label{group__Ecore__FB__Group_ga7a2e6367072975dbd32d5c88102b5272}

\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Ecore__FB__Group_gab74cf87e3b0ed43c056add2147244fed}{ecore\+\_\+fb\+\_\+init} (const char $\ast$name)
\begin{DoxyCompactList}\small\item\em Initialize the Ecore\+\_\+\+Fb library. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Ecore__FB__Group_gaefa9ae93cf6163379747349bb8cc82f7}{ecore\+\_\+fb\+\_\+shutdown} (void)
\begin{DoxyCompactList}\small\item\em Shut down the Ecore\+\_\+\+Fb library. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_gad169f77434891ebc69d7d5749bed5af8}{ecore\+\_\+fb\+\_\+size\+\_\+get} (int $\ast$w, int $\ast$h)
\begin{DoxyCompactList}\small\item\em Retrieve the width and height of the current frame buffer in pixels. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__FB__Group_ga7f602e3956f319b97986afe7e05d0bc0}{}static void {\bfseries \+\_\+ecore\+\_\+fb\+\_\+size\+\_\+get} (int $\ast$w, int $\ast$h)\label{group__Ecore__FB__Group_ga7f602e3956f319b97986afe7e05d0bc0}

\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_ga80cc9df0a7c985ffa5104f071a7b90b9}{ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set} (void($\ast$func)(void $\ast$data), void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set a callback called when a virtual terminal is gained. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_gabf8e732055cf4d366d3000c91cf00cdb}{ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set} (void($\ast$func)(void $\ast$data), void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set a callback called when a virtual terminal is lost. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$ \hyperlink{group__Ecore__FB__Group_gad63427b3b6a5f5edde226673d6e71f65}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open} (const char $\ast$dev)
\begin{DoxyCompactList}\small\item\em Open an input device. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_ga5bc9b86d21424f4661fcb3cefb4e0c86}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev)
\begin{DoxyCompactList}\small\item\em Close the given device. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_ga3ba1e8070ac6af46ca45c490c007a83b}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} listen)
\begin{DoxyCompactList}\small\item\em Set the listen mode for an input device . \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} const char $\ast$ \hyperlink{group__Ecore__FB__Group_gaa729c994487210bf02cdcb9f60760d32}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev)
\begin{DoxyCompactList}\small\item\em Retrieve the name of the given device. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Ecore__FB__Group_ga0c94b4f178809f8c4ff237759e41c8da}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device\+\_\+\+Cap} \hyperlink{group__Ecore__FB__Group_gad81d5c08c3e483ccdb2b19761ad77d5e}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev)
\begin{DoxyCompactList}\small\item\em Retrieve the capability of the given device. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_ga043499a88b2aa2a20f63f64505991aab}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev, int w, int h)
\begin{DoxyCompactList}\small\item\em Set the axis size of the given device. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__FB__Group_ga2cfd70115ae7d326ba71b8e85ad1eac7}{}\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void {\bfseries ecore\+\_\+fb\+\_\+input\+\_\+threshold\+\_\+click\+\_\+set} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev, double threshold)\label{group__Ecore__FB__Group_ga2cfd70115ae7d326ba71b8e85ad1eac7}

\item 
\hypertarget{group__Ecore__FB__Group_gacd0932ab86621fa2df962dc3d046a1e4}{}\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} double {\bfseries ecore\+\_\+fb\+\_\+input\+\_\+threshold\+\_\+click\+\_\+get} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev)\label{group__Ecore__FB__Group_gacd0932ab86621fa2df962dc3d046a1e4}

\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_gae3c3479e2fa0fdf239afd5e3a2eabbf5}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev, void $\ast$window)
\begin{DoxyCompactList}\small\item\em Associates an input device with the given \hyperlink{group__Ecore__Evas__Group}{Ecore\+\_\+\+Evas wrapper/helper set of functions}. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_ga9d9fcdece8e69f7e3798a5ddea7f9403}{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set} (int xscale, int xtrans, int yscale, int ytrans, int xyswap)
\begin{DoxyCompactList}\small\item\em Calibrates the touschreen using the given parameters. \end{DoxyCompactList}\item 
\hyperlink{Elua_8h_a3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__FB__Group_gae4aa44af19bec4dcc5c7e66c81e31fef}{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get} (int $\ast$xscale, int $\ast$xtrans, int $\ast$yscale, int $\ast$ytrans, int $\ast$xyswap)
\begin{DoxyCompactList}\small\item\em Retrieves the calibration parameters of the touchscreen. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__FB__Group_ga1dfeb0b21122196a47f2c703735c8f0a}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev, double threshold)
\begin{DoxyCompactList}\small\item\em Set the threshold of mouse clicks of the given device. \end{DoxyCompactList}\item 
double \hyperlink{group__Ecore__FB__Group_ga5933f22a0ed37d6ed8c1d4e18dd57b78}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get} (\hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$dev)
\begin{DoxyCompactList}\small\item\em Get the threshold of mouse clicks of the given device. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__FB__Group_ga1c989bbddc1074fa272c41247a911e50}{}static sighandler\+\_\+t {\bfseries oldhand} = N\+U\+L\+L\label{group__Ecore__FB__Group_ga1c989bbddc1074fa272c41247a911e50}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Functions used to set up and shut down the Ecore\+\_\+\+Framebuffer functions. 



\subsection{Function Documentation}
\hypertarget{group__Ecore__FB__Group_gab74cf87e3b0ed43c056add2147244fed}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+init@{ecore\+\_\+fb\+\_\+init}}
\index{ecore\+\_\+fb\+\_\+init@{ecore\+\_\+fb\+\_\+init}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+init}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int ecore\+\_\+fb\+\_\+init (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{name}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gab74cf87e3b0ed43c056add2147244fed}


Initialize the Ecore\+\_\+\+Fb library. 


\begin{DoxyParams}{Parameters}
{\em name} & Device target name. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 or greater on success, 0 on error.
\end{DoxyReturn}
This function sets up all the Ecore\+\_\+\+Fb library. It returns 0 on failure, otherwise it returns the number of times it has already been called.

When Ecore\+\_\+\+Fb is not used anymore, call \hyperlink{group__Ecore__FB__Group_gaefa9ae93cf6163379747349bb8cc82f7}{ecore\+\_\+fb\+\_\+shutdown()} to shut down the Ecore\+\_\+\+Fb library. \hypertarget{group__Ecore__FB__Group_gaefa9ae93cf6163379747349bb8cc82f7}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+shutdown@{ecore\+\_\+fb\+\_\+shutdown}}
\index{ecore\+\_\+fb\+\_\+shutdown@{ecore\+\_\+fb\+\_\+shutdown}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+shutdown}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int ecore\+\_\+fb\+\_\+shutdown (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gaefa9ae93cf6163379747349bb8cc82f7}


Shut down the Ecore\+\_\+\+Fb library. 

\begin{DoxyReturn}{Returns}
0 when the library is completely shut down, 1 or greater otherwise.
\end{DoxyReturn}
This function shuts down the Ecore\+\_\+\+Fb library. It returns 0 when it has been called the same number of times than \hyperlink{group__Ecore__FB__Group_gab74cf87e3b0ed43c056add2147244fed}{ecore\+\_\+fb\+\_\+init()}. \hypertarget{group__Ecore__FB__Group_gad169f77434891ebc69d7d5749bed5af8}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+size\+\_\+get@{ecore\+\_\+fb\+\_\+size\+\_\+get}}
\index{ecore\+\_\+fb\+\_\+size\+\_\+get@{ecore\+\_\+fb\+\_\+size\+\_\+get}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+size\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+fb\+\_\+size\+\_\+get (
\begin{DoxyParamCaption}
\item[{int $\ast$}]{w, }
\item[{int $\ast$}]{h}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gad169f77434891ebc69d7d5749bed5af8}


Retrieve the width and height of the current frame buffer in pixels. 


\begin{DoxyParams}{Parameters}
{\em w} & Pointer to an integer in which to store the width. \\
\hline
{\em h} & Pointer to an interge in which to store the height.\\
\hline
\end{DoxyParams}
This function retrieves the size of the current frame buffer in pixels. {\ttfamily w} and {\ttfamily h} can be buffers that will be filled with the corresponding values. If one of them is {\ttfamily N\+U\+L\+L}, nothing will be done for that parameter. \hypertarget{group__Ecore__FB__Group_ga80cc9df0a7c985ffa5104f071a7b90b9}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set@{ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set@{ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+fb\+\_\+callback\+\_\+gain\+\_\+set (
\begin{DoxyParamCaption}
\item[{void($\ast$)(void $\ast$data)}]{func, }
\item[{void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga80cc9df0a7c985ffa5104f071a7b90b9}


Set a callback called when a virtual terminal is gained. 


\begin{DoxyParams}{Parameters}
{\em func} & The callback called when vt is gained. \\
\hline
{\em data} & The data to pass to the callback.\\
\hline
\end{DoxyParams}
This function sets the callback {\ttfamily func} which will be called when a virtual terminal is gained (for example you press Ctrl-\/\+Alt-\/\+F1 to go to vt1 and your app was using vt1). {\ttfamily data} will be pass to {\ttfamily func} if the callback is called. \hypertarget{group__Ecore__FB__Group_gabf8e732055cf4d366d3000c91cf00cdb}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set@{ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set@{ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+fb\+\_\+callback\+\_\+lose\+\_\+set (
\begin{DoxyParamCaption}
\item[{void($\ast$)(void $\ast$data)}]{func, }
\item[{void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gabf8e732055cf4d366d3000c91cf00cdb}


Set a callback called when a virtual terminal is lost. 


\begin{DoxyParams}{Parameters}
{\em func} & The callback called when vt is lost. \\
\hline
{\em data} & The data to pass to the callback.\\
\hline
\end{DoxyParams}
This function sets the callback {\ttfamily func} which will be called when a virtual terminal is lost (someone wants the vt from you and you want to give up that vt). {\ttfamily data} will be pass to {\ttfamily func} if the callback is called. \hypertarget{group__Ecore__FB__Group_gad63427b3b6a5f5edde226673d6e71f65}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$ ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+open (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{dev}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gad63427b3b6a5f5edde226673d6e71f65}


Open an input device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to open. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The \hyperlink{group__Ecore__FB__Group_ga1d8690825755681ab7b5de3d3403b6e0}{Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} object that has been opened.
\end{DoxyReturn}
This function opens the input device named {\ttfamily dev} and returns the object for it, or returns {\ttfamily N\+U\+L\+L} on failure. 

References eina\+\_\+list\+\_\+append().

\hypertarget{group__Ecore__FB__Group_ga5bc9b86d21424f4661fcb3cefb4e0c86}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga5bc9b86d21424f4661fcb3cefb4e0c86}


Close the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to close\\
\hline
\end{DoxyParams}
This function closes the device {\ttfamily dev}. If {\ttfamily dev} is {\ttfamily N\+U\+L\+L}, this function does nothing. 

References eina\+\_\+list\+\_\+remove().

\hypertarget{group__Ecore__FB__Group_ga3ba1e8070ac6af46ca45c490c007a83b}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+listen (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev, }
\item[{{\bf Eina\+\_\+\+Bool}}]{listen}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga3ba1e8070ac6af46ca45c490c007a83b}


Set the listen mode for an input device . 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to set the mode of. \\
\hline
{\em listen} & {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} to disable listening mode, {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} to enable it.\\
\hline
\end{DoxyParams}
This function enables or disables listening on the input device {\ttfamily dev}. If {\ttfamily listen} is {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}, listening mode is disabled, if it is {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, it is enabled. 

References E\+C\+O\+R\+E\+\_\+\+F\+D\+\_\+\+R\+E\+A\+D, and ecore\+\_\+main\+\_\+fd\+\_\+handler\+\_\+add().

\hypertarget{group__Ecore__FB__Group_gaa729c994487210bf02cdcb9f60760d32}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}const char $\ast$ ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+name\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gaa729c994487210bf02cdcb9f60760d32}


Retrieve the name of the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to get the name from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The name of the device.
\end{DoxyReturn}
This function returns the name of the device {\ttfamily dev}. If {\ttfamily dev} is {\ttfamily N\+U\+L\+L}, this function returns {\ttfamily N\+U\+L\+L}. \hypertarget{group__Ecore__FB__Group_gad81d5c08c3e483ccdb2b19761ad77d5e}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device\+\_\+\+Cap} ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+cap\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gad81d5c08c3e483ccdb2b19761ad77d5e}


Retrieve the capability of the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to get the name from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The capability of the device.
\end{DoxyReturn}
This function returns the capability of the device {\ttfamily dev}. If {\ttfamily dev} is {\ttfamily N\+U\+L\+L}, this function returns E\+C\+O\+R\+E\+\_\+\+F\+B\+\_\+\+I\+N\+P\+U\+T\+\_\+\+D\+E\+V\+I\+C\+E\+\_\+\+C\+A\+P\+\_\+\+N\+O\+N\+E. \hypertarget{group__Ecore__FB__Group_ga043499a88b2aa2a20f63f64505991aab}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+axis\+\_\+size\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev, }
\item[{int}]{w, }
\item[{int}]{h}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga043499a88b2aa2a20f63f64505991aab}


Set the axis size of the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to set the axis size to. \\
\hline
{\em w} & The width of the axis. \\
\hline
{\em h} & The height of the axis.\\
\hline
\end{DoxyParams}
This function sets set the width {\ttfamily w} and height {\ttfamily h} of the axis of device {\ttfamily dev}. If {\ttfamily dev} is a relative input device, a width and height must set for it. If its absolute set the ioctl correctly, if not, unsupported device. \hypertarget{group__Ecore__FB__Group_gae3c3479e2fa0fdf239afd5e3a2eabbf5}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+window\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev, }
\item[{void $\ast$}]{window}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gae3c3479e2fa0fdf239afd5e3a2eabbf5}


Associates an input device with the given \hyperlink{group__Ecore__Evas__Group}{Ecore\+\_\+\+Evas wrapper/helper set of functions}. 


\begin{DoxyParams}{Parameters}
{\em dev} & The input being associated with an \hyperlink{group__Ecore__Evas__Group}{Ecore\+\_\+\+Evas wrapper/helper set of functions} (not {\ttfamily N\+U\+L\+L}). \\
\hline
{\em window} & The window which this input is being associated to. {\ttfamily N\+U\+L\+L} will remove any previous association.\\
\hline
\end{DoxyParams}
Events generated by this device will have a pointer to {\ttfamily window}. If this {\ttfamily window} is registered with ecore\+\_\+event\+\_\+window\+\_\+register() or \hyperlink{group__Ecore__Evas__Group_ga9cb57f86b8581f45ce589e64261d0ef4}{ecore\+\_\+evas\+\_\+input\+\_\+event\+\_\+register()}, respective evas events will be delivered by the ecore\+\_\+input\+\_\+evas system. An example can be seen in the following code\+:


\begin{DoxyCode}
1 Ecore\_Evas *ee = ecore\_evas\_new(NULL, 0, 0, 800, 600, NULL);
2 
3 ecore\_evas\_input\_event\_register(ee);
4 
5 device = ecore\_fb\_input\_device\_open(device\_path);
6 if (device)
7   ecore\_fb\_input\_device\_window\_set(device, ee);
\end{DoxyCode}


On the previous code, all input captured on the mentioned device will be delivered to the {\ttfamily Ecore\+\_\+\+Evas} {\ttfamily ee}.

\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}
\hypertarget{group__Ecore__FB__Group_ga9d9fcdece8e69f7e3798a5ddea7f9403}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set@{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set@{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{xscale, }
\item[{int}]{xtrans, }
\item[{int}]{yscale, }
\item[{int}]{ytrans, }
\item[{int}]{xyswap}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga9d9fcdece8e69f7e3798a5ddea7f9403}


Calibrates the touschreen using the given parameters. 


\begin{DoxyParams}{Parameters}
{\em xscale} & X scaling, where 256 = 1.\+0 \\
\hline
{\em xtrans} & X translation. \\
\hline
{\em yscale} & Y scaling. \\
\hline
{\em ytrans} & Y translation. \\
\hline
{\em xyswap} & Swap X \& Y flag. \\
\hline
\end{DoxyParams}
\hypertarget{group__Ecore__FB__Group_gae4aa44af19bec4dcc5c7e66c81e31fef}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get@{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get}}
\index{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get@{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+fb\+\_\+touch\+\_\+screen\+\_\+calibrate\+\_\+get (
\begin{DoxyParamCaption}
\item[{int $\ast$}]{xscale, }
\item[{int $\ast$}]{xtrans, }
\item[{int $\ast$}]{yscale, }
\item[{int $\ast$}]{ytrans, }
\item[{int $\ast$}]{xyswap}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_gae4aa44af19bec4dcc5c7e66c81e31fef}


Retrieves the calibration parameters of the touchscreen. 


\begin{DoxyParams}{Parameters}
{\em xscale} & Pointer to an integer in which to store the X scaling. Note that 256 = 1.\+0. \\
\hline
{\em xtrans} & Pointer to an integer in which to store the X translation. \\
\hline
{\em yscale} & Pointer to an integer in which to store the Y scaling. \\
\hline
{\em ytrans} & Pointer to an integer in which to store the Y translation. \\
\hline
{\em xyswap} & Pointer to an integer in which to store the Swap X \& Y flag. \\
\hline
\end{DoxyParams}
\hypertarget{group__Ecore__FB__Group_ga1dfeb0b21122196a47f2c703735c8f0a}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev, }
\item[{double}]{threshold}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga1dfeb0b21122196a47f2c703735c8f0a}


Set the threshold of mouse clicks of the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to set the threshodl mouse click to. \\
\hline
{\em threshold} & The threshold value.\\
\hline
\end{DoxyParams}
This function sets the threshold of mouse clicks of the device {\ttfamily dev} to {\ttfamily threshold}. If {\ttfamily dev} is {\ttfamily N\+U\+L\+L}, this function does nothing. \hypertarget{group__Ecore__FB__Group_ga5933f22a0ed37d6ed8c1d4e18dd57b78}{}\index{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}!ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get}}
\index{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get@{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get}!Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.@{Ecore\+\_\+\+F\+B -\/ Frame buffer convenience functions.}}
\subsubsection[{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}double ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Fb\+\_\+\+Input\+\_\+\+Device} $\ast$}]{dev}
\end{DoxyParamCaption}
)}\label{group__Ecore__FB__Group_ga5933f22a0ed37d6ed8c1d4e18dd57b78}


Get the threshold of mouse clicks of the given device. 


\begin{DoxyParams}{Parameters}
{\em dev} & The device to set the threshodl mouse click from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The threshold value.
\end{DoxyReturn}
This function returns the threshold of mouse clicks of the device {\ttfamily dev}. If {\ttfamily dev} is {\ttfamily N\+U\+L\+L}, this function returns 0.\+0. 