xlock: Replace label-based PC with asm-based

Replace getting the current program counter from labels, since it may break with
different optimization settings. Since the previous implementations could be
greatly influenced by the compiler's behavior, switch to an assembly-based
approach.
xseg-tool: Handle keyboard interrupt