1

Ubuntu 12.04のバックグラウンドで実行されるプログラムを開発したいので、実行中のプログラムのテキストボックスでテキストを選択し、キーの組み合わせ(ctrl-F12など)を押すと、テキストが切り取られ、反転します。 、同じ場所に貼り付けます。

私はWindows上でそれを行ういくつかのプログラムを知っています。

アラビア語やヘブライ語などの右から左への言語をサポートしていない一部のプログラムやWebページで役立ちます。文字は左から右に印刷されるため、テキストが逆になります。

具体的には、組み込みフラッシュエディターにこの種のバグがあるPreziで必要です(クロームプラグインを作成することを考えましたが、そのようなプラグインはフラッシュオブジェクト内の選択されたテキストを操作できないと思います)。

そのようなプログラムが存在するかどうか知っていますか?そのような機能を備えたプログラムを開発するには(他のプログラムで選択したテキストを操作する)、どこから読み始めればよいですか?

ありがとう

4

2 に答える 2

0

私の部分的な解決策-クリップボードのテキストを逆にするPythonスクリプト:

#!/usr/bin/env python
from gi.repository import Gtk, Gdk

clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
# if you want to take the selected text without copying, set primary to:
# Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY)
# (doesn't always work)
primary = clipboard 

def run():
    text = primary.wait_for_text()
    if not isinstance(text, str):
        return
    reversed_text = u''.join(reversed(text.decode('utf-8')))
    clipboard.set_text(reversed_text, -1)
    clipboard.store()

if __name__ == '__main__':
    run()

次に、スクリプトを実行するためのキーボードショートカットを定義し(私はalt-Insertを使用しました)、クリップボードにコピーして逆選択し、スクリプトを呼び出して貼り付けます(ctrl-Insert、alt-Insert、shift-Insert)。

私はまだより良い解決策を探しているので、クリップボードを上書きせずに単一のキーボードショートカットを使用できます。

于 2012-10-13T21:34:40.247 に答える
0

以下は、テキストを逆に入力する Emacs の入力メソッドです。

(defun reverse-input-method (key)
  (if buffer-read-only
      (list key)
    (if (setq new key)
        (list new ?\2) ;; ?\2 == backwards char
      (list key ?\2))))

(defun reverse-input-activate (&optional arg)
  "Activate reverse-im input method.
With arg, activate reverse-im input method if and only if arg is
positive.

While this input method is active, the variable
`input-method-function' is bound to the function
`reverse-input-method'."
  (if (and arg
           (< (prefix-numeric-value arg) 0))
      (unwind-protect
          (progn
            (quail-hide-guidance)
            (quail-delete-overlays)
            (setq describe-current-input-method-function nil))
        (kill-local-variable 'input-method-function))
    (setq inactivate-current-input-method-function 'reverse-input-inactivate)
    (setq describe-current-input-method-function 'reversr-input-help)
    (quail-delete-overlays)
    (if (eq (selected-window) (minibuffer-window))
        (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer))
    (set (make-local-variable 'input-method-function)
         'reverse-input-method)))

(defun reverse-input-inactivate ()
  "Inactivate reverse-im input method."
  (interactive)
  (reverse-input-activate -1))

(defun reverse-input-help ()
  (interactive)
  (with-output-to-temp-buffer "*Help*"
    (princ "Inserts text in reverse order.")))

(provide 'reverse-im)

(register-input-method "reverse-im" "UTF-8" 'reverse-input-activate "<<"
                       "Input method for \"typing characters in reverse\".")

たとえば、 ~/.emacs.d/reverse-im/reverse-im.el に保存してから、これらの行を .emacs に追加できます。

(add-to-list 'load-path (expand-file-name "~/.emacs.d/reverse-im/"))
(require 'reverse-im)

次に、KeySnail Firefox プラグインを使用して、テキストを編集する必要があるときに emacs を呼び出します (テキスト エディターを .bashrc に設定するか、シェル変数を格納してKeySnail のK2Emacsemacsclientプラグインを使用するために使用するものに設定するか、.keysnail を変更する必要があります。 js を使用して、必要なときに Emacs を呼び出します。

Vimperator という Vim 用の同様のプラグインがありますが、私は使用しませんでした。

于 2012-10-14T09:57:13.887 に答える