This:
(global-set-key [(Cyrillic_HARDSIGN)] [ÿ])
I think this makes Cyrillic_hardsign into a keyboard macro, which I
don't think is what you want.
(define-key [(Cyrillic_hardsign)] 'self-insert-key)
(put 'Cyrillic_hardsign 'ascii-character ?ÿ)
seems to work.
The key-handling code is difficult and in need of a rewrite. There
are some design problems that are not so easy to fix. There are
already so many layers of key translation, and yet more may be needed
(for example, Alexey is working on adding another layer).
Of course, the name `ascii-character' is a very bad name for this
property.
It should be possible to define a key as a character, e.g.
(define-key [(Cyrillic_hardsign)] ?ÿ)
should be equivalent to
(define-key [(Cyrillic_hardsign)] 'self-insert-key)
(put 'Cyrillic_hardsign 'ascii-character ?ÿ)
since this is obvious meaning. Actually, this is probably the best
way to migrate away from that ugly name `ascii-character'.