LINUX.ORG.RU

Ответ на: комментарий от lazyklimm

Понятно, что сложно. Но если переназначать силами OC, в других программах тоже предёться переучиваться на новую раскладку клавиатуры.

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

Именно для комбинаций или только для двух клавиш?

Для каждой, но их не так уж много, а точнее 127, к тому же их же можно просто в цикле нагенерировать.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А где можно увидеть весь список?

Неужели до сих пор никто какой-нибудь пакет для подобного не написал?

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

Потому, что если из-за одной программы приходится преучиваться к новой раскладке во всех остальных, то проблема в этой одной программе.

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

Причем здесь нагрузка? Поменяешь местами ctrl и alt на уровне ОС, это затронет горячие клавиши во всех остальных программах, что, лично мне не нужно.

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

При том, что «Польша должна страдать!»(с). А вот обменные курсы валют на величину страданий у понимающих людей не влияют ни как.

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

Педалька

Зачем? Выше человек написал, что нужно переназначить 127 комбинаций. Это не много, даже не учитывая того, что можно часть сделать в скрипте. no-such-file надеюсь пояснит, где можно увидеть весь список комбинаций, и привёдет пару примеров. Это будет неплохим заделом, для решения проблемы.

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

Правые и левые Ctrl и Alt учтены в этих ста двадцати семи комбинациях?

Ctrl и Meta это модификаторы символов, соответственно существует столько вариантов C-<символ> сколько символов, а их в ASCII 127. Правые и левые Ctrl не различаются. Так что если ты не даун и не биндишь сочетания Ctrl с русскими буквами или иероглифами, то нужно сделать только преобразования:

?\C-\x0 -> ?\M-\x0
?\C-\x1 -> ?\M-\x1
...
?\C-\x7f -> ?\M-\x7f
и обратно
?\M-\x0 -> \?C-\x0
...
?\M-\x7f -> ?\C-\x7f

заполнив таблицу keyboard-translate-table, которая является массивом <символ> -> <символ>.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

попробуй

M-x customize-group RET ns RET

Для маков точно работают:
(setq mac-command-modifier 'meta)
и т.д.


PS
в гугле забанен?

habamax ★★★
()
Ответ на: комментарий от no-such-file

заполнив таблицу keyboard-translate-table, которая является массивом <символ> -> <символ>.

no-such-file сделай доброе дело, для двух символов покажи elisp код, запустив который будут сделаны нужные замены, а для остальных я по аналогии сам сделаю.

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

если из-за одной программы приходится преучиваться к новой раскладке

ну и зачем тебе емакс, поехавший

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

код можно писать в других программах в которых тебе не придётся переучиваться на другие комбинации

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

А еще можно забивать гвозди микроскопом, но я предпочитаю для забивания гвоздей использовать молоток.

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

только ты хочешь забивать гвозди рукояткой молотка

ладно, можешь попробовать взять это emacsclient русская раскладка (комментарий)
и допилить под свои нужды
я правда фиг его знает как оно там работает и сможет ли осуществить то что ты хочешь, но попробовать можно, ну и спроси у автора

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

только ты хочешь забивать гвозди рукояткой молотка

Нет. Я хочу забивать маленькие декоративные гвозди, специальным молотком, а не молотком, которым забивают гвозди «сотки».

ладно, можешь попробовать взять это

Хоткеи в русской раскладке мне не интересны. Мне нужно «поменять местами» alt и ctrl так, чтобы когда я нажимаю M-x, в emacs это транслировалось как С-x.

no-such-file в этом сообщении подсказал возможный путь решения. Надеюсь он покажет пример elisp кода, который сделает нужные замены, но ты тоже можешь подсказать путь решения этой задачи.

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

Нет. Я хочу забивать маленькие декоративные гвозди, специальным молотком, а не молотком, которым забивают гвозди «сотки».

Нет, гвозди у всех одинаковые, есть и маленькие есть и большие. А ты хочешь изогнутый молоток под свои кривые руки.

Хоткеи в русской раскладке мне не интересны. Мне нужно «поменять местами» alt и ctrl так, чтобы когда я нажимаю M-x, в emacs это транслировалось как С-x.

я же сказал, что допилить надо. Насколько я понял этот код позволяет посылать разные кнопки, если в фокусе окно емакса и другие для всех других окон.

Надеюсь он покажет пример elisp кода, который сделает нужные замены

ну подождём

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

Оказалось, что keyboard-translate-table не принимает символы ?\M-a и т.п. как валидные. Поэтому нужно использовать key-translation-map.

(define-key key-translation-map (kbd "C-a") (kbd "M-a"))
(define-key key-translation-map (kbd "M-a") (kbd "C-a"))
no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Оказалось, что keyboard-translate-table не принимает символы ?\M-a и т.п. как валидные. Поэтому нужно использовать key-translation-map.

Ты вот в этом примере задаешь не ascii коды клавиш, а непосредственно символ:

(define-key key-translation-map (kbd "C-a") (kbd "M-a"))

Но писать замены нужно для 127 ascii кодов. Функция kbd подхватывает восьмеричный код клавишь? Например, для клавиши «A» так будет корректно:

(define-key key-translation-map (kbd "C-\101") (kbd "M-\101"))
pol01
()
Ответ на: комментарий от x4DA

ты не поверишь насколько проще жить когда alt и ctrl поменяны местами.

В еmacs это реально супер, и я себе так настроил. Но, например, когда переключаешься в виртуалку, и пытаешься нажать «С-с» вместо «M-c» и это не работает, эта замена мешает.

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

Функция kbd подхватывает восьмеричный код клавишь?

Само собой, это ж просто литерал. На самом деле нужно конечно не 127 кодов биндить: первые 32, т.е. до пробела - не надо, т.к. они в ASCII представляют собой комбинации типа ^v, которое emacs понимает как C-v и т.п. Реально нужно перебиндить только печатные символы.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Не получается переназначить для символа «[». Вот с такой ошибкой отваливается:

error: Key sequence M-[ starts with non-prefix key ESC

Файл для переназначения клавиш на вот так генерировал на питоне:

string1 = '(define-key key-translation-map' +\
          ' (kbd "C-\{0:03o}") (kbd "M-\{1:03o}"))\n'
string2 = '(define-key key-translation-map' +\
          ' (kbd "M-\{0:03o}") (kbd "C-\{1:03o}"))\n'

string3 = '(define-key key-translation-map' +\
          ' (kbd "C-{}") (kbd "M-{}"))\n'
string4 = '(define-key key-translation-map' +\
          ' (kbd "M-{}") (kbd "C-{}"))\n'

with open('meta_c_switch_v1.el', 'w') as fid:
    for item in range(33, 127):
        fid.write(string1.format(item, item))
        fid.write(string2.format(item, item))

with open('meta_c_switch_v2.el', 'w') as fid:
    for item in range(33, 127):
        fid.write(string3.format(chr(item), chr(item)))
        fid.write(string4.format(chr(item), chr(item)))
print('All done!')
pol01
()

Парень, не знаю зачем ты это делаешь (кстати, зачем?) но работать ведь будет неудобно с точки зрения эргономики. Люди используют emacs чтобы повысить комфорт работы с текстовыми файлами. Сидеть с зажатыми внутрь ладони большими пальцами вряд ли будет комфортно.

Другое дело, поменять местами Ctrl и Caps - это святое

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

работать ведь будет неудобно с точки зрения эргономики

Use the force sticky key Luke!

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

Тогда прошу прощения — ns-control-modifier и прочих для линукса похоже нет.

habamax ★★★
()
Ответ на: комментарий от no-such-file

На первый взгляд всё работает как и задумывалось, только не пойму что происходит с клавишами m, i, <tab> и RET. Их нужно как-то подругому переназначать?

pol01
()
Ответ на: комментарий от no-such-file

В настроках по умолчанию вот таки привязки выставлены:

C-m --> RET

M-m --> Back-to-indentation

C-i --> TAB

M-i --> tab-to-tab-stop

Не пойму как их переназначать? Не делать для клавиш <i> и <m> переназначения, а явно прописать define-key-global ?

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

Вот вы смеётесь, а педалька офигеть как удобна, особенно с длинными аккордами.

mix_mix ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.