[InputMethod] Initial Interop 13/112913/1
authormanish.r <manish.r@samsung.com>
Fri, 3 Feb 2017 08:48:40 +0000 (14:18 +0530)
committermanish.r <manish.r@samsung.com>
Fri, 3 Feb 2017 08:48:40 +0000 (14:18 +0530)
Change-Id: Idd975b811a4eadbaee2dfe80171e3b1f0e13edf7
Signed-off-by: manish.r <manish.r@samsung.com>
16 files changed:
LICENSE [new file with mode: 0755]
Tizen.Uix.InputMethod/Interop/Interop.EinaList.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Interop/Interop.InputMethod.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Interop/Interop.Libraries.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Properties/AssemblyInfo.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.Net45.project.json [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.csproj [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.nuspec [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.project.json [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.snk [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodContext.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodDeviceInformation.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodEditor.cs [new file with mode: 0755]
Tizen.Uix.InputMethod/Tizen.Uix.InputMethodNet45.csproj [new file with mode: 0755]
packaging/csapi-uix-inputmethod.manifest [new file with mode: 0755]
packaging/csapi-uix-inputmethod.spec [new file with mode: 0755]

diff --git a/LICENSE b/LICENSE
new file mode 100755 (executable)
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/Tizen.Uix.InputMethod/Interop/Interop.EinaList.cs b/Tizen.Uix.InputMethod/Interop/Interop.EinaList.cs
new file mode 100755 (executable)
index 0000000..1c1b686
--- /dev/null
@@ -0,0 +1,33 @@
+/*\r
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the License);\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an AS IS BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/\r
+\r
+\r
+using System;\r
+using System.Runtime.InteropServices;\r
+using Tizen.Uix.InputMethod;\r
+\r
+/// <summary>\r
+/// Partial Interop Class\r
+/// </summary>\r
+internal static partial class Interop\r
+{\r
+    /// <summary>\r
+    /// EinaList Interop Class\r
+    /// </summary>\r
+    internal static class EinaList\r
+    {\r
+    }\r
+}
\ No newline at end of file
diff --git a/Tizen.Uix.InputMethod/Interop/Interop.InputMethod.cs b/Tizen.Uix.InputMethod/Interop/Interop.InputMethod.cs
new file mode 100755 (executable)
index 0000000..917bf42
--- /dev/null
@@ -0,0 +1,206 @@
+/*\r
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the License);\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an AS IS BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/\r
+\r
+\r
+using System;\r
+using System.Runtime.InteropServices;\r
+using Tizen.Uix.InputMethod;\r
+\r
+/// <summary>\r
+/// Partial Interop Class\r
+/// </summary>\r
+internal static partial class Interop\r
+{\r
+    /// <summary>\r
+    /// InputMethod Interop Class\r
+    /// </summary>\r
+    internal static class InputMethod\r
+    {\r
+        internal static string LogTag = "Tizen.Uix.InputMethod";\r
+\r
+        private const int ErrorInputMethod = -0x02F20000;\r
+\r
+        internal enum ErrorCode\r
+        {\r
+            None = Tizen.Internals.Errors.ErrorCode.None,                           /**< Successful */\r
+            InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,   /**< Invalid parameter */\r
+            PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,   /**< Permission denied */\r
+            NoCallbackFunction = ErrorInputMethod | 0x0001,                         /**< Necessary callback function is not set */\r
+            NotRunning = ErrorInputMethod | 0x0002,                                 /**< IME main loop isn't started yet */\r
+            OperationFailed = ErrorInputMethod | 0x0010,                            /**< Operation failed  */\r
+            OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory              /**< out of memory */\r
+        };\r
+\r
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]\r
+        internal struct ImeCallbackStruct\r
+        {\r
+            internal ImeCreateCb create;\r
+            internal ImeTerminateCb terminate;\r
+            internal ImeShowCb show;\r
+            internal ImeHideCb hide;\r
+        };\r
+\r
+        public enum ImeOptionWindowType\r
+        {\r
+            Keyborad, /**< Open from Keyboard */\r
+            SettingApplication /**< Open from Setting application */\r
+        };\r
+\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_run")]\r
+        internal static extern ErrorCode ImeRun(ref ImeCallbackStruct basicCB, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_focus_in_cb")]\r
+        internal static extern ErrorCode ImeEventSetFocusInCb(ImeFocusInCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_focus_out_cb")]\r
+        internal static extern ErrorCode ImeEventSetFocusOutCb(ImeFocusOutCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_surrounding_text_updated_cb")]\r
+        internal static extern ErrorCode ImeEventSetSurroundingTextUpdatedCb(ImeSurroundingTextUpdatedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_input_context_reset_cb")]\r
+        internal static extern ErrorCode ImeEventSetInputContextResetCb(ImeInputContextResetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_cursor_position_updated_cb")]\r
+        internal static extern ErrorCode ImeEventSetCursorPositionUpdatedCb(ImeCursorPositionUpdatedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_language_requested_cb")]\r
+        internal static extern ErrorCode ImeEventSetLanguageRequestedCb(ImeLanguageRequestedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_language_set_cb")]\r
+        internal static extern ErrorCode ImeEventSetLanguageSetCb(ImeLanguageSetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_imdata_set_cb")]\r
+        internal static extern ErrorCode ImeEventSetImdataSetCb(ImeImdataSetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_imdata_requested_cb")]\r
+        internal static extern ErrorCode ImeEventSetImdataRequestedCb(ImeImdataRequestedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_layout_set_cb")]\r
+        internal static extern ErrorCode ImeEventSetLayoutSetCb(ImeLayoutSetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_return_key_type_set_cb")]\r
+        internal static extern ErrorCode ImeEventSetReturnKeyTypeSetCb(ImeReturnKeyTypeSetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_return_key_state_set_cb")]\r
+        internal static extern ErrorCode ImeEventSetReturnKeyStateSetCb(ImeReturnKeyStateSetCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_geometry_requested_cb")]\r
+        internal static extern ErrorCode ImeEventSetGeometryRequestedCb(ImeGeometryRequestedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_process_key_event_cb")]\r
+        internal static extern ErrorCode ImeEventSetProcessKeyEventCb(ImeProcessKeyEventCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_display_language_changed_cb")]\r
+        internal static extern ErrorCode ImeEventSetDisplayLanguageChangedCb(ImeDisplayLanguageChangedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_rotation_degree_changed_cb")]\r
+        internal static extern ErrorCode ImeEventSetRotationDegreeChangedCb(ImeRotationDegreeChangedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_accessibility_state_changed_cb")]\r
+        internal static extern ErrorCode ImeEventSetAccessibilityStateChangedCb(ImeAccessibilityStateChangedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_option_window_created_cb")]\r
+        internal static extern ErrorCode ImeEventSetOptionWindowCreatedCb(ImeOptionWindowCreatedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_event_set_option_window_destroyed_cb")]\r
+        internal static extern ErrorCode ImeEventSetOptionWindowDestroyedCb(ImeOptionWindowDestroyedCb callbackFunction, IntPtr userData);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_send_key_event")]\r
+        internal static extern ErrorCode ImeSendKeyEvent(KeyCode keycode, KeyMask keymask, bool forwardKey);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_commit_string")]\r
+        internal static extern ErrorCode ImeCommitString(string str);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_show_preedit_string")]\r
+        internal static extern ErrorCode ImeShowPreeditString();\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_hide_preedit_string")]\r
+        internal static extern ErrorCode ImeHidePreeditString();\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_update_preedit_string")]\r
+        internal static extern ErrorCode ImeUpdatePreeditString(string str, IntPtr attrs);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_request_surrounding_text")]\r
+        internal static extern ErrorCode ImeRequestSurroundingText(int maxlenBefore, int maxlenAfter);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_delete_surrounding_text")]\r
+        internal static extern ErrorCode ImeDeleteSurroundingText(int offset, int len);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_get_surrounding_text")]\r
+        internal static extern ErrorCode ImeGetSurroundingText(int maxlenBefore, int maxlenAfter, out IntPtr text, out int cursorPos);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_set_selection")]\r
+        internal static extern ErrorCode ImeSetSelection(int start, int end);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_get_main_window")]\r
+        internal static extern IntPtr ImeGetMainWindow();\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_set_size")]\r
+        internal static extern ErrorCode ImeSetSize(int portraitWidth, int portraitHeight, int landscapeWidth, int landscapeHeight);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_create_option_window")]\r
+        internal static extern ErrorCode ImeCreateOptionWindow();\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_destroy_option_window")]\r
+        internal static extern ErrorCode ImeDestroyOptionWindow(IntPtr window);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_layout")]\r
+        internal static extern ErrorCode ImeContextGetLayout(IntPtr context, out EcoreIMFInputPanelLayout layout);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_layout_variation")]\r
+        internal static extern ErrorCode ImeContextGetLayoutVariation(IntPtr context, out ImeLayoutVariation layoutVariation);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_cursor_position")]\r
+        internal static extern ErrorCode ImeContextGetCursorPosition(IntPtr context, out int cursorPos);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_autocapital_type")]\r
+        internal static extern ErrorCode ImeContextGetAutocapitalType(IntPtr context, out EcoreIMFAutocapitalType autocapitalType);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_return_key_type")]\r
+        internal static extern ErrorCode ImeContextGetReturnKeyType(IntPtr context, out EcoreIMFInputPanelReturnKeyType returnKeyType);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_return_key_state")]\r
+        internal static extern ErrorCode ImeContextGetReturnKeyState(IntPtr context, out bool returnKeyState);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_prediction_mode")]\r
+        internal static extern ErrorCode ImeContextGetPredictionMode(IntPtr context, out bool predictionMode);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_password_mode")]\r
+        internal static extern ErrorCode ImeContextGetPasswordMode(IntPtr context, out bool passwordMode);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_input_hint")]\r
+        internal static extern ErrorCode ImeContextGetInputHint(IntPtr context, out EcoreIMFInputHints inputHint);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_bidi_direction")]\r
+        internal static extern ErrorCode ImeContextGetBidiDirection(IntPtr context, out EcoreIMFBiDiDirection bidi);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_context_get_language")]\r
+        internal static extern ErrorCode ImeContextGetLanguage(IntPtr context, out EcoreIMFInputPanelLang language);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_device_info_get_name")]\r
+        internal static extern ErrorCode ImeDeviceInfoGetName(IntPtr dev_info, out string devName);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_device_info_get_class")]\r
+        internal static extern ErrorCode ImeDeviceInfoGetClass(IntPtr dev_info, out EcoreIMFDeviceClass devClass);\r
+        [DllImport(Libraries.InputMethod, EntryPoint = "ime_device_info_get_subclass")]\r
+        internal static extern ErrorCode ImeDeviceInfoGetSubclass(IntPtr dev_info, out EcoreIMFDeviceSubclass devSubClass);\r
+\r
+\r
+\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeCreateCb(IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeTerminateCb(IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeShowCb(int contextId, IntPtr context, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeHideCb(int contextId, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeFocusInCb(int contextId, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeFocusOutCb(int contextId, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeSurroundingTextUpdatedCb(int contextId, IntPtr text, int cursorPos, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeInputContextResetCb(IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeCursorPositionUpdatedCb(int cursorPos, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeLanguageRequestedCb(IntPtr userData, out IntPtr langCode);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeLanguageSetCb(EcoreIMFInputPanelLang language, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeImdataSetCb(IntPtr data, uint dataLength, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeImdataRequestedCb(IntPtr userData, out IntPtr data, out uint dataLength);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeLayoutSetCb(EcoreIMFInputPanelLayout layout, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeReturnKeyTypeSetCb(EcoreIMFInputPanelReturnKeyType type, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeReturnKeyStateSetCb(bool disabled, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeGeometryRequestedCb(IntPtr userData, out int x, out int y, out int w, out int h);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate bool ImeProcessKeyEventCb(KeyCode keycode, KeyMask keymask, IntPtr devInfo, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeDisplayLanguageChangedCb(IntPtr language, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeRotationDegreeChangedCb(int degree, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeAccessibilityStateChangedCb(bool state, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeOptionWindowCreatedCb(IntPtr window, ImeOptionWindowType type, IntPtr userData);\r
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]\r
+        internal delegate void ImeOptionWindowDestroyedCb(IntPtr window, IntPtr userData);\r
+    }\r
+}
\ No newline at end of file
diff --git a/Tizen.Uix.InputMethod/Interop/Interop.Libraries.cs b/Tizen.Uix.InputMethod/Interop/Interop.Libraries.cs
new file mode 100755 (executable)
index 0000000..38bbf24
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the License);
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an AS IS BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+    /// <summary>
+    /// Partial Libraries Class
+    /// </summary>
+    internal static partial class Libraries
+    {
+        public const string InputMethod = "libcapi-ui-inputmethod.so";
+    }
+}
diff --git a/Tizen.Uix.InputMethod/Properties/AssemblyInfo.cs b/Tizen.Uix.InputMethod/Properties/AssemblyInfo.cs
new file mode 100755 (executable)
index 0000000..06bf6fe
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tizen.Uix.InputMethod")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tizen.Uix.InputMethod")]
+[assembly: AssemblyCopyright("Copyright ©  2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components.  If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("081c204a-2267-4f10-8751-e3afe5c30ae9")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.Net45.project.json b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.Net45.project.json
new file mode 100755 (executable)
index 0000000..ab1a0ee
--- /dev/null
@@ -0,0 +1,11 @@
+{
+  "dependencies": {
+    "Tizen": "1.0.1"
+  },
+  "frameworks": {
+    "net45": {}
+  },
+  "runtimes": {
+    "win": {}
+  }
+}
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.csproj b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.csproj
new file mode 100755 (executable)
index 0000000..70cf366
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>8.0.30703</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{081C204A-2267-4F10-8751-E3AFE5C30AE9}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>Tizen.Uix.InputMethod</RootNamespace>\r
+    <AssemblyName>Tizen.Uix.InputMethod</AssemblyName>\r
+    <FileAlignment>512</FileAlignment>\r
+    <DefaultLanguage>en-US</DefaultLanguage>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>\r
+    <TargetFrameworkVersion>v1.3</TargetFrameworkVersion>\r
+    <NuGetTargetMoniker>.NETStandard,Version=v1.3</NuGetTargetMoniker>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+    <NoStdLib>true</NoStdLib>\r
+    <NoWarn>$(NoWarn);1701</NoWarn>\r
+    <UseVSHostingProcess>false</UseVSHostingProcess>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>portable</DebugType>\r
+    <Optimize>false</Optimize>\r
+    <OutputPath>bin\Debug\</OutputPath>\r
+    <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>portable</DebugType>\r
+    <Optimize>true</Optimize>\r
+    <OutputPath>bin\Release\</OutputPath>\r
+    <DefineConstants>TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <SignAssembly>true</SignAssembly>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <AssemblyOriginatorKeyFile>Tizen.Uix.InputMethod.snk</AssemblyOriginatorKeyFile>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <Compile Include="Interop\Interop.EinaList.cs" />\r
+    <Compile Include="Interop\Interop.InputMethod.cs" />\r
+    <Compile Include="Interop\Interop.Libraries.cs" />\r
+    <Compile Include="Properties\AssemblyInfo.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodContext.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodDeviceInformation.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodEditor.cs" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Tizen.Uix.InputMethod.nuspec" />\r
+    <None Include="Tizen.Uix.InputMethod.project.json" />\r
+    <None Include="Tizen.Uix.InputMethod.snk" />\r
+  </ItemGroup>\r
+  <ItemGroup />\r
+  <ItemGroup>\r
+    <Reference Include="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />\r
+  </ItemGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->\r
+  <PropertyGroup>\r
+    <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and
+       https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild
+    -->\r
+    <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
+       properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
+       to prevent it from outputting a warning (MSB3644).
+    -->\r
+    <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>\r
+    <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>\r
+    <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>\r
+  </PropertyGroup>\r
+</Project>
\ No newline at end of file
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.nuspec b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.nuspec
new file mode 100755 (executable)
index 0000000..17a421e
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<package>
+  <metadata>
+    <id>Tizen.Uix.InputMethod</id>
+    <version>$version$</version>
+    <authors>Samsung Electronics</authors>
+    <requireLicenseAcceptance>false</requireLicenseAcceptance>
+    <licenseUrl>https://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
+    <projectUrl>https://www.tizen.org/</projectUrl>
+    <iconUrl>https://developer.tizen.org/sites/default/files/images/tizen-pinwheel-on-light-rgb_64_64.png</iconUrl>
+    <copyright>© Samsung Electronics Co., Ltd All Rights Reserved</copyright>
+    <description>InputMethod API for Tizen.Net</description>
+    <dependencies>
+      <dependency id="Tizen" version="1.0.2" />
+    </dependencies>
+  </metadata>
+  <files>
+    <file src="bin/$Configuration$/Tizen.Uix.InputMethod.dll" target="lib/netstandard1.3" />
+    <file src="bin/$Configuration$/Net45/Tizen.Uix.InputMethod.dll" target="lib/net45" />
+  </files>
+</package>
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.project.json b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.project.json
new file mode 100755 (executable)
index 0000000..db7436c
--- /dev/null
@@ -0,0 +1,9 @@
+{
+  "dependencies": {
+    "NETStandard.Library": "1.6.0",
+    "Tizen": "1.0.1"
+  },
+  "frameworks": {
+    "netstandard1.3": {}
+  }
+}
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.snk b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.snk
new file mode 100755 (executable)
index 0000000..fc12d26
Binary files /dev/null and b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod.snk differ
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodContext.cs b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodContext.cs
new file mode 100755 (executable)
index 0000000..c0f5146
--- /dev/null
@@ -0,0 +1,105 @@
+/*\r
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the License);\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an AS IS BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/\r
+\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Runtime.InteropServices;\r
+using static Interop.InputMethod;\r
+\r
+namespace Tizen.Uix.InputMethod\r
+{\r
+    public enum EcoreIMFInputPanelLayout\r
+    {\r
+        LayoutNormal,\r
+        LayoutNumber,\r
+        LayoutEMail,\r
+        LayoutURL,\r
+        LayoutPhoneNumber,\r
+        LayoutIP,\r
+        LayoutMonth,\r
+        LayoutNumberOnly,\r
+        LayoutInvalid,\r
+        LayoutHEX,\r
+        LayoutTerminal,\r
+        LayoutPassword,\r
+        LayoutDateTime,\r
+        LayoutEmoticon,\r
+        LayoutVoice,\r
+        Undefined\r
+    };\r
+\r
+    public enum ImeLayoutVariation\r
+    {\r
+        NormalVariationNormal = 0, /**< The plain normal layout */\r
+        NormalVariationFileName, /**< Filename layout; symbols such as '/', '\*', '\', '|', '&lt;', '&gt;', '?', '&quot;' and ':' should be disabled */\r
+        NormalVariationPersonName, /**< The name of a person */\r
+        NumberOnlyVariationNormal = 0, /**< The plain normal number layout */\r
+        NumberOnlyVariationSigned, /**< The number layout to allow a negative sign */\r
+        NumberOnlyVariationDecimal, /**< The number layout to allow decimal point to provide fractional value */\r
+        NumberOnlyVariationSignedAandDecimal, /**< The number layout to allow decimal point and negative sign */\r
+        PasswordVariationNormal = 0, /**< The normal password layout */\r
+        PasswordVariationNumberOnly, /**< The password layout to allow only number */\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFAutocapitalType\r
+    {\r
+        None,\r
+        Word,\r
+        Sentence,\r
+        AllCharacter,\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFInputPanelReturnKeyType\r
+    {\r
+        Default,\r
+        Done,\r
+        Go,\r
+        Join,\r
+        Login,\r
+        Next,\r
+        Search,\r
+        Send,\r
+        SignIn,\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFInputHints\r
+    {\r
+        None,\r
+        AutoComplete,\r
+        SensitiveData,\r
+        Multiline,\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFBiDiDirection\r
+    {\r
+        Neutral,\r
+        LTR,\r
+        RTL,\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFInputPanelLang\r
+    {\r
+        Automatic,\r
+        Alphabet,\r
+        Undefined\r
+    };\r
+}
\ No newline at end of file
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodDeviceInformation.cs b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodDeviceInformation.cs
new file mode 100755 (executable)
index 0000000..f17acd6
--- /dev/null
@@ -0,0 +1,52 @@
+/*\r
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the License);\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an AS IS BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using static Interop.InputMethod;\r
+\r
+namespace Tizen.Uix.InputMethod\r
+{\r
+    public enum EcoreIMFDeviceClass\r
+    {\r
+        None,\r
+        Seat,\r
+        Keyboard,\r
+        Mouse,\r
+        Touch,\r
+        Pen,\r
+        Pointer,\r
+        Gamepad,\r
+        Undefined\r
+    };\r
+\r
+    public enum EcoreIMFDeviceSubclass\r
+    {\r
+        None,\r
+        Finger,\r
+        FingerNail,\r
+        Knuckle,\r
+        Palm,\r
+        HandSIze,\r
+        HandFlat,\r
+        PenTip,\r
+        Trackpad,\r
+        Trackpoint,\r
+        Trackball,\r
+        Undefined\r
+    };\r
+}\r
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodEditor.cs b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethod/InputMethodEditor.cs
new file mode 100755 (executable)
index 0000000..a1522a7
--- /dev/null
@@ -0,0 +1,271 @@
+/*\r
+* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the License);\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an AS IS BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/\r
+\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Runtime.InteropServices;\r
+using static Interop.InputMethod;\r
+\r
+namespace Tizen.Uix.InputMethod\r
+{\r
+    public enum KeyCode\r
+    {\r
+        IME_KEY_BackSpace = 0xFF08,    /**< The backspace key */\r
+        IME_KEY_Tab = 0xFF09,    /**< The tab key */\r
+        IME_KEY_Linefeed = 0xFF0A,    /**< The linefeed key */\r
+        IME_KEY_Clear = 0xFF0B,    /**< The clear key */\r
+        IME_KEY_Return = 0xFF0D,    /**< The return key */\r
+        IME_KEY_Pause = 0xFF13,    /**< The pause key */\r
+        IME_KEY_Scroll_Lock = 0xFF14,    /**< The scroll lock key */\r
+        IME_KEY_Sys_Req = 0xFF15,    /**< The sys req key */\r
+        IME_KEY_Escape = 0xFF1B,    /**< The escape key */\r
+        IME_KEY_Delete = 0xFFFF,    /**< The delete key */\r
+\r
+        /* Cursor control & motion */\r
+        IME_KEY_Home = 0xFF50,    /**< The home key */\r
+        IME_KEY_Left = 0xFF51,    /**< The left directional key */\r
+        IME_KEY_Up = 0xFF52,    /**< The up directional key */\r
+        IME_KEY_Right = 0xFF53,    /**< The right directional key */\r
+        IME_KEY_Down = 0xFF54,    /**< The down directional key */\r
+        IME_KEY_Prior = 0xFF55,    /**< The prior, previous key */\r
+        IME_KEY_Page_Up = 0xFF55,    /**< The page up key */\r
+        IME_KEY_Next = 0xFF56,    /**< The next key */\r
+        IME_KEY_Page_Down = 0xFF56,    /**< The page down key */\r
+        IME_KEY_End = 0xFF57,    /**< The end key */\r
+        IME_KEY_Begin = 0xFF58,    /**< The begin key */\r
+\r
+        /* Misc Functions */\r
+        IME_KEY_Select = 0xFF60,    /**< The select key */\r
+        IME_KEY_Print = 0xFF61,    /**< The print key */\r
+        IME_KEY_Execute = 0xFF62,    /**< The execute, run, do key */\r
+        IME_KEY_Insert = 0xFF63,    /**< The insert key */\r
+        IME_KEY_Undo = 0xFF65,    /**< The undo key */\r
+        IME_KEY_Redo = 0xFF66,    /**< The redo key */\r
+        IME_KEY_Menu = 0xFF67,    /**< The menu key */\r
+        IME_KEY_Find = 0xFF68,    /**< The find key */\r
+        IME_KEY_Cancel = 0xFF69,    /**< The cancel, stop, abort, exit key */\r
+        IME_KEY_Help = 0xFF6A,    /**< The help key */\r
+        IME_KEY_Break = 0xFF6B,    /**< The break key */\r
+        IME_KEY_Mode_switch = 0xFF7E,    /**< The character set switch key */\r
+        IME_KEY_Num_Lock = 0xFF7F,    /**< The num lock key */\r
+\r
+        /* Keypad */\r
+        IME_KEY_KP_Space = 0xFF80,    /**< The Numpad space key */\r
+        IME_KEY_KP_Tab = 0xFF89,    /**< The Numpad tab key */\r
+        IME_KEY_KP_Enter = 0xFF8D,    /**< The Numpad enter key */\r
+        IME_KEY_KP_F1 = 0xFF91,    /**< The Numpad function 1 key */\r
+        IME_KEY_KP_F2 = 0xFF92,    /**< The Numpad function 2 key */\r
+        IME_KEY_KP_F3 = 0xFF93,    /**< The Numpad function 3 key */\r
+        IME_KEY_KP_F4 = 0xFF94,    /**< The Numpad function 4 key */\r
+        IME_KEY_KP_Home = 0xFF95,    /**< The Numpad home key */\r
+        IME_KEY_KP_Left = 0xFF96,    /**< The Numpad left key */\r
+        IME_KEY_KP_Up = 0xFF97,    /**< The Numpad up key */\r
+        IME_KEY_KP_Right = 0xFF98,    /**< The Numpad right key */\r
+        IME_KEY_KP_Down = 0xFF99,    /**< The Numpad down key */\r
+        IME_KEY_KP_Prior = 0xFF9A,    /**< The Numpad prior, previous key */\r
+        IME_KEY_KP_Page_Up = 0xFF9A,    /**< The Numpad page up key */\r
+        IME_KEY_KP_Next = 0xFF9B,    /**< The Numpad next key */\r
+        IME_KEY_KP_Page_Down = 0xFF9B,    /**< The Numpad page down key */\r
+        IME_KEY_KP_End = 0xFF9C,    /**< The Numpad end key */\r
+        IME_KEY_KP_Begin = 0xFF9D,    /**< The Numpad begin key */\r
+        IME_KEY_KP_Insert = 0xFF9E,    /**< The Numpad insert key */\r
+        IME_KEY_KP_Delete = 0xFF9F,    /**< The Numpad delete key */\r
+        IME_KEY_KP_Equal = 0xFFBD,    /**< The Numpad equal key */\r
+        IME_KEY_KP_Multiply = 0xFFAA,    /**< The Numpad multiply key */\r
+        IME_KEY_KP_Add = 0xFFAB,    /**< The Numpad add key */\r
+        IME_KEY_KP_Separator = 0xFFAC,    /**< The Numpad separator key */\r
+        IME_KEY_KP_Subtract = 0xFFAD,    /**< The Numpad subtract key */\r
+        IME_KEY_KP_Decimal = 0xFFAE,    /**< The Numpad decimal key */\r
+        IME_KEY_KP_Divide = 0xFFAF,    /**< The Numpad divide key */\r
+\r
+        IME_KEY_KP_0 = 0xFFB0,    /**< The Numpad 0 key */\r
+        IME_KEY_KP_1 = 0xFFB1,    /**< The Numpad 1 key */\r
+        IME_KEY_KP_2 = 0xFFB2,    /**< The Numpad 2 key */\r
+        IME_KEY_KP_3 = 0xFFB3,    /**< The Numpad 3 key */\r
+        IME_KEY_KP_4 = 0xFFB4,    /**< The Numpad 4 key */\r
+        IME_KEY_KP_5 = 0xFFB5,    /**< The Numpad 5 key */\r
+        IME_KEY_KP_6 = 0xFFB6,    /**< The Numpad 6 key */\r
+        IME_KEY_KP_7 = 0xFFB7,    /**< The Numpad 7 key */\r
+        IME_KEY_KP_8 = 0xFFB8,    /**< The Numpad 8 key */\r
+        IME_KEY_KP_9 = 0xFFB9,    /**< The Numpad 9 key */\r
+\r
+        /* Auxilliary Functions */\r
+        IME_KEY_F1 = 0xFFBE,    /**< The function 1 key */\r
+        IME_KEY_F2 = 0xFFBF,    /**< The function 2 key */\r
+        IME_KEY_F3 = 0xFFC0,    /**< The function 3 key */\r
+        IME_KEY_F4 = 0xFFC1,    /**< The function 4 key */\r
+        IME_KEY_F5 = 0xFFC2,    /**< The function 5 key */\r
+        IME_KEY_F6 = 0xFFC3,    /**< The function 6 key */\r
+        IME_KEY_F7 = 0xFFC4,    /**< The function 7 key */\r
+        IME_KEY_F8 = 0xFFC5,    /**< The function 8 key */\r
+        IME_KEY_F9 = 0xFFC6,    /**< The function 9 key */\r
+        IME_KEY_F10 = 0xFFC7,    /**< The function 10 key */\r
+        IME_KEY_F11 = 0xFFC8,    /**< The function 11 key */\r
+        IME_KEY_F12 = 0xFFC9,    /**< The function 12 key */\r
+        IME_KEY_F13 = 0xFFCA,    /**< The function 13 key */\r
+        IME_KEY_F14 = 0xFFCB,    /**< The function 14 key */\r
+        IME_KEY_F15 = 0xFFCC,    /**< The function 15 key */\r
+        IME_KEY_F16 = 0xFFCD,    /**< The function 16 key */\r
+        IME_KEY_F17 = 0xFFCE,    /**< The function 17 key */\r
+        IME_KEY_F18 = 0xFFCF,    /**< The function 18 key */\r
+        IME_KEY_F19 = 0xFFD0,    /**< The function 19 key */\r
+        IME_KEY_F20 = 0xFFD1,    /**< The function 20 key */\r
+        IME_KEY_F21 = 0xFFD2,    /**< The function 21 key */\r
+        IME_KEY_F22 = 0xFFD3,    /**< The function 22 key */\r
+        IME_KEY_F23 = 0xFFD4,    /**< The function 23 key */\r
+        IME_KEY_F24 = 0xFFD5,    /**< The function 24 key */\r
+        IME_KEY_F25 = 0xFFD6,    /**< The function 25 key */\r
+        IME_KEY_F26 = 0xFFD7,    /**< The function 26 key */\r
+        IME_KEY_F27 = 0xFFD8,    /**< The function 27 key */\r
+        IME_KEY_F28 = 0xFFD9,    /**< The function 28 key */\r
+        IME_KEY_F29 = 0xFFDA,    /**< The function 29 key */\r
+        IME_KEY_F30 = 0xFFDB,    /**< The function 30 key */\r
+        IME_KEY_F31 = 0xFFDC,    /**< The function 31 key */\r
+        IME_KEY_F32 = 0xFFDD,    /**< The function 32 key */\r
+        IME_KEY_F33 = 0xFFDE,    /**< The function 33 key */\r
+        IME_KEY_F34 = 0xFFDF,    /**< The function 34 key */\r
+        IME_KEY_F35 = 0xFFE0,    /**< The function 35 key */\r
+\r
+        /* Modifier keys */\r
+        IME_KEY_Shift_L = 0xFFE1,    /**< The left shift key */\r
+        IME_KEY_Shift_R = 0xFFE2,    /**< The right shift key */\r
+        IME_KEY_Control_L = 0xFFE3,    /**< The left control key */\r
+        IME_KEY_Control_R = 0xFFE4,    /**< The right control key */\r
+        IME_KEY_Caps_Lock = 0xFFE5,    /**< The caps lock key */\r
+        IME_KEY_Shift_Lock = 0xFFE6,    /**< The shift lock key */\r
+\r
+        IME_KEY_Meta_L = 0xFFE7,    /**< The left meta key */\r
+        IME_KEY_Meta_R = 0xFFE8,    /**< The right meta key */\r
+        IME_KEY_Alt_L = 0xFFE9,    /**< The left alt key */\r
+        IME_KEY_Alt_R = 0xFFEA,    /**< The right alt key */\r
+        IME_KEY_Super_L = 0xFFEB,    /**< The left super key */\r
+        IME_KEY_Super_R = 0xFFEC,    /**< The right super key */\r
+        IME_KEY_Hyper_L = 0xFFED,    /**< The left hyper key */\r
+        IME_KEY_Hyper_R = 0xFFEE,    /**< The right hyper key */\r
+\r
+        /* Latin 1 */\r
+        IME_KEY_space = 0x020,    /**< The space key */\r
+        IME_KEY_exclam = 0x021,    /**< The exclamation key */\r
+        IME_KEY_quotedbl = 0x022,    /**< The quotedbl key */\r
+        IME_KEY_numbersign = 0x023,    /**< The number sign key */\r
+        IME_KEY_dollar = 0x024,    /**< The dollar key */\r
+        IME_KEY_percent = 0x025,    /**< The percent key */\r
+        IME_KEY_ampersand = 0x026,    /**< The ampersand key */\r
+        IME_KEY_apostrophe = 0x027,    /**< The apostrophe key */\r
+        IME_KEY_parenleft = 0x028,    /**< The parenleft key */\r
+        IME_KEY_parenright = 0x029,    /**< The parenright key */\r
+        IME_KEY_asterisk = 0x02a,    /**< The asterisk key */\r
+        IME_KEY_plus = 0x02b,    /**< The plus key */\r
+        IME_KEY_comma = 0x02c,    /**< The comma key */\r
+        IME_KEY_minus = 0x02d,    /**< The minus key */\r
+        IME_KEY_period = 0x02e,    /**< The period key */\r
+        IME_KEY_slash = 0x02f,    /**< The slash key */\r
+        IME_KEY_0 = 0x030,    /**< The 0 key */\r
+        IME_KEY_1 = 0x031,    /**< The 1 key */\r
+        IME_KEY_2 = 0x032,    /**< The 2 key */\r
+        IME_KEY_3 = 0x033,    /**< The 3 key */\r
+        IME_KEY_4 = 0x034,    /**< The 4 key */\r
+        IME_KEY_5 = 0x035,    /**< The 5 key */\r
+        IME_KEY_6 = 0x036,    /**< The 6 key */\r
+        IME_KEY_7 = 0x037,    /**< The 7 key */\r
+        IME_KEY_8 = 0x038,    /**< The 8 key */\r
+        IME_KEY_9 = 0x039,    /**< The 9 key */\r
+        IME_KEY_colon = 0x03a,    /**< The colon key */\r
+        IME_KEY_semicolon = 0x03b,    /**< The semicolon key */\r
+        IME_KEY_less = 0x03c,    /**< The less key */\r
+        IME_KEY_equal = 0x03d,    /**< The equal key */\r
+        IME_KEY_greater = 0x03e,    /**< The greater key */\r
+        IME_KEY_question = 0x03f,    /**< The question key */\r
+        IME_KEY_at = 0x040,    /**< The at key */\r
+        IME_KEY_A = 0x041,    /**< The A key */\r
+        IME_KEY_B = 0x042,    /**< The B key */\r
+        IME_KEY_C = 0x043,    /**< The C key */\r
+        IME_KEY_D = 0x044,    /**< The D key */\r
+        IME_KEY_E = 0x045,    /**< The E key */\r
+        IME_KEY_F = 0x046,    /**< The F key */\r
+        IME_KEY_G = 0x047,    /**< The G key */\r
+        IME_KEY_H = 0x048,    /**< The H key */\r
+        IME_KEY_I = 0x049,    /**< The I key */\r
+        IME_KEY_J = 0x04a,    /**< The J key */\r
+        IME_KEY_K = 0x04b,    /**< The K key */\r
+        IME_KEY_L = 0x04c,    /**< The L key */\r
+        IME_KEY_M = 0x04d,    /**< The M key */\r
+        IME_KEY_N = 0x04e,    /**< The N key */\r
+        IME_KEY_O = 0x04f,    /**< The O key */\r
+        IME_KEY_P = 0x050,    /**< The P key */\r
+        IME_KEY_Q = 0x051,    /**< The Q key */\r
+        IME_KEY_R = 0x052,    /**< The R key */\r
+        IME_KEY_S = 0x053,    /**< The S key */\r
+        IME_KEY_T = 0x054,    /**< The T key */\r
+        IME_KEY_U = 0x055,    /**< The U key */\r
+        IME_KEY_V = 0x056,    /**< The V key */\r
+        IME_KEY_W = 0x057,    /**< The W key */\r
+        IME_KEY_X = 0x058,    /**< The X key */\r
+        IME_KEY_Y = 0x059,    /**< The Y key */\r
+        IME_KEY_Z = 0x05a,    /**< The Z key */\r
+        IME_KEY_bracketleft = 0x05b,    /**< The left bracket key */\r
+        IME_KEY_backslash = 0x05c,    /**< The backslash key */\r
+        IME_KEY_bracketright = 0x05d,    /**< The right bracket key */\r
+        IME_KEY_asciicircum = 0x05e,    /**< The circumflex key */\r
+        IME_KEY_underscore = 0x05f,    /**< The underscore key */\r
+        IME_KEY_grave = 0x060,    /**< The grave key */\r
+        IME_KEY_a = 0x061,    /**< The a key */\r
+        IME_KEY_b = 0x062,    /**< The b key */\r
+        IME_KEY_c = 0x063,    /**< The c key */\r
+        IME_KEY_d = 0x064,    /**< The d key */\r
+        IME_KEY_e = 0x065,    /**< The e key */\r
+        IME_KEY_f = 0x066,    /**< The f key */\r
+        IME_KEY_g = 0x067,    /**< The g key */\r
+        IME_KEY_h = 0x068,    /**< The h key */\r
+        IME_KEY_i = 0x069,    /**< The i key */\r
+        IME_KEY_j = 0x06a,    /**< The j key */\r
+        IME_KEY_k = 0x06b,    /**< The k key */\r
+        IME_KEY_l = 0x06c,    /**< The l key */\r
+        IME_KEY_m = 0x06d,    /**< The m key */\r
+        IME_KEY_n = 0x06e,    /**< The n key */\r
+        IME_KEY_o = 0x06f,    /**< The o key */\r
+        IME_KEY_p = 0x070,    /**< The p key */\r
+        IME_KEY_q = 0x071,    /**< The q key */\r
+        IME_KEY_r = 0x072,    /**< The r key */\r
+        IME_KEY_s = 0x073,    /**< The s key */\r
+        IME_KEY_t = 0x074,    /**< The t key */\r
+        IME_KEY_u = 0x075,    /**< The u key */\r
+        IME_KEY_v = 0x076,    /**< The v key */\r
+        IME_KEY_w = 0x077,    /**< The w key */\r
+        IME_KEY_x = 0x078,    /**< The x key */\r
+        IME_KEY_y = 0x079,    /**< The y key */\r
+        IME_KEY_z = 0x07a,    /**< The z key */\r
+        IME_KEY_braceleft = 0x07b,    /**< The left brace key */\r
+        IME_KEY_bar = 0x07c,    /**< The bar key */\r
+        IME_KEY_braceright = 0x07d,    /**< The right brace key */\r
+        IME_KEY_asciitilde = 0x07e    /**< The tilde key */\r
+    };\r
+\r
+    public enum KeyMask\r
+    {\r
+        IME_KEY_MASK_PRESSED = 0,       /**< Key press event without modifier key */\r
+        IME_KEY_MASK_SHIFT = (1 << 0),    /**< The Shift key is pressed down */\r
+        IME_KEY_MASK_CAPSLOCK = (1 << 1), /**< The CapsLock key is pressed down */\r
+        IME_KEY_MASK_CONTROL = (1 << 2),  /**< The Control key is pressed down */\r
+        IME_KEY_MASK_ALT = (1 << 3),      /**< The Alt key is pressed down */\r
+        IME_KEY_MASK_META = (1 << 4),     /**< The Meta key is pressed down */\r
+        IME_KEY_MASK_WIN = (1 << 5),      /**< The Win (between Control and Alt) is pressed down */\r
+        IME_KEY_MASK_HYPER = (1 << 6),    /**< The Hyper key is pressed down */\r
+        IME_KEY_MASK_NUMLOCK = (1 << 7),  /**< The NumLock key is pressed down */\r
+        IME_KEY_MASK_RELEASED = (1 << 15) /**< Key release event */\r
+    };\r
+}
\ No newline at end of file
diff --git a/Tizen.Uix.InputMethod/Tizen.Uix.InputMethodNet45.csproj b/Tizen.Uix.InputMethod/Tizen.Uix.InputMethodNet45.csproj
new file mode 100755 (executable)
index 0000000..f3c90f5
--- /dev/null
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>8.0.30703</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{081C204A-2267-4F10-8751-E3AFE5C30AE9}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>Tizen.Uix.InputMethod</RootNamespace>\r
+    <AssemblyName>Tizen.Uix.InputMethod</AssemblyName>\r
+    <FileAlignment>512</FileAlignment>\r
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <Optimize>false</Optimize>\r
+    <OutputPath>bin\Debug\Net45\</OutputPath>\r
+    <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+    <Prefer32Bit>false</Prefer32Bit>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <Optimize>true</Optimize>\r
+    <OutputPath>bin\Release\Net45\</OutputPath>\r
+    <DefineConstants>TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+    <Prefer32Bit>false</Prefer32Bit>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <SignAssembly>true</SignAssembly>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <AssemblyOriginatorKeyFile>Tizen.Uix.InputMethod.snk</AssemblyOriginatorKeyFile>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <Compile Include="Interop\Interop.EinaList.cs" />\r
+    <Compile Include="Interop\Interop.InputMethod.cs" />\r
+    <Compile Include="Interop\Interop.Libraries.cs" />\r
+    <Compile Include="Properties\AssemblyInfo.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodContext.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodDeviceInformation.cs" />\r
+    <Compile Include="Tizen.Uix.InputMethod\InputMethodEditor.cs" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Tizen.Uix.InputMethod.nuspec" />\r
+    <None Include="Tizen.Uix.InputMethod.project.json" />\r
+    <None Include="Tizen.Uix.InputMethod.snk" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Reference Include="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />\r
+  </ItemGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->\r
+</Project>
\ No newline at end of file
diff --git a/packaging/csapi-uix-inputmethod.manifest b/packaging/csapi-uix-inputmethod.manifest
new file mode 100755 (executable)
index 0000000..75b0fa5
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+    <request>
+        <domain name="_"/>
+    </request>
+</manifest>
diff --git a/packaging/csapi-uix-inputmethod.spec b/packaging/csapi-uix-inputmethod.spec
new file mode 100755 (executable)
index 0000000..ab21495
--- /dev/null
@@ -0,0 +1,44 @@
+Name:       csapi-uix-inputmethod
+Summary:    Tizen Uix InputMethod API for C#
+Version:    1.0.2
+Release:    1
+Group:      Development/Libraries
+License:    Apache-2.0
+URL:        https://www.tizen.org
+Source0:    %{name}-%{version}.tar.gz
+Source1:    %{name}.manifest
+
+AutoReqProv: no
+ExcludeArch: aarch64
+
+BuildRequires: dotnet-build-tools
+
+# C# API Requires
+BuildRequires: csapi-tizen-nuget
+
+%define Assemblies Tizen.Uix.InputMethod
+
+%description
+%{summary}
+
+%dotnet_import_sub_packages
+
+%prep
+%setup -q
+cp %{SOURCE1} .
+
+%build
+for ASM in %{Assemblies}; do
+%dotnet_build $ASM
+%dotnet_pack $ASM/$ASM.nuspec %{version}
+done
+
+%install
+for ASM in %{Assemblies}; do
+%dotnet_install $ASM
+done
+
+%files
+%manifest %{name}.manifest
+%license LICENSE
+%attr(644,root,root) %{dotnet_assembly_files}