# In Impress, how do I use Python to insert text content at the cursor position?

**URL:** <https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821>\
**Category:** User Support\
**Created:** [July 31, 2024, 1:41am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821 "2024-07-31T01:41:28Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gulixiang](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/gulixiang/32/1227_2.png) [@gulixiang](https://forum.collaboraonline.com/u/gulixiang)\
**Post date:** [July 31, 2024, 1:41am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/1 "2024-07-31T01:41:28Z")

</div>

Suppose there’s a text box with some content, and my cursor is currently positioned in the middle of this content. How can I use Python to insert a chunk of text at the cursor position? My current code only inserts content at the end of the existing text.  
`def insert\_text\_in\_impress(txt):  
doc = XSCRIPTCONTEXT.getDocument()  
# Get the current controller  
controller = doc.getCurrentController()  
# Get the current selection  
selection = controller.getSelection()  
if selection is None or selection.getCount() == 0:  
raise Exception(“No selection found.”)

```
shape = selection.getByIndex(0)
cursor = shape.createTextCursor()
shape.getText().insertString(cursor, txt, True)`

```

---

<div class="post-metadata">

**Author:** ![vmiklos](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/vmiklos/32/787_2.png) [@vmiklos](https://forum.collaboraonline.com/u/vmiklos)\
**Post date:** [July 31, 2024, 6:59am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/2 "2024-07-31T06:59:04Z")

</div>

You could try dispatching an UNO command to insert text at the current cursor position. Example in basic:

```auto
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:InsertHardHyphen", "", 0, Array())

```

I assume you could do the Python equivalent of that.

---

<div class="post-metadata">

**Author:** ![gulixiang](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/gulixiang/32/1227_2.png) [@gulixiang](https://forum.collaboraonline.com/u/gulixiang)\
**Post date:** [July 31, 2024, 8:09am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/3 "2024-07-31T08:09:17Z")

</div>

@vmiklos Your method is correct, but it’s inserting ‘-’. How can I insert custom text instead?

---

<div class="post-metadata">

**Author:** ![vmiklos](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/vmiklos/32/787_2.png) [@vmiklos](https://forum.collaboraonline.com/u/vmiklos)\
**Post date:** [August 1, 2024, 6:14am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/4 "2024-08-01T06:14:15Z")

</div>

Hmm, Writer has .uno:InsertText, but that doesn’t seem to work in Impress shape text. Something like this?

```auto
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Symbols"
args1(0).Value = "custom text"
dispatcher.executeDispatch(document, ".uno:InsertSymbol", "", 0, args1())

```

---

<div class="post-metadata">

**Author:** ![gulixiang](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/gulixiang/32/1227_2.png) [@gulixiang](https://forum.collaboraonline.com/u/gulixiang)\
**Post date:** [August 2, 2024, 1:30am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/5 "2024-08-02T01:30:44Z")

</div>

@vmiklos I have tried it, perfect. Thank you

---

<div class="post-metadata">

**Author:** ![darshan](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.collaboraonline.com/darshan/32/2230_2.png) [@darshan](https://forum.collaboraonline.com/u/darshan)\
**Post date:** [August 2, 2024, 6:09am UTC](https://forum.collaboraonline.com/t/in-impress-how-do-i-use-python-to-insert-text-content-at-the-cursor-position/2821/6 "2024-08-02T06:09:33Z")

</div>


