LINUX.ORG.RU

keyboard-only desktop

 ,


0

1

Последние полгода, после освоения слепой печати, плавно движусь в сторону keyboard-only десктопа маршрутом kwin на хоткеях, emacs, opera+elinks на унифицированных хоткеях. Наверняка многие уже эволюционировали в этом направлении, хочу послушать истории успеха.

Технический вопрос: хочу избавиться от стрелок, emacs-like навигация немилосердна к рукам, вимовский hjkl выглядит лучше. Можно ли зафорсить этот вариант на уровне иксов, чтобы работало во всех текстовых полях?
man readline намекает, что добиться желаемого в консоли проще простого.

★★★★★

Можно ли зафорсить этот вариант на уровне иксов, чтобы работало во всех текстовых полях?

В GTK можно настроить клавиши, но модального редактирования не будет. В остальных тулкитах вообще говорить не о чем.

opera
keyboard-only

Мсье мазохист? :) Vimperator, Pentadactyl.

Homura_Akemi
()
Ответ на: комментарий от Homura_Akemi

Мсье мазохист? :) Vimperator, Pentadactyl.

Ничего подобного. Я сам удивился мощности встроенного редактора кейбиндингов, там можно наворотить почти что угодно. Ещё бы они его как следует документировали, а то пришлось по всяким закоулкам интернета информацию выискивать.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Мышка - тоже удобный инструмент.

Я где-то говорил обратное? Неудобства вызваны необходимостью переключения между удобными инструментами, цель — не отказаться от одного из них, а на порядок сократить метания рук и унифицировать поведение этих инструментов в разном софте.
Вроде достаточно очевидные вещи, думал раз не в толксах, то можно без оговорок.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от aidaho

Я где-то говорил обратное?

keyboard-only desktop

на порядок сократить метания рук и унифицировать поведение этих инструментов в разном софте.

В большинстве современного софта хоткеи как раз унифицированы. Это, как правило, Ctrl + клавиша или Alt + буква из заголовка меню.

Можно ли зафорсить этот вариант на уровне иксов, чтобы работало во всех текстовых полях?

Боюсь даже представить, сколько у тебя там текстовых полей и чем ты в них занимаешься.

anonymous
()

emacs-like навигация немилосердна к рукам

Переназначь caps lock как второй lctrl.

Deleted
()

хочу послушать истории успеха.

emacs + awesome (и emacs-like биндинги) + conkeror + echo 'gtk-key-theme-name = «Emacs»' >> ~/.gtkrc-2.0

Не считая браузера из гуевых только два приложения, в которых живется нормально благодаря gtk-key-theme.

Мышку, вернее тачпад, практически не трогаю.

cx ★★
()
Ответ на: комментарий от anonymous

Мышка - тоже удобный инструмент.

Я где-то говорил обратное?

keyboard-only desktop

Всё ещё не вижу утверждения, что мышь не удобна.

В большинстве современного софта хоткеи как раз унифицированы. Это, как правило, Ctrl + клавиша или Alt + буква из заголовка меню.

Какой их процент? «Открыть», «сохранить» и ещё по мелочи. И в то время даже реакция на PageDown у всех разная.

Боюсь даже представить, сколько у тебя там текстовых полей и чем ты в них занимаешься.

В одном из них строчу ответ тебе, например.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

мне кажется, что нельзя.

Теперь уверен, что точно нельзя: иксы понимают только 5 модификаторов: shift, mode_switch, mode_switch+shift, alt, alt+shift. Можно забиндить control на mode_switch, но тогда останусь без контрола.
Это надо где-то уровнем выше делать.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Переназначь caps lock как второй lctrl.

Мне не модификатор не нравится, а взаимное расположение fbpn. Тыкать их разово, вызывая какие-нибудь команды - ok, но курсор двигать тяжело. У вима все кнопки в home row, рядом, и под правой рукой, в то время как левая жмёт контрол. Как-то заметно поэргономичней.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от aidaho

Всё ещё не вижу утверждения, что мышь не удобна.

Просто бы не ответил, зачем под дурочка косить.

Какой их процент? «Открыть», «сохранить» и ещё по мелочи. И в то время даже реакция на PageDown у всех разная.

Ясно. Абстрактный софт в вакууме для сферических секретарш-экстремалов, метающих руками по сотням разных программам каждый день, обсуждать мне не интересно.

В одном из них строчу ответ тебе, например.

Для нескольких строчек все эти навороты не нужны. Дольше будешь режимы переключать.

anonymous
()

Я уже давно избавился от стрелок, перенеся их на AltGr+ijkl (соответственно можно на что угодно повесить), причем в линуксе это сделать можно в раскладке, работает почти везде: http://ibnteo.klava.org/keyboard/arrow2

А еще разместил на месте левого Alt кнопку Ctrl (Alt соответственно заместо Win), и теперь наконец-то могу нормально работать в Emacs, теперь понимаю радость маководов, у них на этом месте их волшебная кнопка Cmd, которая по сути выполняет функции Ctrl.

ibnteo
()
29 октября 2012 г.
Ответ на: комментарий от ibnteo

Ребята, добрый день. Кто-то подскажет, как осуществить добавление строки сверху или снизу с переходом курсора без перевода содержимого строки? Это что-то типа перейти в конец строки и нажать Ctrl+j (с проверкой на отступы), но осуществить это можно из любой позиции курсора на текущей строке. Мне хотелось бы использовать сочетание клавишь Ctrl+Shift+p для добавления строки сверху и Ctrl+Shift+n для добавления строки снизу - очень похожи на стандартные мувинги Ctrl+p, Ctrl+n.

Ради «незначительного» вопроса не хотелось создавать целый топик, но вопрос думаю актуален, а решение будет полезным не только мне, но и другим. С уважением, Илья.

ilyuha21st
()
Ответ на: комментарий от ilyuha21st

Это очень часто используемая функция. В емаксе посмотрите команды open-line и newline-and-indent.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от aidaho

Да, но как организовать, чтобы текущее значение строки не изменялось, а появлялась новая строка? Да к тому же ещё необходим аналог, но только для строки выше...

ilyuha21st
()
Ответ на: комментарий от ilyuha21st

Мне один человек подсказал ( за что ему огромное спасибо) как Enter сделать аналогичной Ctrl+j - т.е. проверять табы новой строки. Если кому нужно вот:

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «RET») 'newline-and-indent))) (add-hook 'c-mode-hook (lambda () (local-set-key (kbd «RET») 'newline-and-indent)))

ilyuha21st
()
Ответ на: комментарий от ilyuha21st

У меня во всех режимах RET забинден на newline-and-indent:

(global-set-key (kbd "RET") 'newline-and-indent)

aidaho ★★★★★
() автор топика
Ответ на: комментарий от ilyuha21st

Я команды для такого не знаю, вероятно придётся дописывать самому. Попробуйте ещё спросить на #emacs @ FreeNode, там самая многочисленная онлайн-тусовка емаксеров.

aidaho ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В принципе, как создать связку команд разобрался, но вот как переместить курсор к последнему месту выполнения команды пока не ясно. В моём случаи, для создания строки ниже, без перемещения текста выглядит так:

(defun open-new-line-immediate () (save-excursion (end-of-line) (newline-and-indent))) (global-set-key (kbd «C-S-n») 'open-new-line-immediate)

Вопрос с курсором пока остаётся открытым.

ilyuha21st
()
Ответ на: комментарий от ilyuha21st

У меня elisp пока что в todo листе, так что с написанием кастомного функционала подсобить не могу. Немного переделывал чей-то код, подглядывая в гугл. Ещё раз рекомендую вышеозначенный канал, там толпа лисперов.

aidaho ★★★★★
() автор топика

у меня emacs/stumpwm/conkeror, для gtk в конфиге прописана клавиатурная тема «Emacs» (чуть подпиленная, собственно, как и в самом емаксе), в консоли она и так (почти)емаксовая по дефолту.

emacs-like навигация немилосердна к рукам

ctrl:nocaps

вимовский hjkl выглядит лучше

всё упирается в режимы, можешь сделать ctrl-hjkl, но это не сильно лучше, плюс придётся менять везде

Можно ли зафорсить этот вариант на уровне иксов, чтобы работало во всех текстовых полях?

как я уже писал, на уровне gtk можно сделать любые простые комбинации, но опять же, всё упирается в отсутствие режимов.

lazyklimm ★★★★★
()

Кстати, а ты заметил, что у тебя остаются без _работы_ две ноги? Поэтому предлагаю еще по педале на кажду ногу. Прикинь, сколько будет новых удобных комбинаций? (Как раз с Емаксом поможет) (:

GreenBag ★★
()
Ответ на: комментарий от Homura_Akemi

В остальных тулкитах вообще говорить не о чем.

в Qt это сделать можно (там есть кусок кода с платформозависимыми комбинациями клавиш), но придётся пересобирать libqtcore, вероятно можно и плагином, но я их ниасилил :)

lazyklimm ★★★★★
()
Ответ на: комментарий от ilyuha21st

будем надеяться, что там хоть кто-то по русски бум-бум

Это вряд ли. Если кто-то и бум-бум, то они шифруются :)

aidaho ★★★★★
() автор топика
Ответ на: комментарий от lazyklimm

Домучал я keybinding. И так, если добавить код ниже в свой .emacs мы получим в режиме С и С++ следующее: 1) При стандартных перемещениях C-n, C-p, Enter, C-{, C-} - всегда проверку на отступы. Это удобно, так как не нужно будет нажимать лишний раз Tab. 2) Добавлен бинд клавиш M-n и M-p - это позволит из любой позиции курсора БЕЗ переноса содержимого строки создать строку ниже, и выше соответственно с перемещение курсора на новую позицию.

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «RET») 'newline-and-indent)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «RET») 'newline-and-indent)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «C-p») 'previous-line-and-indent)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «C-p») 'previous-line-and-indent)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «C-n») 'next-line-and-indent)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «C-n») 'next-line-and-indent)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «M-{») 'backward-paragraph-and-indent)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «M-{») 'backward-paragraph-and-indent)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «M-}») 'forward-paragraph-and-indent)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «M-}») 'forward-paragraph-and-indent)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «M-n») 'next-line-immediate)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «M-n») 'next-line-immediate)))

(add-hook 'c++-mode-hook (lambda () (local-set-key (kbd «M-p») 'previous-line-immediate)))

(add-hook 'c-mode-hook (lambda () (local-set-key (kbd «M-p») 'previous-line-immediate)))

(defun previous-line-and-indent () (interactive) (previous-line) (indent-according-to-mode))

(defun next-line-and-indent () (interactive) (next-line) (indent-according-to-mode))

(defun backward-paragraph-and-indent () (interactive) (backward-paragraph) (indent-according-to-mode))

(defun forward-paragraph-and-indent () (interactive) (forward-paragraph) (indent-according-to-mode))

(defun next-line-immediate () (interactive) (end-of-line) (newline-and-indent))

(defun previous-line-immediate () (interactive) (previous-line) (end-of-line) (newline-and-indent))

ilyuha21st
()

Вести с полей: в качестве варианта решения проблемы «махания рук», обзавёлся трекболом. Посмотрим, как оно пойдёт.

aidaho ★★★★★
() автор топика
Последнее исправление: aidaho (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.