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
() автор топика
Ответ на: комментарий от habamax

попробуй
M-x customize-group RET ns RET

Попробовал. Открывается для настройки группа ansi-color.

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

Нет.

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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.